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

Unified Diff: content/browser/renderer_host/browser_render_process_host.h

Issue 8515027: Define the public version of the browser side RenderProcessHost interface. This interface is not ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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
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_
« no previous file with comments | « content/browser/renderer_host/backing_store_win.cc ('k') | content/browser/renderer_host/browser_render_process_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698