Chromium Code Reviews| 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 // This class responds to requests from renderers for the list of plugins, and | 5 // This class responds to requests from renderers for the list of plugins, and |
| 6 // also a proxy object for plugin instances. | 6 // also a proxy object for plugin instances. |
| 7 | 7 |
| 8 #ifndef CONTENT_BROWSER_PLUGIN_SERVICE_H_ | 8 #ifndef CONTENT_BROWSER_PLUGIN_SERVICE_H_ |
| 9 #define CONTENT_BROWSER_PLUGIN_SERVICE_H_ | 9 #define CONTENT_BROWSER_PLUGIN_SERVICE_H_ |
| 10 #pragma once | 10 #pragma once |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 150 // will use cached data in the plugin list. | 150 // will use cached data in the plugin list. |
| 151 bool GetPluginInfoByPath(const FilePath& plugin_path, | 151 bool GetPluginInfoByPath(const FilePath& plugin_path, |
| 152 webkit::WebPluginInfo* info); | 152 webkit::WebPluginInfo* info); |
| 153 | 153 |
| 154 // Marks the plugin list as dirty and will cause the plugins to be reloaded | 154 // Marks the plugin list as dirty and will cause the plugins to be reloaded |
| 155 // on the next access through GetPlugins() or GetPluginGroups(). | 155 // on the next access through GetPlugins() or GetPluginGroups(). |
| 156 void RefreshPluginList(); | 156 void RefreshPluginList(); |
| 157 | 157 |
| 158 // Asynchronously loads plugins if necessary and then calls back to the | 158 // Asynchronously loads plugins if necessary and then calls back to the |
| 159 // provided function on the calling MessageLoop on completion. | 159 // provided function on the calling MessageLoop on completion. |
| 160 void GetPlugins(const GetPluginsCallback& callback); | 160 virtual void GetPlugins(const GetPluginsCallback& callback); |
| 161 | 161 |
| 162 // Asynchronously loads the list of plugin groups if necessary and then calls | 162 // Asynchronously loads the list of plugin groups if necessary and then calls |
| 163 // back to the provided function on the calling MessageLoop on completion. | 163 // back to the provided function on the calling MessageLoop on completion. |
| 164 void GetPluginGroups(const GetPluginGroupsCallback& callback); | 164 virtual void GetPluginGroups(const GetPluginGroupsCallback& callback); |
| 165 | 165 |
| 166 // Tells all the renderer processes associated with the given browser context | 166 // Tells all the renderer processes associated with the given browser context |
| 167 // to throw away their cache of the plugin list, and optionally also reload | 167 // to throw away their cache of the plugin list, and optionally also reload |
| 168 // all the pages with plugins. If |browser_context| is NULL, purges the cache | 168 // all the pages with plugins. If |browser_context| is NULL, purges the cache |
| 169 // in all renderers. | 169 // in all renderers. |
| 170 // NOTE: can only be called on the UI thread. | 170 // NOTE: can only be called on the UI thread. |
| 171 static void PurgePluginListCache(content::BrowserContext* browser_context, | 171 static void PurgePluginListCache(content::BrowserContext* browser_context, |
| 172 bool reload_pages); | 172 bool reload_pages); |
| 173 | 173 |
| 174 void set_filter(content::PluginServiceFilter* filter) { | 174 void set_filter(content::PluginServiceFilter* filter) { |
| 175 filter_ = filter; | 175 filter_ = filter; |
| 176 } | 176 } |
| 177 content::PluginServiceFilter* filter() { return filter_; } | 177 content::PluginServiceFilter* filter() { return filter_; } |
| 178 | 178 |
| 179 webkit::npapi::PluginList* plugin_list() const { return plugin_list_; } | |
| 180 | |
| 181 protected: | |
| 182 // Creates the PluginService object, but the actual plugin list is generated | |
| 183 // lazily. If |plugin_list| is NULL, the singleton will be used. In tests, | |
| 184 // use MockPluginList for dependency injection. | |
| 185 PluginService(webkit::npapi::PluginList* plugin_list = NULL); | |
|
Bernhard Bauer
2011/11/07 22:37:50
Could you have a protected mutator to set the plug
Robert Sesek
2011/11/07 23:05:49
No, but I can create a custom singleton traits.
| |
| 186 virtual ~PluginService(); | |
| 187 | |
| 179 private: | 188 private: |
| 180 friend struct DefaultSingletonTraits<PluginService>; | 189 friend struct DefaultSingletonTraits<PluginService>; |
| 181 | 190 |
| 182 // Creates the PluginService object, but doesn't actually build the plugin | |
| 183 // list yet. It's generated lazily. | |
| 184 PluginService(); | |
| 185 virtual ~PluginService(); | |
| 186 | |
| 187 // base::WaitableEventWatcher::Delegate implementation. | 191 // base::WaitableEventWatcher::Delegate implementation. |
| 188 virtual void OnWaitableEventSignaled(base::WaitableEvent* waitable_event); | 192 virtual void OnWaitableEventSignaled(base::WaitableEvent* waitable_event); |
| 189 | 193 |
| 190 // content::NotificationObserver implementation | 194 // content::NotificationObserver implementation |
| 191 virtual void Observe(int type, const content::NotificationSource& source, | 195 virtual void Observe(int type, const content::NotificationSource& source, |
| 192 const content::NotificationDetails& details); | 196 const content::NotificationDetails& details); |
| 193 | 197 |
| 194 void RegisterPepperPlugins(); | 198 void RegisterPepperPlugins(); |
| 195 | 199 |
| 196 content::PepperPluginInfo* GetRegisteredPpapiPluginInfo( | 200 content::PepperPluginInfo* GetRegisteredPpapiPluginInfo( |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 225 PluginProcessHost::Client* client); | 229 PluginProcessHost::Client* client); |
| 226 | 230 |
| 227 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 231 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
| 228 // Registers a new FilePathWatcher for a given path. | 232 // Registers a new FilePathWatcher for a given path. |
| 229 static void RegisterFilePathWatcher( | 233 static void RegisterFilePathWatcher( |
| 230 base::files::FilePathWatcher* watcher, | 234 base::files::FilePathWatcher* watcher, |
| 231 const FilePath& path, | 235 const FilePath& path, |
| 232 base::files::FilePathWatcher::Delegate* delegate); | 236 base::files::FilePathWatcher::Delegate* delegate); |
| 233 #endif | 237 #endif |
| 234 | 238 |
| 239 // The plugin list instance. | |
| 240 webkit::npapi::PluginList* plugin_list_; | |
| 241 | |
| 235 // The browser's UI locale. | 242 // The browser's UI locale. |
| 236 const std::string ui_locale_; | 243 const std::string ui_locale_; |
| 237 | 244 |
| 238 content::NotificationRegistrar registrar_; | 245 content::NotificationRegistrar registrar_; |
| 239 | 246 |
| 240 #if defined(OS_WIN) | 247 #if defined(OS_WIN) |
| 241 // Registry keys for getting notifications when new plugins are installed. | 248 // Registry keys for getting notifications when new plugins are installed. |
| 242 base::win::RegKey hkcu_key_; | 249 base::win::RegKey hkcu_key_; |
| 243 base::win::RegKey hklm_key_; | 250 base::win::RegKey hklm_key_; |
| 244 scoped_ptr<base::WaitableEvent> hkcu_event_; | 251 scoped_ptr<base::WaitableEvent> hkcu_event_; |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 262 #if defined(OS_POSIX) | 269 #if defined(OS_POSIX) |
| 263 scoped_refptr<PluginLoaderPosix> plugin_loader_; | 270 scoped_refptr<PluginLoaderPosix> plugin_loader_; |
| 264 #endif | 271 #endif |
| 265 | 272 |
| 266 DISALLOW_COPY_AND_ASSIGN(PluginService); | 273 DISALLOW_COPY_AND_ASSIGN(PluginService); |
| 267 }; | 274 }; |
| 268 | 275 |
| 269 DISABLE_RUNNABLE_METHOD_REFCOUNT(PluginService); | 276 DISABLE_RUNNABLE_METHOD_REFCOUNT(PluginService); |
| 270 | 277 |
| 271 #endif // CONTENT_BROWSER_PLUGIN_SERVICE_H_ | 278 #endif // CONTENT_BROWSER_PLUGIN_SERVICE_H_ |
| OLD | NEW |