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

Side by Side Diff: content/browser/renderer_host/render_process_host_impl.cc

Issue 396483003: Separate ResizeHelper from RenderWidgetHelper (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make dtor order more robust Created 6 years, 5 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // Represents the browser side of the browser <--> renderer communication 5 // Represents the browser side of the browser <--> renderer communication
6 // channel. There will be one RenderProcessHost per renderer process. 6 // channel. There will be one RenderProcessHost per renderer process.
7 7
8 #include "content/browser/renderer_host/render_process_host_impl.h" 8 #include "content/browser/renderer_host/render_process_host_impl.h"
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 932 matching lines...) Expand 10 before | Expand all | Expand 10 after
943 943
944 void RenderProcessHostImpl::AddObserver(RenderProcessHostObserver* observer) { 944 void RenderProcessHostImpl::AddObserver(RenderProcessHostObserver* observer) {
945 observers_.AddObserver(observer); 945 observers_.AddObserver(observer);
946 } 946 }
947 947
948 void RenderProcessHostImpl::RemoveObserver( 948 void RenderProcessHostImpl::RemoveObserver(
949 RenderProcessHostObserver* observer) { 949 RenderProcessHostObserver* observer) {
950 observers_.RemoveObserver(observer); 950 observers_.RemoveObserver(observer);
951 } 951 }
952 952
953 bool RenderProcessHostImpl::WaitForBackingStoreMsg(
954 int render_widget_id,
955 const base::TimeDelta& max_delay,
956 IPC::Message* msg) {
957 // The post task to this thread with the process id could be in queue, and we
958 // don't want to dispatch a message before then since it will need the handle.
959 if (child_process_launcher_.get() && child_process_launcher_->IsStarting())
960 return false;
961
962 return widget_helper_->WaitForBackingStoreMsg(render_widget_id,
963 max_delay, msg);
964 }
965
966 void RenderProcessHostImpl::ReceivedBadMessage() { 953 void RenderProcessHostImpl::ReceivedBadMessage() {
967 CommandLine* command_line = CommandLine::ForCurrentProcess(); 954 CommandLine* command_line = CommandLine::ForCurrentProcess();
968 if (command_line->HasSwitch(switches::kDisableKillAfterBadIPC)) 955 if (command_line->HasSwitch(switches::kDisableKillAfterBadIPC))
969 return; 956 return;
970 957
971 if (run_renderer_in_process()) { 958 if (run_renderer_in_process()) {
972 // In single process mode it is better if we don't suicide but just 959 // In single process mode it is better if we don't suicide but just
973 // crash. 960 // crash.
974 CHECK(false); 961 CHECK(false);
975 } 962 }
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
1398 // Dispatch incoming messages to the appropriate IPC::Listener. 1385 // Dispatch incoming messages to the appropriate IPC::Listener.
1399 IPC::Listener* listener = listeners_.Lookup(msg.routing_id()); 1386 IPC::Listener* listener = listeners_.Lookup(msg.routing_id());
1400 if (!listener) { 1387 if (!listener) {
1401 if (msg.is_sync()) { 1388 if (msg.is_sync()) {
1402 // The listener has gone away, so we must respond or else the caller will 1389 // The listener has gone away, so we must respond or else the caller will
1403 // hang waiting for a reply. 1390 // hang waiting for a reply.
1404 IPC::Message* reply = IPC::SyncMessage::GenerateReply(&msg); 1391 IPC::Message* reply = IPC::SyncMessage::GenerateReply(&msg);
1405 reply->set_reply_error(); 1392 reply->set_reply_error();
1406 Send(reply); 1393 Send(reply);
1407 } 1394 }
1408
1409 // If this is a SwapBuffers, we need to ack it if we're not going to handle
1410 // it so that the GPU process doesn't get stuck in unscheduled state.
1411 IPC_BEGIN_MESSAGE_MAP(RenderProcessHostImpl, msg)
1412 IPC_MESSAGE_HANDLER(ViewHostMsg_CompositorSurfaceBuffersSwapped,
1413 OnCompositorSurfaceBuffersSwappedNoHost)
1414 IPC_END_MESSAGE_MAP()
1415 return true; 1395 return true;
1416 } 1396 }
1417 return listener->OnMessageReceived(msg); 1397 return listener->OnMessageReceived(msg);
1418 } 1398 }
1419 1399
1420 void RenderProcessHostImpl::OnChannelConnected(int32 peer_pid) { 1400 void RenderProcessHostImpl::OnChannelConnected(int32 peer_pid) {
1421 #if defined(IPC_MESSAGE_LOG_ENABLED) 1401 #if defined(IPC_MESSAGE_LOG_ENABLED)
1422 Send(new ChildProcessMsg_SetIPCLoggingEnabled( 1402 Send(new ChildProcessMsg_SetIPCLoggingEnabled(
1423 IPC::Logging::GetInstance()->Enabled())); 1403 IPC::Logging::GetInstance()->Enabled()));
1424 #endif 1404 #endif
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
2135 (GetUserData(kSessionStorageHolderKey)); 2115 (GetUserData(kSessionStorageHolderKey));
2136 if (!holder) 2116 if (!holder)
2137 return; 2117 return;
2138 holder->Release(old_route_id); 2118 holder->Release(old_route_id);
2139 } 2119 }
2140 2120
2141 void RenderProcessHostImpl::OnSavedPageAsMHTML(int job_id, int64 data_size) { 2121 void RenderProcessHostImpl::OnSavedPageAsMHTML(int job_id, int64 data_size) {
2142 MHTMLGenerationManager::GetInstance()->MHTMLGenerated(job_id, data_size); 2122 MHTMLGenerationManager::GetInstance()->MHTMLGenerated(job_id, data_size);
2143 } 2123 }
2144 2124
2145 void RenderProcessHostImpl::OnCompositorSurfaceBuffersSwappedNoHost(
2146 const ViewHostMsg_CompositorSurfaceBuffersSwapped_Params& params) {
2147 TRACE_EVENT0("renderer_host",
2148 "RenderWidgetHostImpl::OnCompositorSurfaceBuffersSwappedNoHost");
2149 if (!ui::LatencyInfo::Verify(params.latency_info,
2150 "ViewHostMsg_CompositorSurfaceBuffersSwapped"))
2151 return;
2152 AcceleratedSurfaceMsg_BufferPresented_Params ack_params;
2153 ack_params.sync_point = 0;
2154 RenderWidgetHostImpl::AcknowledgeBufferPresent(params.route_id,
2155 params.gpu_process_host_id,
2156 ack_params);
2157 }
2158
2159 void RenderProcessHostImpl::OnGpuSwitching() { 2125 void RenderProcessHostImpl::OnGpuSwitching() {
2160 // We are updating all widgets including swapped out ones. 2126 // We are updating all widgets including swapped out ones.
2161 scoped_ptr<RenderWidgetHostIterator> widgets( 2127 scoped_ptr<RenderWidgetHostIterator> widgets(
2162 RenderWidgetHostImpl::GetAllRenderWidgetHosts()); 2128 RenderWidgetHostImpl::GetAllRenderWidgetHosts());
2163 while (RenderWidgetHost* widget = widgets->GetNextHost()) { 2129 while (RenderWidgetHost* widget = widgets->GetNextHost()) {
2164 if (!widget->IsRenderView()) 2130 if (!widget->IsRenderView())
2165 continue; 2131 continue;
2166 2132
2167 // Skip widgets in other processes. 2133 // Skip widgets in other processes.
2168 if (widget->GetProcess()->GetID() != GetID()) 2134 if (widget->GetProcess()->GetID() != GetID())
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
2362 void RenderProcessHostImpl::GpuMemoryBufferAllocated( 2328 void RenderProcessHostImpl::GpuMemoryBufferAllocated(
2363 IPC::Message* reply, 2329 IPC::Message* reply,
2364 const gfx::GpuMemoryBufferHandle& handle) { 2330 const gfx::GpuMemoryBufferHandle& handle) {
2365 DCHECK_CURRENTLY_ON(BrowserThread::UI); 2331 DCHECK_CURRENTLY_ON(BrowserThread::UI);
2366 ChildProcessHostMsg_SyncAllocateGpuMemoryBuffer::WriteReplyParams(reply, 2332 ChildProcessHostMsg_SyncAllocateGpuMemoryBuffer::WriteReplyParams(reply,
2367 handle); 2333 handle);
2368 Send(reply); 2334 Send(reply);
2369 } 2335 }
2370 2336
2371 } // namespace content 2337 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_process_host_impl.h ('k') | content/browser/renderer_host/render_widget_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698