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#ifndef TESTS_NACL_IO_TEST_FAKE_VAR_MANAGER_H_ 6#define TESTS_NACL_IO_TEST_FAKE_VAR_MANAGER_H_ 7 8#include <map> 9#include <ppapi/c/pp_var.h> 10#include <string> 11#include <vector> 12 13#include "sdk_util/macros.h" 14 15typedef std::vector<PP_Var> FakeArrayType; 16typedef std::map<std::string, PP_Var> FakeDictType; 17 18struct FakeVarData { 19 uint64_t id; 20 uint64_t type; 21 int32_t ref_count; 22 std::string string_value; 23 FakeArrayType array_value; 24 FakeDictType dict_value; 25 struct { 26 void* ptr; 27 uint32_t length; 28 } buffer_value; 29}; 30 31class FakeVarManager { 32 public: 33 FakeVarManager(); 34 ~FakeVarManager(); 35 36 void AddRef(PP_Var var); 37 void Release(PP_Var var); 38 FakeVarData* CreateVarData(); 39 FakeVarData* GetVarData(PP_Var var); 40 std::string Describe(const FakeVarData& resource); 41 42 bool debug; 43 private: 44 void DestroyVarData(FakeVarData* var); 45 46 typedef uint64_t Id; 47 typedef std::map<Id, FakeVarData> VarMap; 48 49 Id next_id_; 50 VarMap var_map_; 51 52 DISALLOW_COPY_AND_ASSIGN(FakeVarManager); 53}; 54 55#endif // TESTS_NACL_IO_TEST_FAKE_VAR_MANAGER_H_ 56