diff options
Diffstat (limited to 'chrome/browser/renderer_host/browser_render_process_host.h')
-rw-r--r-- | chrome/browser/renderer_host/browser_render_process_host.h | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/chrome/browser/renderer_host/browser_render_process_host.h b/chrome/browser/renderer_host/browser_render_process_host.h index caf55d7..2eafa16 100644 --- a/chrome/browser/renderer_host/browser_render_process_host.h +++ b/chrome/browser/renderer_host/browser_render_process_host.h @@ -9,6 +9,7 @@ #include <map> #include <string> +#include <queue> #include "base/process.h" #include "base/ref_counted.h" @@ -17,6 +18,7 @@ #include "base/string16.h" #include "base/timer.h" #include "chrome/common/transport_dib.h" +#include "chrome/browser/child_process_launcher.h" #include "chrome/browser/renderer_host/render_process_host.h" #include "chrome/common/notification_registrar.h" #include "third_party/WebKit/WebKit/chromium/public/WebCache.h" @@ -49,7 +51,8 @@ class Size; // are correlated with IDs. This way, the Views and the corresponding ViewHosts // communicate through the two process objects. class BrowserRenderProcessHost : public RenderProcessHost, - public NotificationObserver { + public NotificationObserver, + public ChildProcessLauncher::Client { public: explicit BrowserRenderProcessHost(Profile* profile); ~BrowserRenderProcessHost(); @@ -68,6 +71,7 @@ class BrowserRenderProcessHost : public RenderProcessHost, virtual void WidgetHidden(); virtual void ViewCreated(); virtual void AddWord(const string16& word); + virtual void SendVisitedLinkTable(base::SharedMemory* table_memory); virtual void AddVisitedLinks(const VisitedLinkCommon::Fingerprints& links); virtual void ResetVisitedLinks(); virtual bool FastShutdownIfPossible(); @@ -94,6 +98,9 @@ class BrowserRenderProcessHost : public RenderProcessHost, const NotificationSource& source, const NotificationDetails& details); + // ChildProcessLauncher::Client implementation. + virtual void OnProcessLaunched(); + private: friend class VisitRelayingRenderProcessHost; @@ -122,11 +129,8 @@ class BrowserRenderProcessHost : public RenderProcessHost, void SendUserScriptsUpdate(base::SharedMemory* shared_memory); // Generates a command line to be used to spawn a renderer and appends the - // results to |*command_line|. |*has_cmd_prefix| will be set if the renderer - // command line specifies a prefix which is another program that will actually - // execute the renderer (like gdb). - void AppendRendererCommandLine(CommandLine* command_line, - bool* has_cmd_prefix) const; + // results to |*command_line|. + void AppendRendererCommandLine(CommandLine* command_line) const; // Copies applicable command line switches from the given |browser_cmd| line // flags to the output |renderer_cmd| line flags. Not all switches will be @@ -134,13 +138,6 @@ class BrowserRenderProcessHost : public RenderProcessHost, void PropogateBrowserCommandLineToRenderer(const CommandLine& browser_cmd, CommandLine* renderer_cmd) const; - // Spawns the renderer process, returning the new handle on success, or 0 on - // failure. The renderer command line is given in the first argument, and - // whether a command prefix was used when generating the command line is - // speficied in the second. - base::ProcessHandle ExecuteRenderer(CommandLine* cmd_line, - bool has_cmd_prefix); - // Callers can reduce the RenderProcess' priority. // Returns true if the priority is backgrounded; false otherwise. void SetBackgrounded(bool boost); @@ -201,15 +198,18 @@ class BrowserRenderProcessHost : public RenderProcessHost, // Buffer visited links and send them to to renderer. scoped_ptr<VisitedLinkUpdater> visited_link_updater_; - // True iff the renderer is a child of a zygote process. - bool zygote_child_; - // True iff this process is being used as an extension process. Not valid // when running in single-process mode. bool extension_process_; - base::Process process_; + // Usedt to launch and terminate the process without blocking the UI thread. + scoped_ptr<ChildProcessLauncher> child_process_; + // Messages we queue while waiting for the process handle. We queue them here + // instead of in the channel so that we ensure they're sent after init related + // messages that are sent once the process handle is available. This is + // because the queued messages may have dependencies on the init messages. + std::queue<IPC::Message*> queued_messages_; DISALLOW_COPY_AND_ASSIGN(BrowserRenderProcessHost); }; |