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

Unified Diff: content/browser/plugin_loader_posix.h

Issue 1862513003: Remove NPAPI from browser and utility (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 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
« no previous file with comments | « content/browser/plugin_data_remover_impl.cc ('k') | content/browser/plugin_loader_posix.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « content/browser/plugin_data_remover_impl.cc ('k') | content/browser/plugin_loader_posix.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698