| Index: native_client_sdk/src/tests/nacl_io_test/fake_var_interface.cc
|
| diff --git a/native_client_sdk/src/tests/nacl_io_test/fake_var_interface.cc b/native_client_sdk/src/tests/nacl_io_test/fake_var_interface.cc
|
| index f67a0defb61bc4802766bd88d211c658a8aacb82..104551d0514bd7c872a27f0924e727473789b7ca 100644
|
| --- a/native_client_sdk/src/tests/nacl_io_test/fake_var_interface.cc
|
| +++ b/native_client_sdk/src/tests/nacl_io_test/fake_var_interface.cc
|
| @@ -3,72 +3,28 @@
|
| // found in the LICENSE file.
|
|
|
| #include "fake_var_interface.h"
|
| +#include "fake_var_manager.h"
|
| #include "gtest/gtest.h"
|
|
|
| -FakeVarInterface::FakeVarInterface() : next_id_(1) {}
|
| +FakeVarInterface::FakeVarInterface(FakeVarManager* manager)
|
| + : manager_(manager) {}
|
|
|
| -FakeVarInterface::~FakeVarInterface() {
|
| - // The ref counts for all vars should be zero.
|
| - for (VarMap::const_iterator iter = var_map_.begin(); iter != var_map_.end();
|
| - ++iter) {
|
| - const FakeStringVar& string_var = iter->second;
|
| - EXPECT_EQ(0, string_var.ref_count) << "Non-zero refcount on string var "
|
| - << iter->first << " with value \""
|
| - << string_var.value << "\"";
|
| - }
|
| +PP_Var FakeVarInterface::VarFromUtf8(const char* data, uint32_t len) {
|
| + FakeVarData* var_data = manager_->CreateVarData();
|
| + var_data->type = PP_VARTYPE_STRING;
|
| + var_data->string_value.assign(data, len);
|
| +
|
| + struct PP_Var result = {PP_VARTYPE_STRING, 0, {PP_FALSE}};
|
| + result.value.as_id = var_data->id;
|
| + return result;
|
| }
|
|
|
| void FakeVarInterface::AddRef(PP_Var var) {
|
| - // From ppb_var.h:
|
| - // AddRef() adds a reference to the given var. If this is not a refcounted
|
| - // object, this function will do nothing so you can always call it no matter
|
| - // what the type.
|
| - if (var.type != PP_VARTYPE_STRING)
|
| - return;
|
| -
|
| - VarMap::iterator iter = var_map_.find(var.value.as_id);
|
| - if (iter == var_map_.end())
|
| - return;
|
| -
|
| - FakeStringVar& string_var = iter->second;
|
| - EXPECT_LT(0, string_var.ref_count) << "AddRefing freed string var "
|
| - << var.value.as_id << " with value \""
|
| - << string_var.value << "\"";
|
| - string_var.ref_count++;
|
| + manager_->AddRef(var);
|
| }
|
|
|
| void FakeVarInterface::Release(PP_Var var) {
|
| - // From ppb_var.h:
|
| - // Release() removes a reference to given var, deleting it if the internal
|
| - // reference count becomes 0. If the given var is not a refcounted object,
|
| - // this function will do nothing so you can always call it no matter what
|
| - // the type.
|
| - if (var.type != PP_VARTYPE_STRING)
|
| - return;
|
| -
|
| - VarMap::iterator iter = var_map_.find(var.value.as_id);
|
| - if (iter == var_map_.end())
|
| - return;
|
| -
|
| - FakeStringVar& string_var = iter->second;
|
| - EXPECT_LT(0, string_var.ref_count) << "Releasing freed string var "
|
| - << var.value.as_id << " with value \""
|
| - << string_var.value << "\"";
|
| - string_var.ref_count--;
|
| -}
|
| -
|
| -PP_Var FakeVarInterface::VarFromUtf8(const char* data, uint32_t len) {
|
| - Id id = next_id_++;
|
| -
|
| - FakeStringVar string_var;
|
| - string_var.value.assign(data, len);
|
| - string_var.ref_count = 1;
|
| -
|
| - var_map_[id] = string_var;
|
| -
|
| - struct PP_Var result = {PP_VARTYPE_STRING, 0, {PP_FALSE}};
|
| - result.value.as_id = id;
|
| - return result;
|
| + manager_->Release(var);
|
| }
|
|
|
| const char* FakeVarInterface::VarToUtf8(PP_Var var, uint32_t* out_len) {
|
| @@ -77,17 +33,15 @@ const char* FakeVarInterface::VarToUtf8(PP_Var var, uint32_t* out_len) {
|
| return NULL;
|
| }
|
|
|
| - VarMap::const_iterator iter = var_map_.find(var.value.as_id);
|
| - if (iter == var_map_.end()) {
|
| + FakeVarData* var_data = manager_->GetVarData(var);
|
| + if (!var_data) {
|
| *out_len = 0;
|
| return NULL;
|
| }
|
|
|
| - const FakeStringVar& string_var = iter->second;
|
| - EXPECT_LT(0, string_var.ref_count) << "VarToUtf8 on freed string var "
|
| - << var.value.as_id << " with value \""
|
| - << string_var.value << "\"";
|
| + EXPECT_LT(0, var_data->ref_count) << "VarToUtf8 on freed "
|
| + << manager_->Describe(*var_data);
|
|
|
| - *out_len = string_var.value.length();
|
| - return string_var.value.c_str();
|
| + *out_len = var_data->string_value.length();
|
| + return var_data->string_value.c_str();
|
| }
|
|
|