1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ppapi/c/ppb_var_dictionary.h" 6#include "ppapi/c/pp_bool.h" 7#include "ppapi/c/pp_var.h" 8#include "ppapi/shared_impl/dictionary_var.h" 9#include "ppapi/shared_impl/proxy_lock.h" 10#include "ppapi/thunk/thunk.h" 11 12namespace ppapi { 13namespace thunk { 14 15namespace { 16 17PP_Var Create() { 18 ProxyAutoLock lock; 19 20 // Var tracker will hold a reference to this object. 21 DictionaryVar* var = new DictionaryVar(); 22 return var->GetPPVar(); 23} 24 25PP_Var Get(PP_Var dict, PP_Var key) { 26 ProxyAutoLock lock; 27 28 DictionaryVar* dict_var = DictionaryVar::FromPPVar(dict); 29 if (!dict_var) 30 return PP_MakeUndefined(); 31 return dict_var->Get(key); 32} 33 34PP_Bool Set(PP_Var dict, PP_Var key, PP_Var value) { 35 ProxyAutoLock lock; 36 37 DictionaryVar* dict_var = DictionaryVar::FromPPVar(dict); 38 if (!dict_var) 39 return PP_FALSE; 40 41 return dict_var->Set(key, value); 42} 43 44void Delete(PP_Var dict, PP_Var key) { 45 ProxyAutoLock lock; 46 47 DictionaryVar* dict_var = DictionaryVar::FromPPVar(dict); 48 if (dict_var) 49 dict_var->Delete(key); 50} 51 52PP_Bool HasKey(PP_Var dict, PP_Var key) { 53 ProxyAutoLock lock; 54 55 DictionaryVar* dict_var = DictionaryVar::FromPPVar(dict); 56 if (!dict_var) 57 return PP_FALSE; 58 return dict_var->HasKey(key); 59} 60 61PP_Var GetKeys(PP_Var dict) { 62 ProxyAutoLock lock; 63 64 DictionaryVar* dict_var = DictionaryVar::FromPPVar(dict); 65 if (!dict_var) 66 return PP_MakeNull(); 67 return dict_var->GetKeys(); 68} 69 70const PPB_VarDictionary_1_0 g_ppb_vardictionary_1_0_thunk = { 71 &Create, 72 &Get, 73 &Set, 74 &Delete, 75 &HasKey, 76 &GetKeys 77}; 78 79} // namespace 80 81const PPB_VarDictionary_1_0* GetPPB_VarDictionary_1_0_Thunk() { 82 return &g_ppb_vardictionary_1_0_thunk; 83} 84 85} // namespace thunk 86} // namespace ppapi 87