| Index: chrome/common/pepper_plugin_registry.h
|
| ===================================================================
|
| --- chrome/common/pepper_plugin_registry.h (revision 81952)
|
| +++ chrome/common/pepper_plugin_registry.h (working copy)
|
| @@ -1,151 +0,0 @@
|
| -// 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 CHROME_COMMON_PEPPER_PLUGIN_REGISTRY_H_
|
| -#define CHROME_COMMON_PEPPER_PLUGIN_REGISTRY_H_
|
| -#pragma once
|
| -
|
| -#include <list>
|
| -#include <map>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/file_path.h"
|
| -#include "ppapi/proxy/dispatcher.h"
|
| -#include "webkit/plugins/npapi/webplugininfo.h"
|
| -#include "webkit/plugins/ppapi/plugin_delegate.h"
|
| -#include "webkit/plugins/ppapi/plugin_module.h"
|
| -
|
| -struct PepperPluginInfo {
|
| - PepperPluginInfo();
|
| - ~PepperPluginInfo();
|
| -
|
| - webkit::npapi::WebPluginInfo ToWebPluginInfo() const;
|
| -
|
| - // Indicates internal plugins for which there's not actually a library.
|
| - // These plugins are implemented in the Chrome binary using a separate set
|
| - // of entry points (see internal_entry_points below).
|
| - // Defaults to false.
|
| - bool is_internal;
|
| -
|
| - // True when this plugin should be run out of process. Defaults to false.
|
| - bool is_out_of_process;
|
| -
|
| - FilePath path; // Internal plugins have "internal-[name]" as path.
|
| - std::string name;
|
| - std::string description;
|
| - std::string version;
|
| - std::vector<webkit::npapi::WebPluginMimeType> mime_types;
|
| -
|
| - // When is_internal is set, this contains the function pointers to the
|
| - // entry points for the internal plugins.
|
| - webkit::ppapi::PluginModule::EntryPoints internal_entry_points;
|
| -};
|
| -
|
| -struct NaClModuleInfo {
|
| - NaClModuleInfo();
|
| - ~NaClModuleInfo();
|
| -
|
| - GURL url;
|
| - std::string mime_type;
|
| -};
|
| -
|
| -// This class holds references to all of the known pepper plugin modules.
|
| -//
|
| -// It keeps two lists. One list of preloaded in-process modules, and one list
|
| -// is a list of all live modules (some of which may be out-of-process and hence
|
| -// not preloaded).
|
| -class PepperPluginRegistry
|
| - : public webkit::ppapi::PluginDelegate::ModuleLifetime,
|
| - public pp::proxy::Dispatcher::Delegate {
|
| - public:
|
| - ~PepperPluginRegistry();
|
| -
|
| - static const char* kPDFPluginName;
|
| -
|
| - static PepperPluginRegistry* GetInstance();
|
| -
|
| - // Computes the list of known pepper plugins.
|
| - //
|
| - // This method is static so that it can be used by the browser process, which
|
| - // has no need to load the pepper plugin modules. It will re-compute the
|
| - // plugin list every time it is called. Generally, code in the registry should
|
| - // be using the cached plugin_list_ instead.
|
| - static void ComputeList(std::vector<PepperPluginInfo>* plugins);
|
| -
|
| - // Loads the (native) libraries but does not initialize them (i.e., does not
|
| - // call PPP_InitializeModule). This is needed by the zygote on Linux to get
|
| - // access to the plugins before entering the sandbox.
|
| - static void PreloadModules();
|
| -
|
| - // Retrieves the information associated with the given plugin path. The
|
| - // return value will be NULL if there is no such plugin.
|
| - //
|
| - // The returned pointer is owned by the PluginRegistry.
|
| - const PepperPluginInfo* GetInfoForPlugin(const FilePath& path) const;
|
| -
|
| - // Returns an existing loaded module for the given path. It will search for
|
| - // both preloaded in-process or currently active (non crashed) out-of-process
|
| - // plugins matching the given name. Returns NULL if the plugin hasn't been
|
| - // loaded.
|
| - webkit::ppapi::PluginModule* GetLiveModule(const FilePath& path);
|
| -
|
| - // Notifies the registry that a new non-preloaded module has been created.
|
| - // This is normally called for out-of-process plugins. Once this is called,
|
| - // the module is available to be returned by GetModule(). The module will
|
| - // automatically unregister itself by calling PluginModuleDestroyed().
|
| - void AddLiveModule(const FilePath& path, webkit::ppapi::PluginModule* module);
|
| -
|
| - // ModuleLifetime implementation.
|
| - virtual void PluginModuleDead(webkit::ppapi::PluginModule* dead_module);
|
| -
|
| - // We implement some Pepper plug-ins using NaCl to take advantage of NaCl's
|
| - // strong sandbox. Typically, these NaCl modules are stored in extensions
|
| - // and registered here. Not all NaCl modules need to register for a MIME
|
| - // type, just the ones that are responsible for rendering a particular MIME
|
| - // type, like application/pdf. Note: We only register NaCl modules in the
|
| - // browser process.
|
| - void RegisterNaClModule(const GURL& url, const std::string& mime_type);
|
| - void UnregisterNaClModule(const GURL& url);
|
| -
|
| - // Call UpdatePluginListWithNaClModules() after registering or unregistering
|
| - // a NaCl module to see those changes reflected in the PluginList.
|
| - void UpdatePluginListWithNaClModules();
|
| -
|
| - private:
|
| - typedef std::list<NaClModuleInfo> NaClModuleInfoList;
|
| -
|
| - PepperPluginRegistry();
|
| -
|
| - // Dispatcher::Delegate implementation.
|
| - virtual MessageLoop* GetIPCMessageLoop();
|
| - virtual base::WaitableEvent* GetShutdownEvent();
|
| - virtual std::set<PP_Instance>* GetGloballySeenInstanceIDSet();
|
| -
|
| - NaClModuleInfoList::iterator FindNaClModule(const GURL& url);
|
| -
|
| - // All known pepper plugins.
|
| - std::vector<PepperPluginInfo> plugin_list_;
|
| -
|
| - // Plugins that have been preloaded so they can be executed in-process in
|
| - // the renderer (the sandbox prevents on-demand loading).
|
| - typedef std::map<FilePath, scoped_refptr<webkit::ppapi::PluginModule> >
|
| - OwningModuleMap;
|
| - OwningModuleMap preloaded_modules_;
|
| -
|
| - // A list of non-owning pointers to all currently-live plugin modules. This
|
| - // includes both preloaded ones in preloaded_modules_, and out-of-process
|
| - // modules whose lifetime is managed externally. This will contain only
|
| - // non-crashed modules. If an out-of-process module crashes, it may
|
| - // continue as long as there are WebKit references to it, but it will not
|
| - // appear in this list.
|
| - typedef std::map<FilePath, webkit::ppapi::PluginModule*> NonOwningModuleMap;
|
| - NonOwningModuleMap live_modules_;
|
| -
|
| - NaClModuleInfoList nacl_module_list_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(PepperPluginRegistry);
|
| -};
|
| -
|
| -#endif // CHROME_COMMON_PEPPER_PLUGIN_REGISTRY_H_
|
|
|