| Index: chrome/browser/browser_child_process_host.h
|
| ===================================================================
|
| --- chrome/browser/browser_child_process_host.h (revision 75626)
|
| +++ chrome/browser/browser_child_process_host.h (working copy)
|
| @@ -6,138 +6,7 @@
|
| #define CHROME_BROWSER_BROWSER_CHILD_PROCESS_HOST_H_
|
| #pragma once
|
|
|
| -#include <list>
|
| +// TODO(jam): remove this file when all files have been converted.
|
| +#include "content/browser/browser_child_process_host.h"
|
|
|
| -#include "chrome/browser/child_process_launcher.h"
|
| -#include "chrome/browser/renderer_host/resource_message_filter.h"
|
| -#include "chrome/common/child_process_host.h"
|
| -#include "chrome/common/child_process_info.h"
|
| -
|
| -class ResourceDispatcherHost;
|
| -
|
| -// Plugins/workers and other child processes that live on the IO thread should
|
| -// derive from this class.
|
| -//
|
| -// [Browser]RenderProcessHost is the main exception that doesn't derive from
|
| -// this class. That project lives on the UI thread.
|
| -class BrowserChildProcessHost : public ChildProcessHost,
|
| - public ChildProcessInfo,
|
| - public ChildProcessLauncher::Client {
|
| - public:
|
| - virtual ~BrowserChildProcessHost();
|
| -
|
| - // Prepares command_line for crash reporting as appropriate. On Linux and
|
| - // Mac, a command-line flag to enable crash reporting in the child process
|
| - // will be appended if needed, because the child process may not have access
|
| - // to the data that determines the status of crash reporting in the
|
| - // currently-executing process. This function is a no-op on Windows.
|
| - static void SetCrashReporterCommandLine(CommandLine* command_line);
|
| -
|
| - // Terminates all child processes and deletes each ChildProcessHost instance.
|
| - static void TerminateAll();
|
| -
|
| - // The Iterator class allows iteration through either all child processes, or
|
| - // ones of a specific type, depending on which constructor is used. Note that
|
| - // this should be done from the IO thread and that the iterator should not be
|
| - // kept around as it may be invalidated on subsequent event processing in the
|
| - // event loop.
|
| - class Iterator {
|
| - public:
|
| - Iterator();
|
| - explicit Iterator(ChildProcessInfo::ProcessType type);
|
| - BrowserChildProcessHost* operator->() { return *iterator_; }
|
| - BrowserChildProcessHost* operator*() { return *iterator_; }
|
| - BrowserChildProcessHost* operator++();
|
| - bool Done();
|
| -
|
| - private:
|
| - bool all_;
|
| - ChildProcessInfo::ProcessType type_;
|
| - std::list<BrowserChildProcessHost*>::iterator iterator_;
|
| - };
|
| -
|
| - protected:
|
| - // |resource_dispatcher_host| may be NULL to indicate none is needed for
|
| - // this process type.
|
| - // |url_request_context_getter| allows derived classes to override the
|
| - // net::URLRequestContext.
|
| - BrowserChildProcessHost(
|
| - ChildProcessInfo::ProcessType type,
|
| - ResourceDispatcherHost* resource_dispatcher_host,
|
| - ResourceMessageFilter::URLRequestContextOverride*
|
| - url_request_context_override);
|
| -
|
| - // A convenient constructor for those classes that want to use the default
|
| - // net::URLRequestContext.
|
| - BrowserChildProcessHost(
|
| - ChildProcessInfo::ProcessType type,
|
| - ResourceDispatcherHost* resource_dispatcher_host);
|
| -
|
| - // Derived classes call this to launch the child process asynchronously.
|
| - void Launch(
|
| -#if defined(OS_WIN)
|
| - const FilePath& exposed_dir,
|
| -#elif defined(OS_POSIX)
|
| - bool use_zygote,
|
| - const base::environment_vector& environ,
|
| -#endif
|
| - CommandLine* cmd_line);
|
| -
|
| - // Returns the handle of the child process. This can be called only after
|
| - // OnProcessLaunched is called or it will be invalid and may crash.
|
| - base::ProcessHandle GetChildProcessHandle() const;
|
| -
|
| - // ChildProcessLauncher::Client implementation.
|
| - virtual void OnProcessLaunched() {}
|
| -
|
| - // Derived classes can override this to know if the process crashed.
|
| - // |exit_code| is the status returned when the process crashed (for
|
| - // posix, as returned from waitpid(), for Windows, as returned from
|
| - // GetExitCodeProcess()).
|
| - virtual void OnProcessCrashed(int exit_code) {}
|
| -
|
| - // Derived classes can override this to know if the process was
|
| - // killed. |exit_code| is the status returned when the process
|
| - // was killed (for posix, as returned from waitpid(), for Windows,
|
| - // as returned from GetExitCodeProcess()).
|
| - virtual void OnProcessWasKilled(int exit_code) {}
|
| -
|
| - // Returns the termination status of a child. |exit_code| is the
|
| - // status returned when the process exited (for posix, as returned
|
| - // from waitpid(), for Windows, as returned from
|
| - // GetExitCodeProcess()). |exit_code| may be NULL.
|
| - virtual base::TerminationStatus GetChildTerminationStatus(int* exit_code);
|
| -
|
| - // Overrides from ChildProcessHost
|
| - virtual void OnChildDied();
|
| - virtual void ShutdownStarted();
|
| - virtual void Notify(NotificationType type);
|
| - // Extends the base class implementation and removes this host from
|
| - // the host list. Calls ChildProcessHost::ForceShutdown
|
| - virtual void ForceShutdown();
|
| -
|
| - ResourceDispatcherHost* resource_dispatcher_host() {
|
| - return resource_dispatcher_host_;
|
| - }
|
| -
|
| - private:
|
| - void Initialize(ResourceMessageFilter::URLRequestContextOverride*
|
| - url_request_context_override);
|
| -
|
| - // By using an internal class as the ChildProcessLauncher::Client, we can
|
| - // intercept OnProcessLaunched and do our own processing before
|
| - // calling the subclass' implementation.
|
| - class ClientHook : public ChildProcessLauncher::Client {
|
| - public:
|
| - explicit ClientHook(BrowserChildProcessHost* host);
|
| - virtual void OnProcessLaunched();
|
| - private:
|
| - BrowserChildProcessHost* host_;
|
| - };
|
| - ClientHook client_;
|
| - // May be NULL if this current process has no resource dispatcher host.
|
| - ResourceDispatcherHost* resource_dispatcher_host_;
|
| - scoped_ptr<ChildProcessLauncher> child_process_;
|
| -};
|
| -
|
| #endif // CHROME_BROWSER_BROWSER_CHILD_PROCESS_HOST_H_
|
|
|