| Index: content/public/browser/plugin_service.h
|
| ===================================================================
|
| --- content/public/browser/plugin_service.h (revision 0)
|
| +++ content/public/browser/plugin_service.h (revision 0)
|
| @@ -0,0 +1,136 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CONTENT_PUBLIC_BROWSER_PLUGIN_SERVICE_H_
|
| +#define CONTENT_PUBLIC_BROWSER_PLUGIN_SERVICE_H_
|
| +#pragma once
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/callback.h"
|
| +#include "base/string16.h"
|
| +#include "content/common/content_export.h"
|
| +
|
| +class FilePath;
|
| +class GURL;
|
| +class PluginProcessHost;
|
| +
|
| +namespace webkit {
|
| +struct WebPluginInfo;
|
| +namespace npapi {
|
| +class PluginGroup;
|
| +class PluginList;
|
| +}
|
| +}
|
| +
|
| +namespace content {
|
| +
|
| +class BrowserContext;
|
| +class PluginServiceFilter;
|
| +class ResourceContext;
|
| +struct PepperPluginInfo;
|
| +
|
| +// This must be created on the main thread but it's only called on the IO/file
|
| +// thread. This is an asynchronous wrapper around the PluginList interface for
|
| +// querying plugin information. This must be used instead of that to avoid
|
| +// doing expensive disk operations on the IO/UI threads.
|
| +class PluginService {
|
| + public:
|
| + typedef base::Callback<void(const std::vector<webkit::WebPluginInfo>&)>
|
| + GetPluginsCallback;
|
| + typedef base::Callback<void(const std::vector<webkit::npapi::PluginGroup>&)>
|
| + GetPluginGroupsCallback;
|
| +
|
| + // Returns the PluginService singleton.
|
| + CONTENT_EXPORT static PluginService* GetInstance();
|
| +
|
| + // Tells all the renderer processes associated with the given browser context
|
| + // to throw away their cache of the plugin list, and optionally also reload
|
| + // all the pages with plugins. If |browser_context| is NULL, purges the cache
|
| + // in all renderers.
|
| + // NOTE: can only be called on the UI thread.
|
| + static void PurgePluginListCache(BrowserContext* browser_context,
|
| + bool reload_pages);
|
| +
|
| + virtual ~PluginService() {}
|
| +
|
| + // Must be called on the instance to finish initialization.
|
| + virtual void Init() = 0;
|
| +
|
| + // Starts watching for changes in the list of installed plug-ins.
|
| + virtual void StartWatchingPlugins() = 0;
|
| +
|
| + // Returns the plugin process host corresponding to the plugin process that
|
| + // has been started by this service. Returns NULL if no process has been
|
| + // started.
|
| + virtual PluginProcessHost* FindNpapiPluginProcess(
|
| + const FilePath& plugin_path) = 0;
|
| +
|
| + // Gets the plugin in the list of plugins that matches the given url and mime
|
| + // type. Returns true if the data is frome a stale plugin list, false if it
|
| + // is up to date. This can be called from any thread.
|
| + virtual bool GetPluginInfoArray(
|
| + const GURL& url,
|
| + const std::string& mime_type,
|
| + bool allow_wildcard,
|
| + std::vector<webkit::WebPluginInfo>* info,
|
| + std::vector<std::string>* actual_mime_types) = 0;
|
| +
|
| + // Gets plugin info for an individual plugin and filters the plugins using
|
| + // the |context| and renderer IDs. This will report whether the data is stale
|
| + // via |is_stale| and returns whether or not the plugin can be found.
|
| + virtual bool GetPluginInfo(int render_process_id,
|
| + int render_view_id,
|
| + const ResourceContext& context,
|
| + const GURL& url,
|
| + const GURL& page_url,
|
| + const std::string& mime_type,
|
| + bool allow_wildcard,
|
| + bool* is_stale,
|
| + webkit::WebPluginInfo* info,
|
| + std::string* actual_mime_type) = 0;
|
| +
|
| + // Get plugin info by plugin path (including disabled plugins). Returns true
|
| + // if the plugin is found and WebPluginInfo has been filled in |info|. This
|
| + // will use cached data in the plugin list.
|
| + virtual bool GetPluginInfoByPath(const FilePath& plugin_path,
|
| + webkit::WebPluginInfo* info) = 0;
|
| +
|
| + // Asynchronously loads plugins if necessary and then calls back to the
|
| + // provided function on the calling MessageLoop on completion.
|
| + virtual void GetPlugins(const GetPluginsCallback& callback) = 0;
|
| +
|
| + // Asynchronously loads the list of plugin groups if necessary and then calls
|
| + // back to the provided function on the calling MessageLoop on completion.
|
| + virtual void GetPluginGroups(const GetPluginGroupsCallback& callback) = 0;
|
| +
|
| + // Returns information about a pepper plugin if it exists, otherwise NULL.
|
| + // The caller does not own the pointer, and it's not guaranteed to live past
|
| + // the call stack.
|
| + virtual PepperPluginInfo* GetRegisteredPpapiPluginInfo(
|
| + const FilePath& plugin_path) = 0;
|
| +
|
| + virtual void SetFilter(PluginServiceFilter* filter) = 0;
|
| + virtual PluginServiceFilter* GetFilter() = 0;
|
| +
|
| + // The following functions are wrappers around webkit::npapi::PluginList.
|
| + // These must be used instead of those in order to ensure that we have a
|
| + // single global list in the component build and so that we don't
|
| + // accidentally load plugins in the wrong process or thread. Refer to
|
| + // PluginList for further documentation of these functions.
|
| + virtual void RefreshPlugins() = 0;
|
| + virtual void AddExtraPluginPath(const FilePath& path) = 0;
|
| + virtual void RemoveExtraPluginPath(const FilePath& path) = 0;
|
| + virtual void UnregisterInternalPlugin(const FilePath& path) = 0;
|
| + virtual void RegisterInternalPlugin(const webkit::WebPluginInfo& info) = 0;
|
| + virtual string16 GetPluginGroupName(const std::string& plugin_name) = 0;
|
| +
|
| + // TODO(dpranke): This should be private.
|
| + virtual webkit::npapi::PluginList* GetPluginList() = 0;
|
| +};
|
| +
|
| +} // namespace content
|
| +
|
| +#endif // CONTENT_PUBLIC_BROWSER_PLUGIN_SERVICE_H_
|
|
|
| Property changes on: content\public\browser\plugin_service.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|