• 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_interface.h"
6 #include "fake_ppapi/fake_var_manager.h"
7 #include "gtest/gtest.h"
8 
FakeVarInterface(FakeVarManager * manager)9 FakeVarInterface::FakeVarInterface(FakeVarManager* manager)
10     : manager_(manager) {}
11 
VarFromUtf8(const char * data,uint32_t len)12 PP_Var FakeVarInterface::VarFromUtf8(const char* data, uint32_t len) {
13   FakeVarData* var_data = manager_->CreateVarData();
14   var_data->type = PP_VARTYPE_STRING;
15   var_data->string_value.assign(data, len);
16 
17   struct PP_Var result = {PP_VARTYPE_STRING, 0, {PP_FALSE}};
18   result.value.as_id = var_data->id;
19   return result;
20 }
21 
AddRef(PP_Var var)22 void FakeVarInterface::AddRef(PP_Var var) {
23   manager_->AddRef(var);
24 }
25 
Release(PP_Var var)26 void FakeVarInterface::Release(PP_Var var) {
27   manager_->Release(var);
28 }
29 
VarToUtf8(PP_Var var,uint32_t * out_len)30 const char* FakeVarInterface::VarToUtf8(PP_Var var, uint32_t* out_len) {
31   if (var.type != PP_VARTYPE_STRING) {
32     *out_len = 0;
33     return NULL;
34   }
35 
36   FakeVarData* var_data = manager_->GetVarData(var);
37   if (!var_data) {
38     *out_len = 0;
39     return NULL;
40   }
41 
42   EXPECT_LT(0, var_data->ref_count) << "VarToUtf8 on freed "
43                                     << manager_->Describe(*var_data);
44 
45   *out_len = var_data->string_value.length();
46   return var_data->string_value.c_str();
47 }
48