fake_var_interface.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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 9FakeVarInterface::FakeVarInterface(FakeVarManager* manager) 10 : manager_(manager) {} 11 12PP_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 22void FakeVarInterface::AddRef(PP_Var var) { 23 manager_->AddRef(var); 24} 25 26void FakeVarInterface::Release(PP_Var var) { 27 manager_->Release(var); 28} 29 30const 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