Index: content/browser/renderer_host/browser_render_process_host.h |
=================================================================== |
--- content/browser/renderer_host/browser_render_process_host.h (revision 110552) |
+++ content/browser/renderer_host/browser_render_process_host.h (working copy) |
@@ -1,176 +0,0 @@ |
-// Copyright (c) 2011 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_RENDERER_HOST_BROWSER_RENDER_PROCESS_HOST_H_ |
-#define CONTENT_BROWSER_RENDERER_HOST_BROWSER_RENDER_PROCESS_HOST_H_ |
-#pragma once |
- |
-#include <map> |
-#include <queue> |
-#include <string> |
- |
-#include "base/memory/scoped_ptr.h" |
-#include "base/process.h" |
-#include "base/synchronization/waitable_event_watcher.h" |
-#include "base/timer.h" |
-#include "content/browser/child_process_launcher.h" |
-#include "content/common/content_export.h" |
-#include "content/browser/renderer_host/render_process_host.h" |
-#include "ui/gfx/surface/transport_dib.h" |
- |
-class CommandLine; |
-class RendererMainThread; |
-class RenderWidgetHelper; |
- |
-namespace base { |
-class WaitableEvent; |
-} |
- |
-// Implements a concrete RenderProcessHost for the browser process for talking |
-// to actual renderer processes (as opposed to mocks). |
-// |
-// Represents the browser side of the browser <--> renderer communication |
-// channel. There will be one RenderProcessHost per renderer process. |
-// |
-// This object is refcounted so that it can release its resources when all |
-// hosts using it go away. |
-// |
-// This object communicates back and forth with the RenderProcess object |
-// running in the renderer process. Each RenderProcessHost and RenderProcess |
-// keeps a list of RenderView (renderer) and TabContents (browser) which |
-// are correlated with IDs. This way, the Views and the corresponding ViewHosts |
-// communicate through the two process objects. |
-class CONTENT_EXPORT BrowserRenderProcessHost |
- : public RenderProcessHost, |
- public ChildProcessLauncher::Client, |
- public base::WaitableEventWatcher::Delegate { |
- public: |
- explicit BrowserRenderProcessHost(content::BrowserContext* browser_context); |
- virtual ~BrowserRenderProcessHost(); |
- |
- // RenderProcessHost implementation (public portion). |
- virtual void EnableSendQueue() OVERRIDE; |
- virtual bool Init(bool is_accessibility_enabled) OVERRIDE; |
- virtual int GetNextRoutingID() OVERRIDE; |
- virtual void CancelResourceRequests(int render_widget_id) OVERRIDE; |
- virtual void CrossSiteSwapOutACK( |
- const ViewMsg_SwapOut_Params& params) OVERRIDE; |
- virtual bool WaitForUpdateMsg(int render_widget_id, |
- const base::TimeDelta& max_delay, |
- IPC::Message* msg) OVERRIDE; |
- virtual void ReceivedBadMessage() OVERRIDE; |
- virtual void WidgetRestored() OVERRIDE; |
- virtual void WidgetHidden() OVERRIDE; |
- virtual int VisibleWidgetCount() const OVERRIDE; |
- virtual bool FastShutdownIfPossible() OVERRIDE; |
- virtual void DumpHandles() OVERRIDE; |
- virtual base::ProcessHandle GetHandle() OVERRIDE; |
- virtual TransportDIB* GetTransportDIB(TransportDIB::Id dib_id) OVERRIDE; |
- virtual void SetCompositingSurface( |
- int render_widget_id, |
- gfx::PluginWindowHandle compositing_surface) OVERRIDE; |
- |
- // IPC::Channel::Sender via RenderProcessHost. |
- virtual bool Send(IPC::Message* msg) OVERRIDE; |
- |
- // IPC::Channel::Listener via RenderProcessHost. |
- virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; |
- virtual void OnChannelConnected(int32 peer_pid) OVERRIDE; |
- virtual void OnChannelError() OVERRIDE; |
- |
- // ChildProcessLauncher::Client implementation. |
- virtual void OnProcessLaunched() OVERRIDE; |
- |
- // base::WaitableEventWatcher::Delegate implementation. |
- virtual void OnWaitableEventSignaled( |
- base::WaitableEvent* waitable_event) OVERRIDE; |
- |
- private: |
- friend class VisitRelayingRenderProcessHost; |
- |
- // Creates and adds the IO thread message filters. |
- void CreateMessageFilters(); |
- |
- // Control message handlers. |
- void OnShutdownRequest(); |
- void OnDumpHandlesDone(); |
- void SuddenTerminationChanged(bool enabled); |
- void OnUserMetricsRecordAction(const std::string& action); |
- void OnRevealFolderInOS(const FilePath& path); |
- void OnSavedPageAsMHTML(int job_id, int64 mhtml_file_size); |
- |
- // Generates a command line to be used to spawn a renderer and appends the |
- // 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 |
- // copied over. |
- void PropagateBrowserCommandLineToRenderer(const CommandLine& browser_cmd, |
- CommandLine* renderer_cmd) const; |
- |
- // Callers can reduce the RenderProcess' priority. |
- void SetBackgrounded(bool backgrounded); |
- |
- // Handle termination of our process. |was_alive| indicates that when we |
- // tried to retrieve the exit code the process had not finished yet. |
- void ProcessDied(base::ProcessHandle handle, |
- base::TerminationStatus status, |
- int exit_code, |
- bool was_alive); |
- |
- // The count of currently visible widgets. Since the host can be a container |
- // for multiple widgets, it uses this count to determine when it should be |
- // backgrounded. |
- int32 visible_widgets_; |
- |
- // Does this process have backgrounded priority. |
- bool backgrounded_; |
- |
- // Used to allow a RenderWidgetHost to intercept various messages on the |
- // IO thread. |
- scoped_refptr<RenderWidgetHelper> widget_helper_; |
- |
- // A map of transport DIB ids to cached TransportDIBs |
- std::map<TransportDIB::Id, TransportDIB*> cached_dibs_; |
- enum { |
- // This is the maximum size of |cached_dibs_| |
- MAX_MAPPED_TRANSPORT_DIBS = 3, |
- }; |
- |
- // Map a transport DIB from its Id and return it. Returns NULL on error. |
- TransportDIB* MapTransportDIB(TransportDIB::Id dib_id); |
- |
- void ClearTransportDIBCache(); |
- // This is used to clear our cache five seconds after the last use. |
- base::DelayTimer<BrowserRenderProcessHost> cached_dibs_cleaner_; |
- |
- // Used in single-process mode. |
- scoped_ptr<RendererMainThread> in_process_renderer_; |
- |
- // True if this prcoess should have accessibility enabled; |
- bool accessibility_enabled_; |
- |
- // True after Init() has been called. We can't just check channel_ because we |
- // also reset that in the case of process termination. |
- bool is_initialized_; |
- |
- // Used to launch and terminate the process without blocking the UI thread. |
- scoped_ptr<ChildProcessLauncher> child_process_launcher_; |
- |
- // 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_; |
- |
-#if defined(OS_WIN) |
- // Used to wait until the renderer dies to get an accurrate exit code. |
- base::WaitableEventWatcher child_process_watcher_; |
-#endif |
- |
- DISALLOW_COPY_AND_ASSIGN(BrowserRenderProcessHost); |
-}; |
- |
-#endif // CONTENT_BROWSER_RENDERER_HOST_BROWSER_RENDER_PROCESS_HOST_H_ |