Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Side by Side Diff: native_client_sdk/src/tests/nacl_io_test/fake_resource_manager.h

Issue 77423002: [NaCl SDK] Add URLLoader fake pepper interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: feedback Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef LIBRARIES_NACL_IO_TEST_FAKE_RESOURCE_MANAGER_H_ 5 #ifndef LIBRARIES_NACL_IO_TEST_FAKE_RESOURCE_MANAGER_H_
6 #define LIBRARIES_NACL_IO_TEST_FAKE_RESOURCE_MANAGER_H_ 6 #define LIBRARIES_NACL_IO_TEST_FAKE_RESOURCE_MANAGER_H_
7 7
8 #include <map> 8 #include <map>
9 9
10 #include <ppapi/c/pp_resource.h> 10 #include <ppapi/c/pp_resource.h>
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 FakeResourceTracker(FakeResource* resource, 48 FakeResourceTracker(FakeResource* resource,
49 const char* classname, 49 const char* classname,
50 const char* file, 50 const char* file,
51 int line); 51 int line);
52 ~FakeResourceTracker(); 52 ~FakeResourceTracker();
53 53
54 void AddRef() { sdk_util::AtomicAddFetch(&ref_count_, 1); } 54 void AddRef() { sdk_util::AtomicAddFetch(&ref_count_, 1); }
55 void Release() { sdk_util::AtomicAddFetch(&ref_count_, -1); } 55 void Release() { sdk_util::AtomicAddFetch(&ref_count_, -1); }
56 int32_t ref_count() const { return ref_count_; } 56 int32_t ref_count() const { return ref_count_; }
57 57
58 // Give up ownership of this resource. It is the responsibility of the caller
59 // to delete this FakeResource.
60 FakeResource* Pass() {
61 FakeResource* result = resource_;
62 resource_ = NULL;
63 return result;
64 }
65
58 template <typename T> 66 template <typename T>
59 T* resource() { 67 T* resource() {
60 if (!CheckType(T::classname())) 68 if (!CheckType(T::classname()))
61 return NULL; 69 return NULL;
62 70
63 return static_cast<T*>(resource_); 71 return static_cast<T*>(resource_);
64 } 72 }
65 73
74 FakeResource* resource() { return resource_; }
75
66 const char* classname() const { return classname_; } 76 const char* classname() const { return classname_; }
67 const char* file() const { return file_; } 77 const char* file() const { return file_; }
68 int line() const { return line_; } 78 int line() const { return line_; }
69 79
70 private: 80 private:
71 bool CheckType(const char* classname) const; 81 bool CheckType(const char* classname) const;
72 82
73 FakeResource* resource_; // Owned. 83 FakeResource* resource_; // Owned.
74 const char* classname_; // Weak reference. 84 const char* classname_; // Weak reference.
75 const char* file_; // Weak reference. 85 const char* file_; // Weak reference.
76 int line_; 86 int line_;
77 int32_t ref_count_; 87 int32_t ref_count_;
78 88
79 DISALLOW_COPY_AND_ASSIGN(FakeResourceTracker); 89 DISALLOW_COPY_AND_ASSIGN(FakeResourceTracker);
80 }; 90 };
81 91
82 class FakeResource { 92 class FakeResource {
83 public: 93 public:
84 FakeResource() {} 94 FakeResource() {}
95 // Called when the resource is destroyed. For debugging purposes, this does
96 // not happen until the resource manager is destroyed.
85 virtual ~FakeResource() {} 97 virtual ~FakeResource() {}
98 // Called when the last reference to the resource is released.
99 virtual void Destroy() {}
86 100
87 private: 101 private:
88 DISALLOW_COPY_AND_ASSIGN(FakeResource); 102 DISALLOW_COPY_AND_ASSIGN(FakeResource);
89 }; 103 };
90 104
91 template <typename T> 105 template <typename T>
92 inline T* FakeResourceManager::Get(PP_Resource handle) { 106 inline T* FakeResourceManager::Get(PP_Resource handle) {
93 return Get(handle)->resource<T>(); 107 return Get(handle)->resource<T>();
94 } 108 }
95 109
96 #define CREATE_RESOURCE(MANAGER, TYPE, RESOURCE) \ 110 #define CREATE_RESOURCE(MANAGER, TYPE, RESOURCE) \
97 (MANAGER)->Create(RESOURCE, #TYPE, __FILE__, __LINE__) 111 (MANAGER)->Create((RESOURCE), #TYPE, __FILE__, __LINE__)
98 112
99 #endif // LIBRARIES_NACL_IO_TEST_FAKE_RESOURCE_MANAGER_H_ 113 #endif // LIBRARIES_NACL_IO_TEST_FAKE_RESOURCE_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698