fake_var_manager.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com// Copyright 2014 The Chromium Authors. All rights reserved.
2902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com// Use of this source code is governed by a BSD-style license that can be
3902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com// found in the LICENSE file.
4902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
5902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#ifndef TESTS_NACL_IO_TEST_FAKE_VAR_MANAGER_H_
6902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#define TESTS_NACL_IO_TEST_FAKE_VAR_MANAGER_H_
7902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
8902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <map>
9902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <ppapi/c/pp_var.h>
10902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <string>
11902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include <vector>
12902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
13902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "sdk_util/macros.h"
14902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
15902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comstruct FakeVarData {
168a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com  uint64_t id;
1797cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com  uint64_t type;
18902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com  int32_t ref_count;
1932bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com  std::string string_value;
2032bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com  std::vector<PP_Var> array_value;
2186681b37bd20204e47a492119b345c01d00bc939fmalita@google.com  struct {
22902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    void* ptr;
2380a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com    uint32_t length;
24f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com  } buffer_value;
25902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com};
26902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
27902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comclass FakeVarManager {
28902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com public:
29f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com  FakeVarManager();
30f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com  ~FakeVarManager();
31f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com
32f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com  void AddRef(PP_Var var);
33f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com  void Release(PP_Var var);
3432bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com  FakeVarData* CreateVarData();
3532bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com  FakeVarData* GetVarData(PP_Var var);
36f84ad8f7fc0194389a8099da2c5e8fff9f092890skia.committer@gmail.com  std::string Describe(const FakeVarData& resource);
3732bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com
3832bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com  bool debug;
39902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com private:
40902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com  void DestroyVarData(FakeVarData* var);
41902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
42902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com  typedef uint64_t Id;
43902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com  typedef std::map<Id, FakeVarData> VarMap;
44902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
45902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com  Id next_id_;
46902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com  VarMap var_map_;
47902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
48902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com  DISALLOW_COPY_AND_ASSIGN(FakeVarManager);
490b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com};
500b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com
510b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com#endif  // TESTS_NACL_IO_TEST_FAKE_VAR_MANAGER_H_
52a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com