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

Side by Side Diff: content/browser/plugin_service.h

Issue 8493026: Revert r108760 / reland r108744, r108753 w/ fix (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rename plugin list accessor to plugin_list() Created 9 years, 1 month 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 | « chrome/plugin/chrome_content_plugin_client.cc ('k') | content/browser/plugin_service.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 class ResourceContext; 47 class ResourceContext;
48 struct PepperPluginInfo; 48 struct PepperPluginInfo;
49 class PluginServiceFilter; 49 class PluginServiceFilter;
50 struct PluginServiceFilterParams; 50 struct PluginServiceFilterParams;
51 } 51 }
52 52
53 namespace webkit { 53 namespace webkit {
54 namespace npapi { 54 namespace npapi {
55 class PluginGroup; 55 class PluginGroup;
56 class PluginList; 56 class PluginList;
57 struct PluginEntryPoints;
57 } 58 }
58 } 59 }
59 60
60 // This must be created on the main thread but it's only called on the IO/file 61 // This must be created on the main thread but it's only called on the IO/file
61 // thread. This is an asynchronous wrapper around the PluginList interface for 62 // thread. This is an asynchronous wrapper around the PluginList interface for
62 // querying plugin information. This must be used instead of that to avoid 63 // querying plugin information. This must be used instead of that to avoid
63 // doing expensive disk operations on the IO/UI threads. 64 // doing expensive disk operations on the IO/UI threads.
64 class CONTENT_EXPORT PluginService 65 class CONTENT_EXPORT PluginService
65 : public base::WaitableEventWatcher::Delegate, 66 : public base::WaitableEventWatcher::Delegate,
66 public content::NotificationObserver { 67 public content::NotificationObserver {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 bool* is_stale, 145 bool* is_stale,
145 webkit::WebPluginInfo* info, 146 webkit::WebPluginInfo* info,
146 std::string* actual_mime_type); 147 std::string* actual_mime_type);
147 148
148 // Get plugin info by plugin path (including disabled plugins). Returns true 149 // Get plugin info by plugin path (including disabled plugins). Returns true
149 // if the plugin is found and WebPluginInfo has been filled in |info|. This 150 // if the plugin is found and WebPluginInfo has been filled in |info|. This
150 // will use cached data in the plugin list. 151 // will use cached data in the plugin list.
151 bool GetPluginInfoByPath(const FilePath& plugin_path, 152 bool GetPluginInfoByPath(const FilePath& plugin_path,
152 webkit::WebPluginInfo* info); 153 webkit::WebPluginInfo* info);
153 154
154 // Marks the plugin list as dirty and will cause the plugins to be reloaded
155 // on the next access through GetPlugins() or GetPluginGroups().
156 void RefreshPluginList();
157
158 // Asynchronously loads plugins if necessary and then calls back to the 155 // Asynchronously loads plugins if necessary and then calls back to the
159 // provided function on the calling MessageLoop on completion. 156 // provided function on the calling MessageLoop on completion.
160 void GetPlugins(const GetPluginsCallback& callback); 157 void GetPlugins(const GetPluginsCallback& callback);
161 158
162 // Asynchronously loads the list of plugin groups if necessary and then calls 159 // Asynchronously loads the list of plugin groups if necessary and then calls
163 // back to the provided function on the calling MessageLoop on completion. 160 // back to the provided function on the calling MessageLoop on completion.
164 void GetPluginGroups(const GetPluginGroupsCallback& callback); 161 void GetPluginGroups(const GetPluginGroupsCallback& callback);
165 162
166 // Tells all the renderer processes associated with the given browser context 163 // 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 164 // 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 165 // all the pages with plugins. If |browser_context| is NULL, purges the cache
169 // in all renderers. 166 // in all renderers.
170 // NOTE: can only be called on the UI thread. 167 // NOTE: can only be called on the UI thread.
171 static void PurgePluginListCache(content::BrowserContext* browser_context, 168 static void PurgePluginListCache(content::BrowserContext* browser_context,
172 bool reload_pages); 169 bool reload_pages);
173 170
174 void set_filter(content::PluginServiceFilter* filter) { 171 void set_filter(content::PluginServiceFilter* filter) {
175 filter_ = filter; 172 filter_ = filter;
176 } 173 }
177 content::PluginServiceFilter* filter() { return filter_; } 174 content::PluginServiceFilter* filter() { return filter_; }
178 175
176
177 // The following functions are wrappers around webkit::npapi::PluginList.
178 // These must be used instead of those in order to ensure that we have a
179 // single global list in the component build and so that we don't
180 // accidentally load plugins in the wrong process or thread. Refer to
181 // PluginList for further documentation of these functions.
182 void RefreshPlugins();
183 void AddExtraPluginPath(const FilePath& path);
184 void RemoveExtraPluginPath(const FilePath& path);
185 void UnregisterInternalPlugin(const FilePath& path);
186 void RegisterInternalPlugin(const webkit::WebPluginInfo& info);
187 string16 GetPluginGroupName(const std::string& plugin_name);
188
189 // TODO(dpranke): This should be private.
190 webkit::npapi::PluginList* plugin_list();
191
179 private: 192 private:
180 friend struct DefaultSingletonTraits<PluginService>; 193 friend struct DefaultSingletonTraits<PluginService>;
181 194
182 // Creates the PluginService object, but doesn't actually build the plugin 195 // Creates the PluginService object, but doesn't actually build the plugin
183 // list yet. It's generated lazily. 196 // list yet. It's generated lazily.
184 PluginService(); 197 PluginService();
185 virtual ~PluginService(); 198 virtual ~PluginService();
186 199
187 // base::WaitableEventWatcher::Delegate implementation. 200 // base::WaitableEventWatcher::Delegate implementation.
188 virtual void OnWaitableEventSignaled(base::WaitableEvent* waitable_event); 201 virtual void OnWaitableEventSignaled(base::WaitableEvent* waitable_event);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 #if defined(OS_POSIX) 275 #if defined(OS_POSIX)
263 scoped_refptr<PluginLoaderPosix> plugin_loader_; 276 scoped_refptr<PluginLoaderPosix> plugin_loader_;
264 #endif 277 #endif
265 278
266 DISALLOW_COPY_AND_ASSIGN(PluginService); 279 DISALLOW_COPY_AND_ASSIGN(PluginService);
267 }; 280 };
268 281
269 DISABLE_RUNNABLE_METHOD_REFCOUNT(PluginService); 282 DISABLE_RUNNABLE_METHOD_REFCOUNT(PluginService);
270 283
271 #endif // CONTENT_BROWSER_PLUGIN_SERVICE_H_ 284 #endif // CONTENT_BROWSER_PLUGIN_SERVICE_H_
OLDNEW
« no previous file with comments | « chrome/plugin/chrome_content_plugin_client.cc ('k') | content/browser/plugin_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698