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

Unified Diff: content/browser/plugin_service.h

Issue 7980011: Convert the PluginService interface to be an async wrapper around PluginList. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: New interface as discussed Created 9 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/plugin_service.h
diff --git a/content/browser/plugin_service.h b/content/browser/plugin_service.h
index 2d2596e3d4e5e6173e28b55db512258c8f6c9615..d5c0c2d5733aaddc6203bfc3eedd2d6313b81912 100644
--- a/content/browser/plugin_service.h
+++ b/content/browser/plugin_service.h
@@ -13,6 +13,7 @@
#include <vector>
#include "base/basictypes.h"
+#include "base/callback.h"
#include "base/memory/scoped_vector.h"
#include "base/memory/singleton.h"
#include "base/synchronization/waitable_event_watcher.h"
@@ -25,7 +26,6 @@
#include "content/common/notification_registrar.h"
#include "googleurl/src/gurl.h"
#include "ipc/ipc_channel_handle.h"
-#include "webkit/plugins/webplugininfo.h"
#if defined(OS_WIN)
#include "base/memory/scoped_ptr.h"
@@ -39,13 +39,26 @@
struct PepperPluginInfo;
class PluginDirWatcherDelegate;
+namespace base {
+class MessageLoopProxy;
+}
+
namespace content {
class ResourceContext;
class PluginServiceFilter;
}
+namespace webkit {
+namespace npapi {
+class PluginGroup;
+class PluginList;
+}
+}
+
// This must be created on the main thread but it's only called on the IO/file
-// thread.
+// thread. This is an asynchronous wrapper around the PluginList interface for
+// querying plugin information, and this should instead of that class wherever
+// possible.
class CONTENT_EXPORT PluginService
: public base::WaitableEventWatcher::Delegate,
public NotificationObserver {
@@ -115,10 +128,17 @@ class CONTENT_EXPORT PluginService
webkit::WebPluginInfo* info,
std::string* actual_mime_type);
- // Returns a list of all plug-ins available to the resource context. Must be
- // called on the FILE thread.
- void GetPlugins(const content::ResourceContext& context,
- std::vector<webkit::WebPluginInfo>* plugins);
+ // Causes the plugin list to be reloaded if necessary. If |refresh| is true,
+ // a reload will be forced.
+ void LoadPluginList(bool refresh, const base::Closure& completion_callback);
jam 2011/09/21 23:45:13 i think having only one GetPlugins function is bet
jam 2011/09/21 23:45:55 please ignore this comment, i put before i wrote t
+
+ // Returns the list of cached plugin information. This can be called from any
+ // thread, but the data can be stale.
Bernhard Bauer 2011/09/21 22:47:05 Nit: I think the more common case will be that the
+ void GetPlugins(std::vector<webkit::WebPluginInfo>* plugins);
+
+ // Returns the list of cached plugin groups. This can be called from any
+ // thread, but note that the data can be stale.
+ void GetPluginGroups(std::vector<webkit::npapi::PluginGroup>* groups);
// Tells all the renderer processes to throw away their cache of the plugin
// list, and optionally also reload all the pages with plugins.
@@ -128,6 +148,7 @@ class CONTENT_EXPORT PluginService
void set_filter(content::PluginServiceFilter* filter) {
filter_ = filter;
}
+ content::PluginServiceFilter* filter() { return filter_; }
private:
friend struct DefaultSingletonTraits<PluginService>;
@@ -148,6 +169,10 @@ class CONTENT_EXPORT PluginService
PepperPluginInfo* GetRegisteredPpapiPluginInfo(const FilePath& plugin_path);
+ // Function that is run on the FILE thread to load the plugins synchronously.
+ void GetPluginsInternal(base::MessageLoopProxy* target_loop,
+ const base::Closure& completion_callback);
+
// Helper so we can do the plugin lookup on the FILE thread.
void GetAllowedPluginForOpenChannelToPlugin(
int render_process_id,

Powered by Google App Engine
This is Rietveld 408576698