blob: 7321424d2994f7aa79faa70224eed8214aa63ae3 [file] [log] [blame]
// 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/dev/ppb_var_array_dev.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_Dev_0_1 g_ppb_vararray_0_1_thunk = {
&Create,
&Get,
&Set,
&GetLength,
&SetLength
};
} // namespace
const PPB_VarArray_Dev_0_1* GetPPB_VarArray_Dev_0_1_Thunk() {
return &g_ppb_vararray_0_1_thunk;
}
} // namespace thunk
} // namespace ppapi