OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #include "webkit/plugins/ppapi/resource_tracker.h" | 5 #include "webkit/plugins/ppapi/resource_tracker.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 PluginInstance* instance; | 51 PluginInstance* instance; |
52 | 52 |
53 // Tracks all live NPObjectVars used by this module so we can map NPObjects | 53 // Tracks all live NPObjectVars used by this module so we can map NPObjects |
54 // to the corresponding object, and also release these properly if the | 54 // to the corresponding object, and also release these properly if the |
55 // instance goes away when there are still refs. These are non-owning | 55 // instance goes away when there are still refs. These are non-owning |
56 // references. | 56 // references. |
57 NPObjectToNPObjectVarMap np_object_to_object_var; | 57 NPObjectToNPObjectVarMap np_object_to_object_var; |
58 | 58 |
59 // Lazily allocated function proxies for the different interfaces. | 59 // Lazily allocated function proxies for the different interfaces. |
60 scoped_ptr< ::ppapi::FunctionGroupBase > | 60 scoped_ptr< ::ppapi::FunctionGroupBase > |
61 function_proxies[::pp::proxy::INTERFACE_ID_COUNT]; | 61 function_proxies[::ppapi::proxy::INTERFACE_ID_COUNT]; |
62 }; | 62 }; |
63 | 63 |
64 // static | 64 // static |
65 ResourceTracker* ResourceTracker::global_tracker_ = NULL; | 65 ResourceTracker* ResourceTracker::global_tracker_ = NULL; |
66 ResourceTracker* ResourceTracker::singleton_override_ = NULL; | 66 ResourceTracker* ResourceTracker::singleton_override_ = NULL; |
67 | 67 |
68 ResourceTracker::ResourceTracker() | 68 ResourceTracker::ResourceTracker() |
69 : last_resource_id_(0) { | 69 : last_resource_id_(0) { |
70 // Wire up the new shared resource tracker base to use our implementation. | 70 // Wire up the new shared resource tracker base to use our implementation. |
71 ::ppapi::TrackerBase::Init(&GetTrackerBase); | 71 ::ppapi::TrackerBase::Init(&GetTrackerBase); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 data.np_object_to_object_var.erase(current->first); | 111 data.np_object_to_object_var.erase(current->first); |
112 } | 112 } |
113 DCHECK(data.np_object_to_object_var.empty()); | 113 DCHECK(data.np_object_to_object_var.empty()); |
114 | 114 |
115 if (delete_instance) | 115 if (delete_instance) |
116 instance_map_.erase(found); | 116 instance_map_.erase(found); |
117 } | 117 } |
118 | 118 |
119 ::ppapi::FunctionGroupBase* ResourceTracker::GetFunctionAPI( | 119 ::ppapi::FunctionGroupBase* ResourceTracker::GetFunctionAPI( |
120 PP_Instance pp_instance, | 120 PP_Instance pp_instance, |
121 pp::proxy::InterfaceID id) { | 121 ::ppapi::proxy::InterfaceID id) { |
122 // Get the instance object. This also ensures that the instance data is in | 122 // Get the instance object. This also ensures that the instance data is in |
123 // the map, since we need it below. | 123 // the map, since we need it below. |
124 PluginInstance* instance = GetInstance(pp_instance); | 124 PluginInstance* instance = GetInstance(pp_instance); |
125 if (!instance) | 125 if (!instance) |
126 return NULL; | 126 return NULL; |
127 | 127 |
128 // The instance one is special, since it's just implemented by the instance | 128 // The instance one is special, since it's just implemented by the instance |
129 // object. | 129 // object. |
130 if (id == pp::proxy::INTERFACE_ID_PPB_INSTANCE) | 130 if (id == ::ppapi::proxy::INTERFACE_ID_PPB_INSTANCE) |
131 return instance; | 131 return instance; |
132 | 132 |
133 scoped_ptr< ::ppapi::FunctionGroupBase >& proxy = | 133 scoped_ptr< ::ppapi::FunctionGroupBase >& proxy = |
134 instance_map_[pp_instance]->function_proxies[id]; | 134 instance_map_[pp_instance]->function_proxies[id]; |
135 if (proxy.get()) | 135 if (proxy.get()) |
136 return proxy.get(); | 136 return proxy.get(); |
137 | 137 |
138 switch (id) { | 138 switch (id) { |
139 case pp::proxy::INTERFACE_ID_PPB_CHAR_SET: | 139 case ::ppapi::proxy::INTERFACE_ID_PPB_CHAR_SET: |
140 proxy.reset(new PPB_CharSet_Impl(instance)); | 140 proxy.reset(new PPB_CharSet_Impl(instance)); |
141 break; | 141 break; |
142 case pp::proxy::INTERFACE_ID_PPB_CURSORCONTROL: | 142 case ::ppapi::proxy::INTERFACE_ID_PPB_CURSORCONTROL: |
143 proxy.reset(new PPB_CursorControl_Impl(instance)); | 143 proxy.reset(new PPB_CursorControl_Impl(instance)); |
144 break; | 144 break; |
145 case pp::proxy::INTERFACE_ID_PPB_FIND: | 145 case ::ppapi::proxy::INTERFACE_ID_PPB_FIND: |
146 proxy.reset(new PPB_Find_Impl(instance)); | 146 proxy.reset(new PPB_Find_Impl(instance)); |
147 break; | 147 break; |
148 case pp::proxy::INTERFACE_ID_PPB_FONT: | 148 case ::ppapi::proxy::INTERFACE_ID_PPB_FONT: |
149 proxy.reset(new PPB_Font_FunctionImpl(instance)); | 149 proxy.reset(new PPB_Font_FunctionImpl(instance)); |
150 break; | 150 break; |
151 case pp::proxy::INTERFACE_ID_RESOURCE_CREATION: | 151 case ::ppapi::proxy::INTERFACE_ID_RESOURCE_CREATION: |
152 proxy.reset(new ResourceCreationImpl(instance)); | 152 proxy.reset(new ResourceCreationImpl(instance)); |
153 break; | 153 break; |
154 default: | 154 default: |
155 NOTREACHED(); | 155 NOTREACHED(); |
156 } | 156 } |
157 | 157 |
158 return proxy.get(); | 158 return proxy.get(); |
159 } | 159 } |
160 | 160 |
161 ::ppapi::VarTracker* ResourceTracker::GetVarTracker() { | 161 ::ppapi::VarTracker* ResourceTracker::GetVarTracker() { |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 | 300 |
301 // static | 301 // static |
302 void ResourceTracker::ClearSingletonOverride() { | 302 void ResourceTracker::ClearSingletonOverride() { |
303 DCHECK(singleton_override_); | 303 DCHECK(singleton_override_); |
304 singleton_override_ = NULL; | 304 singleton_override_ = NULL; |
305 } | 305 } |
306 | 306 |
307 } // namespace ppapi | 307 } // namespace ppapi |
308 } // namespace webkit | 308 } // namespace webkit |
309 | 309 |
OLD | NEW |