| // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ppapi/c/ppb_var_dictionary.h" |
| #include "ppapi/c/pp_bool.h" |
| #include "ppapi/c/pp_var.h" |
| #include "ppapi/shared_impl/dictionary_var.h" |
| #include "ppapi/shared_impl/proxy_lock.h" |
| #include "ppapi/thunk/thunk.h" |
| |
| namespace ppapi { |
| namespace thunk { |
| |
| namespace { |
| |
| PP_Var Create() { |
| ProxyAutoLock lock; |
| |
| // Var tracker will hold a reference to this object. |
| DictionaryVar* var = new DictionaryVar(); |
| return var->GetPPVar(); |
| } |
| |
| PP_Var Get(PP_Var dict, PP_Var key) { |
| ProxyAutoLock lock; |
| |
| DictionaryVar* dict_var = DictionaryVar::FromPPVar(dict); |
| if (!dict_var) |
| return PP_MakeUndefined(); |
| return dict_var->Get(key); |
| } |
| |
| PP_Bool Set(PP_Var dict, PP_Var key, PP_Var value) { |
| ProxyAutoLock lock; |
| |
| DictionaryVar* dict_var = DictionaryVar::FromPPVar(dict); |
| if (!dict_var) |
| return PP_FALSE; |
| |
| return dict_var->Set(key, value); |
| } |
| |
| void Delete(PP_Var dict, PP_Var key) { |
| ProxyAutoLock lock; |
| |
| DictionaryVar* dict_var = DictionaryVar::FromPPVar(dict); |
| if (dict_var) |
| dict_var->Delete(key); |
| } |
| |
| PP_Bool HasKey(PP_Var dict, PP_Var key) { |
| ProxyAutoLock lock; |
| |
| DictionaryVar* dict_var = DictionaryVar::FromPPVar(dict); |
| if (!dict_var) |
| return PP_FALSE; |
| return dict_var->HasKey(key); |
| } |
| |
| PP_Var GetKeys(PP_Var dict) { |
| ProxyAutoLock lock; |
| |
| DictionaryVar* dict_var = DictionaryVar::FromPPVar(dict); |
| if (!dict_var) |
| return PP_MakeNull(); |
| return dict_var->GetKeys(); |
| } |
| |
| const PPB_VarDictionary_1_0 g_ppb_vardictionary_1_0_thunk = { |
| &Create, |
| &Get, |
| &Set, |
| &Delete, |
| &HasKey, |
| &GetKeys |
| }; |
| |
| } // namespace |
| |
| const PPB_VarDictionary_1_0* GetPPB_VarDictionary_1_0_Thunk() { |
| return &g_ppb_vardictionary_1_0_thunk; |
| } |
| |
| } // namespace thunk |
| } // namespace ppapi |