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

Side by Side Diff: webkit/plugins/ppapi/plugin_module.cc

Issue 8342016: Revert 106142 - Add a new globals object for PPAPI tracking information. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 2 months 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
« no previous file with comments | « webkit/plugins/ppapi/npobject_var.cc ('k') | webkit/plugins/ppapi/plugin_object.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:mergeinfo
Merged /branches/chrome_webkit_merge_branch/src/webkit/plugins/ppapi/plugin_module.cc:r3734-4217,4606-5108,5177-5263
OLDNEW
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/plugin_module.h" 5 #include "webkit/plugins/ppapi/plugin_module.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 #include "ppapi/c/trusted/ppb_graphics_3d_trusted.h" 83 #include "ppapi/c/trusted/ppb_graphics_3d_trusted.h"
84 #include "ppapi/c/trusted/ppb_image_data_trusted.h" 84 #include "ppapi/c/trusted/ppb_image_data_trusted.h"
85 #include "ppapi/c/trusted/ppb_url_loader_trusted.h" 85 #include "ppapi/c/trusted/ppb_url_loader_trusted.h"
86 #include "ppapi/shared_impl/input_event_impl.h" 86 #include "ppapi/shared_impl/input_event_impl.h"
87 #include "ppapi/shared_impl/time_conversion.h" 87 #include "ppapi/shared_impl/time_conversion.h"
88 #include "ppapi/thunk/enter.h" 88 #include "ppapi/thunk/enter.h"
89 #include "ppapi/thunk/thunk.h" 89 #include "ppapi/thunk/thunk.h"
90 #include "webkit/plugins/plugin_switches.h" 90 #include "webkit/plugins/plugin_switches.h"
91 #include "webkit/plugins/ppapi/callbacks.h" 91 #include "webkit/plugins/ppapi/callbacks.h"
92 #include "webkit/plugins/ppapi/common.h" 92 #include "webkit/plugins/ppapi/common.h"
93 #include "webkit/plugins/ppapi/host_globals.h"
94 #include "webkit/plugins/ppapi/ppapi_interface_factory.h" 93 #include "webkit/plugins/ppapi/ppapi_interface_factory.h"
95 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" 94 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
96 #include "webkit/plugins/ppapi/ppb_directory_reader_impl.h" 95 #include "webkit/plugins/ppapi/ppb_directory_reader_impl.h"
97 #include "webkit/plugins/ppapi/ppb_flash_clipboard_impl.h" 96 #include "webkit/plugins/ppapi/ppb_flash_clipboard_impl.h"
98 #include "webkit/plugins/ppapi/ppb_flash_file_impl.h" 97 #include "webkit/plugins/ppapi/ppb_flash_file_impl.h"
99 #include "webkit/plugins/ppapi/ppb_flash_impl.h" 98 #include "webkit/plugins/ppapi/ppb_flash_impl.h"
100 #include "webkit/plugins/ppapi/ppb_flash_menu_impl.h" 99 #include "webkit/plugins/ppapi/ppb_flash_menu_impl.h"
101 #include "webkit/plugins/ppapi/ppb_flash_net_connector_impl.h" 100 #include "webkit/plugins/ppapi/ppb_flash_net_connector_impl.h"
102 #include "webkit/plugins/ppapi/ppb_font_impl.h" 101 #include "webkit/plugins/ppapi/ppb_font_impl.h"
103 #include "webkit/plugins/ppapi/ppb_gpu_blacklist_private_impl.h" 102 #include "webkit/plugins/ppapi/ppb_gpu_blacklist_private_impl.h"
104 #include "webkit/plugins/ppapi/ppb_graphics_2d_impl.h" 103 #include "webkit/plugins/ppapi/ppb_graphics_2d_impl.h"
105 #include "webkit/plugins/ppapi/ppb_image_data_impl.h" 104 #include "webkit/plugins/ppapi/ppb_image_data_impl.h"
106 #include "webkit/plugins/ppapi/ppb_layer_compositor_impl.h" 105 #include "webkit/plugins/ppapi/ppb_layer_compositor_impl.h"
107 #include "webkit/plugins/ppapi/ppb_opengles_impl.h" 106 #include "webkit/plugins/ppapi/ppb_opengles_impl.h"
108 #include "webkit/plugins/ppapi/ppb_proxy_impl.h" 107 #include "webkit/plugins/ppapi/ppb_proxy_impl.h"
109 #include "webkit/plugins/ppapi/ppb_scrollbar_impl.h" 108 #include "webkit/plugins/ppapi/ppb_scrollbar_impl.h"
110 #include "webkit/plugins/ppapi/ppb_uma_private_impl.h" 109 #include "webkit/plugins/ppapi/ppb_uma_private_impl.h"
111 #include "webkit/plugins/ppapi/ppb_var_impl.h" 110 #include "webkit/plugins/ppapi/ppb_var_impl.h"
112 #include "webkit/plugins/ppapi/ppb_video_capture_impl.h" 111 #include "webkit/plugins/ppapi/ppb_video_capture_impl.h"
113 #include "webkit/plugins/ppapi/ppb_video_decoder_impl.h" 112 #include "webkit/plugins/ppapi/ppb_video_decoder_impl.h"
114 #include "webkit/plugins/ppapi/ppb_video_layer_impl.h" 113 #include "webkit/plugins/ppapi/ppb_video_layer_impl.h"
115 #include "webkit/plugins/ppapi/resource_tracker.h" 114 #include "webkit/plugins/ppapi/resource_tracker.h"
116 #include "webkit/plugins/ppapi/webkit_forwarding_impl.h" 115 #include "webkit/plugins/ppapi/webkit_forwarding_impl.h"
117 116
118 using ppapi::PpapiGlobals;
119 using ppapi::TimeTicksToPPTimeTicks; 117 using ppapi::TimeTicksToPPTimeTicks;
120 using ppapi::TimeToPPTime; 118 using ppapi::TimeToPPTime;
121 using ppapi::thunk::EnterResource; 119 using ppapi::thunk::EnterResource;
122 using ppapi::thunk::PPB_Graphics2D_API; 120 using ppapi::thunk::PPB_Graphics2D_API;
123 121
124 namespace webkit { 122 namespace webkit {
125 namespace ppapi { 123 namespace ppapi {
126 124
127 namespace { 125 namespace {
128 126
129 // Global tracking info for PPAPI plugins. This is lazily created before the
130 // first plugin is allocated, and leaked on shutdown.
131 //
132 // Note that we don't want a Singleton here since destroying this object will
133 // try to free some stuff that requires WebKit, and Singletons are destroyed
134 // after WebKit.
135 webkit::ppapi::HostGlobals* host_globals = NULL;
136
137 // Maintains all currently loaded plugin libs for validating PP_Module 127 // Maintains all currently loaded plugin libs for validating PP_Module
138 // identifiers. 128 // identifiers.
139 typedef std::set<PluginModule*> PluginModuleSet; 129 typedef std::set<PluginModule*> PluginModuleSet;
140 130
141 PluginModuleSet* GetLivePluginSet() { 131 PluginModuleSet* GetLivePluginSet() {
142 static PluginModuleSet live_plugin_libs; 132 static PluginModuleSet live_plugin_libs;
143 return &live_plugin_libs; 133 return &live_plugin_libs;
144 } 134 }
145 135
146 base::MessageLoopProxy* GetMainThreadMessageLoop() { 136 base::MessageLoopProxy* GetMainThreadMessageLoop() {
147 static scoped_refptr<base::MessageLoopProxy> proxy( 137 static scoped_refptr<base::MessageLoopProxy> proxy(
148 base::MessageLoopProxy::current()); 138 base::MessageLoopProxy::current());
149 return proxy.get(); 139 return proxy.get();
150 } 140 }
151 141
152 // PPB_Core -------------------------------------------------------------------- 142 // PPB_Core --------------------------------------------------------------------
153 143
154 void AddRefResource(PP_Resource resource) { 144 void AddRefResource(PP_Resource resource) {
155 PpapiGlobals::Get()->GetResourceTracker()->AddRefResource(resource); 145 ResourceTracker::Get()->AddRefResource(resource);
156 } 146 }
157 147
158 void ReleaseResource(PP_Resource resource) { 148 void ReleaseResource(PP_Resource resource) {
159 PpapiGlobals::Get()->GetResourceTracker()->ReleaseResource(resource); 149 ResourceTracker::Get()->ReleaseResource(resource);
160 } 150 }
161 151
162 PP_Time GetTime() { 152 PP_Time GetTime() {
163 return TimeToPPTime(base::Time::Now()); 153 return TimeToPPTime(base::Time::Now());
164 } 154 }
165 155
166 PP_TimeTicks GetTickTime() { 156 PP_TimeTicks GetTickTime() {
167 return TimeTicksToPPTimeTicks(base::TimeTicks::Now()); 157 return TimeTicksToPPTimeTicks(base::TimeTicks::Now());
168 } 158 }
169 159
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 MessageLoop::current()->SetNestableTasksAllowed(true); 198 MessageLoop::current()->SetNestableTasksAllowed(true);
209 MessageLoop::current()->Run(); 199 MessageLoop::current()->Run();
210 MessageLoop::current()->SetNestableTasksAllowed(old_state); 200 MessageLoop::current()->SetNestableTasksAllowed(old_state);
211 } 201 }
212 202
213 void QuitMessageLoop(PP_Instance instance) { 203 void QuitMessageLoop(PP_Instance instance) {
214 MessageLoop::current()->QuitNow(); 204 MessageLoop::current()->QuitNow();
215 } 205 }
216 206
217 uint32_t GetLiveObjectsForInstance(PP_Instance instance_id) { 207 uint32_t GetLiveObjectsForInstance(PP_Instance instance_id) {
218 return HostGlobals::Get()->host_resource_tracker()->GetLiveObjectsForInstance( 208 return ResourceTracker::Get()->GetLiveObjectsForInstance(instance_id);
219 instance_id);
220 } 209 }
221 210
222 PP_Bool IsOutOfProcess() { 211 PP_Bool IsOutOfProcess() {
223 return PP_FALSE; 212 return PP_FALSE;
224 } 213 }
225 214
226 const PPB_Testing_Dev testing_interface = { 215 const PPB_Testing_Dev testing_interface = {
227 &ReadImageData, 216 &ReadImageData,
228 &RunMessageLoop, 217 &RunMessageLoop,
229 &QuitMessageLoop, 218 &QuitMessageLoop,
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 PluginDelegate::ModuleLifetime* lifetime_delegate) 364 PluginDelegate::ModuleLifetime* lifetime_delegate)
376 : lifetime_delegate_(lifetime_delegate), 365 : lifetime_delegate_(lifetime_delegate),
377 callback_tracker_(new CallbackTracker), 366 callback_tracker_(new CallbackTracker),
378 is_in_destructor_(false), 367 is_in_destructor_(false),
379 is_crashed_(false), 368 is_crashed_(false),
380 broker_(NULL), 369 broker_(NULL),
381 library_(NULL), 370 library_(NULL),
382 name_(name), 371 name_(name),
383 path_(path), 372 path_(path),
384 reserve_instance_id_(NULL) { 373 reserve_instance_id_(NULL) {
385 // Ensure the globals object is created.
386 if (!host_globals)
387 host_globals = new HostGlobals;
388
389 memset(&entry_points_, 0, sizeof(entry_points_)); 374 memset(&entry_points_, 0, sizeof(entry_points_));
390 pp_module_ = HostGlobals::Get()->host_resource_tracker()->AddModule(this); 375 pp_module_ = ResourceTracker::Get()->AddModule(this);
391 GetMainThreadMessageLoop(); // Initialize the main thread message loop. 376 GetMainThreadMessageLoop(); // Initialize the main thread message loop.
392 GetLivePluginSet()->insert(this); 377 GetLivePluginSet()->insert(this);
393 } 378 }
394 379
395 PluginModule::~PluginModule() { 380 PluginModule::~PluginModule() {
396 // In the past there have been crashes reentering the plugin module 381 // In the past there have been crashes reentering the plugin module
397 // destructor. Catch if that happens again earlier. 382 // destructor. Catch if that happens again earlier.
398 CHECK(!is_in_destructor_); 383 CHECK(!is_in_destructor_);
399 is_in_destructor_ = true; 384 is_in_destructor_ = true;
400 385
401 // When the module is being deleted, there should be no more instances still 386 // When the module is being deleted, there should be no more instances still
402 // holding a reference to us. 387 // holding a reference to us.
403 DCHECK(instances_.empty()); 388 DCHECK(instances_.empty());
404 389
405 GetLivePluginSet()->erase(this); 390 GetLivePluginSet()->erase(this);
406 391
407 callback_tracker_->AbortAll(); 392 callback_tracker_->AbortAll();
408 393
409 if (entry_points_.shutdown_module) 394 if (entry_points_.shutdown_module)
410 entry_points_.shutdown_module(); 395 entry_points_.shutdown_module();
411 396
412 if (library_) 397 if (library_)
413 base::UnloadNativeLibrary(library_); 398 base::UnloadNativeLibrary(library_);
414 399
415 // Notifications that we've been deleted should be last. 400 // Notifications that we've been deleted should be last.
416 HostGlobals::Get()->host_resource_tracker()->ModuleDeleted(pp_module_); 401 ResourceTracker::Get()->ModuleDeleted(pp_module_);
417 if (!is_crashed_) { 402 if (!is_crashed_) {
418 // When the plugin crashes, we immediately tell the lifetime delegate that 403 // When the plugin crashes, we immediately tell the lifetime delegate that
419 // we're gone, so we don't want to tell it again. 404 // we're gone, so we don't want to tell it again.
420 lifetime_delegate_->PluginModuleDead(this); 405 lifetime_delegate_->PluginModuleDead(this);
421 } 406 }
422 407
423 // Don't add stuff here, the two notifications that the module object has 408 // Don't add stuff here, the two notifications that the module object has
424 // been deleted should be last. This allows, for example, 409 // been deleted should be last. This allows, for example,
425 // PPB_Proxy.IsInModuleDestructor to map PP_Module to this class during the 410 // PPB_Proxy.IsInModuleDestructor to map PP_Module to this class during the
426 // previous parts of the destructor. 411 // previous parts of the destructor.
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 int retval = entry_points.initialize_module(pp_module(), &GetInterface); 542 int retval = entry_points.initialize_module(pp_module(), &GetInterface);
558 if (retval != 0) { 543 if (retval != 0) {
559 LOG(WARNING) << "PPP_InitializeModule returned failure " << retval; 544 LOG(WARNING) << "PPP_InitializeModule returned failure " << retval;
560 return false; 545 return false;
561 } 546 }
562 return true; 547 return true;
563 } 548 }
564 549
565 } // namespace ppapi 550 } // namespace ppapi
566 } // namespace webkit 551 } // namespace webkit
OLDNEW
« no previous file with comments | « webkit/plugins/ppapi/npobject_var.cc ('k') | webkit/plugins/ppapi/plugin_object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698