• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 "fake_ppapi/fake_var_array_interface.h"
6 
7 #include "fake_ppapi/fake_var_manager.h"
8 #include "gtest/gtest.h"
9 
FakeVarArrayInterface(FakeVarManager * manager)10 FakeVarArrayInterface::FakeVarArrayInterface(FakeVarManager* manager)
11     : manager_(manager) {}
12 
13 
Create()14 PP_Var FakeVarArrayInterface::Create() {
15   FakeVarData* var_data = manager_->CreateVarData();
16   var_data->type = PP_VARTYPE_ARRAY;
17 
18   struct PP_Var result = {PP_VARTYPE_ARRAY, 0, {PP_FALSE}};
19   result.value.as_id = var_data->id;
20   return result;
21 }
22 
Get(PP_Var var,uint32_t index)23 PP_Var FakeVarArrayInterface::Get(PP_Var var, uint32_t index) {
24   EXPECT_EQ(var.type, PP_VARTYPE_ARRAY);
25   FakeVarData* data = manager_->GetVarData(var);
26   EXPECT_NE(static_cast<FakeVarData*>(NULL), data);
27   if (index >= data->array_value.size())
28     return PP_MakeUndefined();
29 
30   // Return the item at the given index, after first incrementing
31   // its refcount.  It is up the callee to then call Release.
32   PP_Var result = data->array_value[index];
33   manager_->AddRef(result);
34   return result;
35 }
36 
Set(PP_Var var,uint32_t index,PP_Var value)37 PP_Bool FakeVarArrayInterface::Set(PP_Var var, uint32_t index, PP_Var value) {
38   EXPECT_EQ(var.type, PP_VARTYPE_ARRAY);
39   FakeVarData* data = manager_->GetVarData(var);
40   EXPECT_NE(static_cast<FakeVarData*>(NULL), data);
41   if (index >= data->array_value.size())
42     data->array_value.resize(index+1);
43   else
44     manager_->Release(data->array_value[index]);
45   data->array_value[index] = value;
46   manager_->AddRef(value);
47   return PP_TRUE;
48 }
49 
GetLength(PP_Var var)50 uint32_t FakeVarArrayInterface::GetLength(PP_Var var) {
51   EXPECT_EQ(var.type, PP_VARTYPE_ARRAY);
52   FakeVarData* data = manager_->GetVarData(var);
53   EXPECT_NE(static_cast<FakeVarData*>(NULL), data);
54   return data->array_value.size();
55 }
56 
SetLength(PP_Var var,uint32_t length)57 PP_Bool FakeVarArrayInterface::SetLength(PP_Var var, uint32_t length) {
58   EXPECT_EQ(var.type, PP_VARTYPE_ARRAY);
59   FakeVarData* data = manager_->GetVarData(var);
60   EXPECT_NE(static_cast<FakeVarData*>(NULL), data);
61   data->array_value.resize(length);
62   return PP_TRUE;
63 }
64