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