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

Side by Side Diff: content/browser/renderer_host/browser_render_process_host.h

Issue 6927014: Avoid exiting the renderer process if it has a pending render view. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address feedback. Created 9 years, 7 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_BROWSER_RENDERER_HOST_BROWSER_RENDER_PROCESS_HOST_H_ 5 #ifndef CONTENT_BROWSER_RENDERER_HOST_BROWSER_RENDER_PROCESS_HOST_H_
6 #define CONTENT_BROWSER_RENDERER_HOST_BROWSER_RENDER_PROCESS_HOST_H_ 6 #define CONTENT_BROWSER_RENDERER_HOST_BROWSER_RENDER_PROCESS_HOST_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map> 9 #include <map>
10 #include <queue> 10 #include <queue>
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 virtual int GetNextRoutingID(); 51 virtual int GetNextRoutingID();
52 virtual void CancelResourceRequests(int render_widget_id); 52 virtual void CancelResourceRequests(int render_widget_id);
53 virtual void CrossSiteClosePageACK(const ViewMsg_ClosePage_Params& params); 53 virtual void CrossSiteClosePageACK(const ViewMsg_ClosePage_Params& params);
54 virtual bool WaitForUpdateMsg(int render_widget_id, 54 virtual bool WaitForUpdateMsg(int render_widget_id,
55 const base::TimeDelta& max_delay, 55 const base::TimeDelta& max_delay,
56 IPC::Message* msg); 56 IPC::Message* msg);
57 virtual void ReceivedBadMessage(); 57 virtual void ReceivedBadMessage();
58 virtual void WidgetRestored(); 58 virtual void WidgetRestored();
59 virtual void WidgetHidden(); 59 virtual void WidgetHidden();
60 virtual int VisibleWidgetCount() const; 60 virtual int VisibleWidgetCount() const;
61 virtual void AddPendingView();
62 virtual void RemovePendingView();
61 virtual bool FastShutdownIfPossible(); 63 virtual bool FastShutdownIfPossible();
62 virtual bool SendWithTimeout(IPC::Message* msg, int timeout_ms); 64 virtual bool SendWithTimeout(IPC::Message* msg, int timeout_ms);
63 virtual base::ProcessHandle GetHandle(); 65 virtual base::ProcessHandle GetHandle();
64 virtual TransportDIB* GetTransportDIB(TransportDIB::Id dib_id); 66 virtual TransportDIB* GetTransportDIB(TransportDIB::Id dib_id);
65 67
66 // IPC::Channel::Sender via RenderProcessHost. 68 // IPC::Channel::Sender via RenderProcessHost.
67 virtual bool Send(IPC::Message* msg); 69 virtual bool Send(IPC::Message* msg);
68 70
69 // IPC::Channel::Listener via RenderProcessHost. 71 // IPC::Channel::Listener via RenderProcessHost.
70 virtual bool OnMessageReceived(const IPC::Message& msg); 72 virtual bool OnMessageReceived(const IPC::Message& msg);
71 virtual void OnChannelConnected(int32 peer_pid); 73 virtual void OnChannelConnected(int32 peer_pid);
72 virtual void OnChannelError(); 74 virtual void OnChannelError();
73 75
74 // ChildProcessLauncher::Client implementation. 76 // ChildProcessLauncher::Client implementation.
75 virtual void OnProcessLaunched(); 77 virtual void OnProcessLaunched();
76 78
77 private: 79 private:
78 friend class VisitRelayingRenderProcessHost; 80 friend class VisitRelayingRenderProcessHost;
79 81
80 // Creates and adds the IO thread message filters. 82 // Creates and adds the IO thread message filters.
81 void CreateMessageFilters(); 83 void CreateMessageFilters();
82 84
83 // Control message handlers. 85 // Control message handlers.
86 void OnShutdownRequest();
84 void OnUpdatedCacheStats(const WebKit::WebCache::UsageStats& stats); 87 void OnUpdatedCacheStats(const WebKit::WebCache::UsageStats& stats);
85 void SuddenTerminationChanged(bool enabled); 88 void SuddenTerminationChanged(bool enabled);
86 void OnUserMetricsRecordAction(const std::string& action); 89 void OnUserMetricsRecordAction(const std::string& action);
87 90
88 // Generates a command line to be used to spawn a renderer and appends the 91 // Generates a command line to be used to spawn a renderer and appends the
89 // results to |*command_line|. 92 // results to |*command_line|.
90 void AppendRendererCommandLine(CommandLine* command_line) const; 93 void AppendRendererCommandLine(CommandLine* command_line) const;
91 94
92 // Copies applicable command line switches from the given |browser_cmd| line 95 // Copies applicable command line switches from the given |browser_cmd| line
93 // flags to the output |renderer_cmd| line flags. Not all switches will be 96 // flags to the output |renderer_cmd| line flags. Not all switches will be
94 // copied over. 97 // copied over.
95 void PropagateBrowserCommandLineToRenderer(const CommandLine& browser_cmd, 98 void PropagateBrowserCommandLineToRenderer(const CommandLine& browser_cmd,
96 CommandLine* renderer_cmd) const; 99 CommandLine* renderer_cmd) const;
97 100
98 // Callers can reduce the RenderProcess' priority. 101 // Callers can reduce the RenderProcess' priority.
99 void SetBackgrounded(bool backgrounded); 102 void SetBackgrounded(bool backgrounded);
100 103
101 // The count of currently visible widgets. Since the host can be a container 104 // The count of currently visible widgets. Since the host can be a container
102 // for multiple widgets, it uses this count to determine when it should be 105 // for multiple widgets, it uses this count to determine when it should be
103 // backgrounded. 106 // backgrounded.
104 int32 visible_widgets_; 107 int32 visible_widgets_;
105 108
109 // The count of currently swapped out but pending RenderViews. We have
110 // started to swap these in, so the renderer process should not exit if
111 // this count is non-zero.
112 int32 pending_views_;
113
106 // Does this process have backgrounded priority. 114 // Does this process have backgrounded priority.
107 bool backgrounded_; 115 bool backgrounded_;
108 116
109 // Used to allow a RenderWidgetHost to intercept various messages on the 117 // Used to allow a RenderWidgetHost to intercept various messages on the
110 // IO thread. 118 // IO thread.
111 scoped_refptr<RenderWidgetHelper> widget_helper_; 119 scoped_refptr<RenderWidgetHelper> widget_helper_;
112 120
113 // A map of transport DIB ids to cached TransportDIBs 121 // A map of transport DIB ids to cached TransportDIBs
114 std::map<TransportDIB::Id, TransportDIB*> cached_dibs_; 122 std::map<TransportDIB::Id, TransportDIB*> cached_dibs_;
115 enum { 123 enum {
(...skipping 24 matching lines...) Expand all
140 // Messages we queue while waiting for the process handle. We queue them here 148 // Messages we queue while waiting for the process handle. We queue them here
141 // instead of in the channel so that we ensure they're sent after init related 149 // instead of in the channel so that we ensure they're sent after init related
142 // messages that are sent once the process handle is available. This is 150 // messages that are sent once the process handle is available. This is
143 // because the queued messages may have dependencies on the init messages. 151 // because the queued messages may have dependencies on the init messages.
144 std::queue<IPC::Message*> queued_messages_; 152 std::queue<IPC::Message*> queued_messages_;
145 153
146 DISALLOW_COPY_AND_ASSIGN(BrowserRenderProcessHost); 154 DISALLOW_COPY_AND_ASSIGN(BrowserRenderProcessHost);
147 }; 155 };
148 156
149 #endif // CONTENT_BROWSER_RENDERER_HOST_BROWSER_RENDER_PROCESS_HOST_H_ 157 #endif // CONTENT_BROWSER_RENDERER_HOST_BROWSER_RENDER_PROCESS_HOST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698