OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 WEBKIT_GLUE_PLUGINS_PEPPER_RESOURCE_TRACKER_H_ | 5 #ifndef WEBKIT_GLUE_PLUGINS_PEPPER_RESOURCE_TRACKER_H_ |
6 #define WEBKIT_GLUE_PLUGINS_PEPPER_RESOURCE_TRACKER_H_ | 6 #define WEBKIT_GLUE_PLUGINS_PEPPER_RESOURCE_TRACKER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
12 #include "base/gtest_prod_util.h" | 12 #include "base/gtest_prod_util.h" |
13 #include "base/hash_tables.h" | 13 #include "base/hash_tables.h" |
14 #include "base/ref_counted.h" | 14 #include "base/ref_counted.h" |
15 #include "base/singleton.h" | |
16 #include "ppapi/c/pp_instance.h" | 15 #include "ppapi/c/pp_instance.h" |
17 #include "ppapi/c/pp_module.h" | 16 #include "ppapi/c/pp_module.h" |
18 #include "ppapi/c/pp_resource.h" | 17 #include "ppapi/c/pp_resource.h" |
19 | 18 |
| 19 namespace base { |
| 20 template <typename T> struct DefaultLazyInstanceTraits; |
| 21 } |
| 22 |
20 namespace pepper { | 23 namespace pepper { |
21 | 24 |
22 class PluginInstance; | 25 class PluginInstance; |
23 class PluginModule; | 26 class PluginModule; |
24 class Resource; | 27 class Resource; |
25 class ResourceTrackerTest; | 28 class ResourceTrackerTest; |
26 | 29 |
27 // This class maintains a global list of all live pepper resources. It allows | 30 // This class maintains a global list of all live pepper resources. It allows |
28 // us to check resource ID validity and to map them to a specific module. | 31 // us to check resource ID validity and to map them to a specific module. |
29 // | 32 // |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 | 87 |
85 // Called when a plugin instance was deleted and should no longer be tracked. | 88 // Called when a plugin instance was deleted and should no longer be tracked. |
86 // The given handle should be one generated by AddInstance. | 89 // The given handle should be one generated by AddInstance. |
87 void InstanceDeleted(PP_Instance instance); | 90 void InstanceDeleted(PP_Instance instance); |
88 | 91 |
89 // Returns a pointer to the plugin instance object associated with the given | 92 // Returns a pointer to the plugin instance object associated with the given |
90 // instance handle. The return value will be NULL if the handle is invalid. | 93 // instance handle. The return value will be NULL if the handle is invalid. |
91 PluginInstance* GetInstance(PP_Instance instance); | 94 PluginInstance* GetInstance(PP_Instance instance); |
92 | 95 |
93 private: | 96 private: |
94 friend struct DefaultSingletonTraits<ResourceTracker>; | 97 friend struct base::DefaultLazyInstanceTraits<ResourceTracker>; |
95 friend class Resource; | 98 friend class Resource; |
96 friend class ResourceTrackerTest; | 99 friend class ResourceTrackerTest; |
97 | 100 |
98 // Prohibit creation other then by the Singleton class. | 101 // Prohibit creation other then by the Singleton class. |
99 ResourceTracker(); | 102 ResourceTracker(); |
100 ~ResourceTracker(); | 103 ~ResourceTracker(); |
101 | 104 |
102 // Adds the given resource to the tracker and assigns it a resource ID and | 105 // Adds the given resource to the tracker and assigns it a resource ID and |
103 // refcount of 1. The assigned resource ID will be returned. Used only by the | 106 // refcount of 1. The assigned resource ID will be returned. Used only by the |
104 // Resource class. | 107 // Resource class. |
(...skipping 30 matching lines...) Expand all Loading... |
135 // destructor will notify us when the module is deleted. | 138 // destructor will notify us when the module is deleted. |
136 typedef std::map<PP_Module, PluginModule*> ModuleMap; | 139 typedef std::map<PP_Module, PluginModule*> ModuleMap; |
137 ModuleMap module_map_; | 140 ModuleMap module_map_; |
138 | 141 |
139 DISALLOW_COPY_AND_ASSIGN(ResourceTracker); | 142 DISALLOW_COPY_AND_ASSIGN(ResourceTracker); |
140 }; | 143 }; |
141 | 144 |
142 } // namespace pepper | 145 } // namespace pepper |
143 | 146 |
144 #endif // WEBKIT_GLUE_PLUGINS_PEPPER_RESOURCE_TRACKER_H_ | 147 #endif // WEBKIT_GLUE_PLUGINS_PEPPER_RESOURCE_TRACKER_H_ |
OLD | NEW |