| // Copyright 2013 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <stdint.h> |
| |
| #include "ppapi/c/ppb_var_array.h" |
| #include "ppapi/shared_impl/array_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. |
| ArrayVar* var = new ArrayVar(); |
| return var->GetPPVar(); |
| } |
| |
| PP_Var Get(PP_Var array, uint32_t index) { |
| ProxyAutoLock lock; |
| |
| ArrayVar* array_var = ArrayVar::FromPPVar(array); |
| if (!array_var) |
| return PP_MakeUndefined(); |
| return array_var->Get(index); |
| } |
| |
| PP_Bool Set(PP_Var array, uint32_t index, PP_Var value) { |
| ProxyAutoLock lock; |
| |
| ArrayVar* array_var = ArrayVar::FromPPVar(array); |
| if (!array_var) |
| return PP_FALSE; |
| return array_var->Set(index, value); |
| } |
| |
| uint32_t GetLength(PP_Var array) { |
| ProxyAutoLock lock; |
| |
| ArrayVar* array_var = ArrayVar::FromPPVar(array); |
| if (!array_var) |
| return 0; |
| return array_var->GetLength(); |
| } |
| |
| PP_Bool SetLength(PP_Var array, uint32_t length) { |
| ProxyAutoLock lock; |
| |
| ArrayVar* array_var = ArrayVar::FromPPVar(array); |
| if (!array_var) |
| return PP_FALSE; |
| return array_var->SetLength(length); |
| } |
| |
| const PPB_VarArray_1_0 g_ppb_vararray_1_0_thunk = { |
| &Create, |
| &Get, |
| &Set, |
| &GetLength, |
| &SetLength |
| }; |
| |
| } // namespace |
| |
| const PPB_VarArray_1_0* GetPPB_VarArray_1_0_Thunk() { |
| return &g_ppb_vararray_1_0_thunk; |
| } |
| |
| } // namespace thunk |
| } // namespace ppapi |