Index: content/browser/plugin_service.cc |
diff --git a/content/browser/plugin_service.cc b/content/browser/plugin_service.cc |
index 5e0e910656076fa2394cec4f57f871b1f52a079b..b0cbb7f8541d197993ecd71711b38af3b7b4d640 100644 |
--- a/content/browser/plugin_service.cc |
+++ b/content/browser/plugin_service.cc |
@@ -113,9 +113,30 @@ PluginService* PluginService::GetInstance() { |
} |
PluginService::PluginService() |
- : ui_locale_( |
+ : plugin_list_(NULL), |
+ ui_locale_( |
content::GetContentClient()->browser()->GetApplicationLocale()), |
filter_(NULL) { |
+} |
+ |
+PluginService::~PluginService() { |
+#if defined(OS_WIN) |
+ // Release the events since they're owned by RegKey, not WaitableEvent. |
+ hkcu_watcher_.StopWatching(); |
+ hklm_watcher_.StopWatching(); |
+ if (hkcu_event_.get()) |
+ hkcu_event_->Release(); |
+ if (hklm_event_.get()) |
+ hklm_event_->Release(); |
+#endif |
+ // Make sure no plugin channel requests have been leaked. |
+ DCHECK(pending_plugin_clients_.empty()); |
+} |
+ |
+void PluginService::Init() { |
+ if (!plugin_list_) |
+ plugin_list_ = webkit::npapi::PluginList::Singleton(); |
+ |
plugin_list()->set_will_load_plugins_callback( |
base::Bind(&WillLoadPluginsCallback)); |
@@ -140,20 +161,6 @@ PluginService::PluginService() |
#endif |
} |
-PluginService::~PluginService() { |
-#if defined(OS_WIN) |
- // Release the events since they're owned by RegKey, not WaitableEvent. |
- hkcu_watcher_.StopWatching(); |
- hklm_watcher_.StopWatching(); |
- if (hkcu_event_.get()) |
- hkcu_event_->Release(); |
- if (hklm_event_.get()) |
- hklm_event_->Release(); |
-#endif |
- // Make sure no plugin channel requests have been leaked. |
- DCHECK(pending_plugin_clients_.empty()); |
-} |
- |
void PluginService::StartWatchingPlugins() { |
// Start watching for changes in the plugin list. This means watching |
// for changes in the Windows registry keys and on both Windows and POSIX |
@@ -640,6 +647,11 @@ webkit::npapi::PluginList* PluginService::plugin_list() { |
return webkit::npapi::PluginList::Singleton(); |
} |
+void PluginService::SetPluginListForTesting( |
+ webkit::npapi::PluginList* plugin_list) { |
+ plugin_list_ = plugin_list; |
+} |
+ |
void PluginService::RegisterInternalPlugin(const webkit::WebPluginInfo& info) { |
plugin_list()->RegisterInternalPlugin(info); |
} |