| Index: chrome/browser/plugin_service.h
|
| ===================================================================
|
| --- chrome/browser/plugin_service.h (revision 75653)
|
| +++ chrome/browser/plugin_service.h (working copy)
|
| @@ -2,231 +2,10 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -// This class responds to requests from renderers for the list of plugins, and
|
| -// also a proxy object for plugin instances.
|
| -
|
| #ifndef CHROME_BROWSER_PLUGIN_SERVICE_H_
|
| #define CHROME_BROWSER_PLUGIN_SERVICE_H_
|
| #pragma once
|
|
|
| -#include <string>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/file_path.h"
|
| -#include "base/hash_tables.h"
|
| -#include "base/scoped_vector.h"
|
| -#include "base/singleton.h"
|
| -#include "base/synchronization/lock.h"
|
| -#include "base/synchronization/waitable_event_watcher.h"
|
| -#include "build/build_config.h"
|
| -#include "chrome/browser/plugin_process_host.h"
|
| -#include "chrome/browser/ppapi_plugin_process_host.h"
|
| -#include "chrome/common/notification_observer.h"
|
| -#include "chrome/common/notification_registrar.h"
|
| -#include "googleurl/src/gurl.h"
|
| -#include "ipc/ipc_channel_handle.h"
|
| -#include "webkit/plugins/npapi/webplugininfo.h"
|
| -
|
| -#if defined(OS_WIN)
|
| -#include "base/scoped_ptr.h"
|
| -#include "base/win/registry.h"
|
| -#endif
|
| -
|
| -#if defined(OS_LINUX)
|
| -#include "chrome/browser/file_path_watcher/file_path_watcher.h"
|
| -#endif
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| -namespace chromeos {
|
| -class PluginSelectionPolicy;
|
| -}
|
| -#endif
|
| -
|
| -namespace IPC {
|
| -class Message;
|
| -}
|
| -
|
| -class MessageLoop;
|
| -struct PepperPluginInfo;
|
| -class PluginDirWatcherDelegate;
|
| -class Profile;
|
| -class ResourceDispatcherHost;
|
| -
|
| -namespace net {
|
| -class URLRequestContext;
|
| -} // namespace net
|
| -
|
| -// This must be created on the main thread but it's only called on the IO/file
|
| -// thread.
|
| -class PluginService
|
| - : public base::WaitableEventWatcher::Delegate,
|
| - public NotificationObserver {
|
| - public:
|
| - struct OverriddenPlugin {
|
| - int render_process_id;
|
| - int render_view_id;
|
| - GURL url;
|
| - webkit::npapi::WebPluginInfo plugin;
|
| - };
|
| -
|
| - // Initializes the global instance; should be called on startup from the main
|
| - // thread.
|
| - static void InitGlobalInstance(Profile* profile);
|
| -
|
| - // Returns the PluginService singleton.
|
| - static PluginService* GetInstance();
|
| -
|
| - // Load all the plugins that should be loaded for the lifetime of the browser
|
| - // (ie, with the LoadOnStartup flag set).
|
| - void LoadChromePlugins(ResourceDispatcherHost* resource_dispatcher_host);
|
| -
|
| - // Sets/gets the data directory that Chrome plugins should use to store
|
| - // persistent data.
|
| - void SetChromePluginDataDir(const FilePath& data_dir);
|
| - const FilePath& GetChromePluginDataDir();
|
| -
|
| - // Gets the browser's UI locale.
|
| - const std::string& GetUILocale();
|
| -
|
| - // 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.
|
| - PluginProcessHost* FindNpapiPluginProcess(const FilePath& plugin_path);
|
| - PpapiPluginProcessHost* FindPpapiPluginProcess(const FilePath& plugin_path);
|
| -
|
| - // Returns the plugin process host corresponding to the plugin process that
|
| - // has been started by this service. This will start a process to host the
|
| - // 'plugin_path' if needed. If the process fails to start, the return value
|
| - // is NULL. Must be called on the IO thread.
|
| - PluginProcessHost* FindOrStartNpapiPluginProcess(
|
| - const FilePath& plugin_path);
|
| - PpapiPluginProcessHost* FindOrStartPpapiPluginProcess(
|
| - const FilePath& plugin_path);
|
| -
|
| - // Opens a channel to a plugin process for the given mime type, starting
|
| - // a new plugin process if necessary. This must be called on the IO thread
|
| - // or else a deadlock can occur.
|
| - void OpenChannelToNpapiPlugin(int render_process_id,
|
| - int render_view_id,
|
| - const GURL& url,
|
| - const std::string& mime_type,
|
| - PluginProcessHost::Client* client);
|
| - void OpenChannelToPpapiPlugin(const FilePath& path,
|
| - PpapiPluginProcessHost::Client* client);
|
| -
|
| - // Gets the first allowed plugin in the list of plugins that matches
|
| - // the given url and mime type. Must be called on the FILE thread.
|
| - bool GetFirstAllowedPluginInfo(int render_process_id,
|
| - int render_view_id,
|
| - const GURL& url,
|
| - const std::string& mime_type,
|
| - webkit::npapi::WebPluginInfo* info,
|
| - std::string* actual_mime_type);
|
| -
|
| - // Returns true if the given plugin is allowed to be used by a page with
|
| - // the given URL.
|
| - bool PrivatePluginAllowedForURL(const FilePath& plugin_path, const GURL& url);
|
| -
|
| - // Safe to be called from any thread.
|
| - void OverridePluginForTab(OverriddenPlugin plugin);
|
| -
|
| - // The UI thread's message loop
|
| - MessageLoop* main_message_loop() { return main_message_loop_; }
|
| -
|
| - ResourceDispatcherHost* resource_dispatcher_host() const {
|
| - return resource_dispatcher_host_;
|
| - }
|
| -
|
| - static void EnableChromePlugins(bool enable);
|
| -
|
| - private:
|
| - friend struct DefaultSingletonTraits<PluginService>;
|
| -
|
| - // Creates the PluginService object, but doesn't actually build the plugin
|
| - // list yet. It's generated lazily.
|
| - PluginService();
|
| - ~PluginService();
|
| -
|
| - // base::WaitableEventWatcher::Delegate implementation.
|
| - virtual void OnWaitableEventSignaled(base::WaitableEvent* waitable_event);
|
| -
|
| - // NotificationObserver implementation
|
| - virtual void Observe(NotificationType type, const NotificationSource& source,
|
| - const NotificationDetails& details);
|
| -
|
| - void RegisterPepperPlugins();
|
| -
|
| - // Helper so we can do the plugin lookup on the FILE thread.
|
| - void GetAllowedPluginForOpenChannelToPlugin(
|
| - int render_process_id,
|
| - int render_view_id,
|
| - const GURL& url,
|
| - const std::string& mime_type,
|
| - PluginProcessHost::Client* client);
|
| -
|
| - // Helper so we can finish opening the channel after looking up the
|
| - // plugin.
|
| - void FinishOpenChannelToPlugin(
|
| - const FilePath& plugin_path,
|
| - PluginProcessHost::Client* client);
|
| -
|
| -#if defined(OS_LINUX)
|
| - // Registers a new FilePathWatcher for a given path.
|
| - static void RegisterFilePathWatcher(
|
| - FilePathWatcher* watcher,
|
| - const FilePath& path,
|
| - FilePathWatcher::Delegate* delegate);
|
| -#endif
|
| -
|
| - // The main thread's message loop.
|
| - MessageLoop* main_message_loop_;
|
| -
|
| - // The IO thread's resource dispatcher host.
|
| - ResourceDispatcherHost* resource_dispatcher_host_;
|
| -
|
| - // The data directory that Chrome plugins should use to store persistent data.
|
| - FilePath chrome_plugin_data_dir_;
|
| -
|
| - // The browser's UI locale.
|
| - const std::string ui_locale_;
|
| -
|
| - // Map of plugin paths to the origin they are restricted to. Used for
|
| - // extension-only plugins.
|
| - typedef base::hash_map<FilePath, GURL> PrivatePluginMap;
|
| - PrivatePluginMap private_plugins_;
|
| -
|
| - NotificationRegistrar registrar_;
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| - scoped_refptr<chromeos::PluginSelectionPolicy> plugin_selection_policy_;
|
| -#endif
|
| -
|
| -#if defined(OS_WIN)
|
| - // Registry keys for getting notifications when new plugins are installed.
|
| - base::win::RegKey hkcu_key_;
|
| - base::win::RegKey hklm_key_;
|
| - scoped_ptr<base::WaitableEvent> hkcu_event_;
|
| - scoped_ptr<base::WaitableEvent> hklm_event_;
|
| - base::WaitableEventWatcher hkcu_watcher_;
|
| - base::WaitableEventWatcher hklm_watcher_;
|
| -#endif
|
| -
|
| -#if defined(OS_LINUX)
|
| - ScopedVector<FilePathWatcher> file_watchers_;
|
| - scoped_refptr<PluginDirWatcherDelegate> file_watcher_delegate_;
|
| -#endif
|
| -
|
| - std::vector<PepperPluginInfo> ppapi_plugins_;
|
| -
|
| - // Set to true if chrome plugins are enabled. Defaults to true.
|
| - static bool enable_chrome_plugins_;
|
| -
|
| - std::vector<OverriddenPlugin> overridden_plugins_;
|
| - base::Lock overridden_plugins_lock_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(PluginService);
|
| -};
|
| -
|
| -DISABLE_RUNNABLE_METHOD_REFCOUNT(PluginService);
|
| -
|
| +// TODO(jam): remove this file when all files have been converted.
|
| +#include "content/browser/plugin_service.h"
|
| #endif // CHROME_BROWSER_PLUGIN_SERVICE_H_
|
|
|