Home | History | Annotate | Download | only in fake_ppapi
      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 
     10 FakeVarArrayInterface::FakeVarArrayInterface(FakeVarManager* manager)
     11     : manager_(manager) {}
     12 
     13 
     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 
     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 
     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 
     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 
     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