summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host/browser_render_process_host.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/renderer_host/browser_render_process_host.h')
-rw-r--r--chrome/browser/renderer_host/browser_render_process_host.h34
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);
};