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_interface.h"
      6 #include "fake_ppapi/fake_var_manager.h"
      7 #include "gtest/gtest.h"
      8 
      9 FakeVarInterface::FakeVarInterface(FakeVarManager* manager)
     10     : manager_(manager) {}
     11 
     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 
     22 void FakeVarInterface::AddRef(PP_Var var) {
     23   manager_->AddRef(var);
     24 }
     25 
     26 void FakeVarInterface::Release(PP_Var var) {
     27   manager_->Release(var);
     28 }
     29 
     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