| Index: content/browser/plugin_loader_posix.h
|
| diff --git a/content/browser/plugin_loader_posix.h b/content/browser/plugin_loader_posix.h
|
| deleted file mode 100644
|
| index 51814131fcfb607361738908e7982b4c086be0e7..0000000000000000000000000000000000000000
|
| --- a/content/browser/plugin_loader_posix.h
|
| +++ /dev/null
|
| @@ -1,134 +0,0 @@
|
| -// Copyright (c) 2012 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_BROWSER_PLUGIN_LOADER_POSIX_H_
|
| -#define CONTENT_BROWSER_PLUGIN_LOADER_POSIX_H_
|
| -
|
| -#include <stddef.h>
|
| -#include <stdint.h>
|
| -
|
| -#include <vector>
|
| -
|
| -#include "base/compiler_specific.h"
|
| -#include "base/macros.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/time/time.h"
|
| -#include "content/browser/plugin_service_impl.h"
|
| -#include "content/public/browser/utility_process_host_client.h"
|
| -#include "content/public/common/webplugininfo.h"
|
| -#include "ipc/ipc_sender.h"
|
| -
|
| -namespace content {
|
| -class UtilityProcessHost;
|
| -
|
| -// This class is responsible for managing the out-of-process plugin loading on
|
| -// POSIX systems. It primarily lives on the IO thread, but has a brief stay on
|
| -// the FILE thread to iterate over plugin directories when it is first
|
| -// constructed.
|
| -//
|
| -// The following is the algorithm used to load plugins:
|
| -// 1. This asks the PluginList for the list of all potential plugins to attempt
|
| -// to load. This is referred to as the canonical list.
|
| -// 2. The child process this hosts is forked and the canonical list is sent to
|
| -// it.
|
| -// 3. The child process iterates over the canonical list, attempting to load
|
| -// each plugin in the order specified by the list. It sends an IPC message
|
| -// to the browser after each load, indicating success or failure. The two
|
| -// processes synchronize the position in the vector that will be used to
|
| -// attempt to load the next plugin.
|
| -// 4. If the child dies during this process, the host forks another child and
|
| -// resumes loading at the position past the plugin that it just attempted to
|
| -// load, bypassing the problematic plugin.
|
| -// 5. This algorithm continues until the canonical list has been walked to the
|
| -// end, after which the list of loaded plugins is set on the PluginList and
|
| -// the completion callback is run.
|
| -class CONTENT_EXPORT PluginLoaderPosix
|
| - : public NON_EXPORTED_BASE(UtilityProcessHostClient),
|
| - public IPC::Sender {
|
| - public:
|
| - PluginLoaderPosix();
|
| -
|
| - // Must be called from the IO thread. The |callback| will be called on the IO
|
| - // thread too.
|
| - void GetPlugins(const PluginService::GetPluginsCallback& callback);
|
| -
|
| - // UtilityProcessHostClient:
|
| - void OnProcessCrashed(int exit_code) override;
|
| - void OnProcessLaunchFailed() override;
|
| - bool OnMessageReceived(const IPC::Message& message) override;
|
| -
|
| - // IPC::Sender:
|
| - bool Send(IPC::Message* msg) override;
|
| -
|
| - private:
|
| - ~PluginLoaderPosix() override;
|
| -
|
| - // Called on the FILE thread to get the list of plugin paths to probe.
|
| - void GetPluginsToLoad();
|
| -
|
| - // Must be called on the IO thread.
|
| - virtual void LoadPluginsInternal();
|
| -
|
| - // Called after plugin loading has finished, if we don't know whether the
|
| - // plugin list has been invalidated in the mean time.
|
| - void GetPluginsWrapper(
|
| - const PluginService::GetPluginsCallback& callback,
|
| - const std::vector<WebPluginInfo>& plugins_unused);
|
| -
|
| - // Message handlers.
|
| - void OnPluginLoaded(uint32_t index, const WebPluginInfo& plugin);
|
| - void OnPluginLoadFailed(uint32_t index, const base::FilePath& plugin_path);
|
| -
|
| - // Returns an iterator to the plugin in |internal_plugins_| whose path
|
| - // matches |plugin_path|.
|
| - std::vector<WebPluginInfo>::iterator FindInternalPlugin(
|
| - const base::FilePath& plugin_path);
|
| -
|
| - // Runs all the registered callbacks on each's target loop if the condition
|
| - // for ending the load process is done (i.e. the |next_load_index_| is outside
|
| - // the range of the |canonical_list_|).
|
| - bool MaybeRunPendingCallbacks();
|
| -
|
| - // Returns true if there are no plugins left to load.
|
| - bool IsFinishedLoadingPlugins();
|
| -
|
| - // This method should be called when the plugins are finished loading.
|
| - // It updates the PluginList's list of plugins, and runs the queued callbacks.
|
| - void FinishedLoadingPlugins();
|
| -
|
| - // Launches the utility process that loads the plugins.
|
| - // Virtual for testing.
|
| - virtual bool LaunchUtilityProcess();
|
| -
|
| - // The process host for which this is a client.
|
| - base::WeakPtr<UtilityProcessHost> process_host_;
|
| -
|
| - // A list of paths to plugins which will be loaded by the utility process, in
|
| - // the order specified by this vector.
|
| - std::vector<base::FilePath> canonical_list_;
|
| -
|
| - // The index in |canonical_list_| of the plugin that the child process will
|
| - // attempt to load next.
|
| - size_t next_load_index_;
|
| -
|
| - // Internal plugins that have been registered at the time of loading.
|
| - std::vector<WebPluginInfo> internal_plugins_;
|
| -
|
| - // A vector of plugins that have been loaded successfully.
|
| - std::vector<WebPluginInfo> loaded_plugins_;
|
| -
|
| - // The callback and message loop on which the callback will be run when the
|
| - // plugin loading process has been completed.
|
| - std::vector<PluginService::GetPluginsCallback> callbacks_;
|
| -
|
| - // True if there is (or is about to be) a utility process that loads plugins.
|
| - bool loading_plugins_;
|
| -
|
| - friend class MockPluginLoaderPosix;
|
| - DISALLOW_COPY_AND_ASSIGN(PluginLoaderPosix);
|
| -};
|
| -
|
| -} // namespace content
|
| -
|
| -#endif // CONTENT_BROWSER_PLUGIN_LOADER_POSIX_H_
|
|
|