| OLD | NEW |
| 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 #include "content/browser/renderer_host/render_widget_helper.h" | 5 #include "content/browser/renderer_host/render_widget_helper.h" |
| 6 | 6 |
| 7 #include "base/bind.h" |
| 7 #include "base/eintr_wrapper.h" | 8 #include "base/eintr_wrapper.h" |
| 8 #include "base/threading/thread.h" | 9 #include "base/threading/thread.h" |
| 9 #include "content/browser/renderer_host/render_process_host.h" | 10 #include "content/browser/renderer_host/render_process_host.h" |
| 10 #include "content/browser/renderer_host/render_view_host.h" | 11 #include "content/browser/renderer_host/render_view_host.h" |
| 11 #include "content/browser/renderer_host/resource_dispatcher_host.h" | 12 #include "content/browser/renderer_host/resource_dispatcher_host.h" |
| 12 #include "content/common/view_messages.h" | 13 #include "content/common/view_messages.h" |
| 13 #include "content/public/browser/browser_thread.h" | 14 #include "content/public/browser/browser_thread.h" |
| 14 | 15 |
| 15 using content::BrowserThread; | 16 using content::BrowserThread; |
| 16 | 17 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 int RenderWidgetHelper::GetNextRoutingID() { | 76 int RenderWidgetHelper::GetNextRoutingID() { |
| 76 return next_routing_id_.GetNext() + 1; | 77 return next_routing_id_.GetNext() + 1; |
| 77 } | 78 } |
| 78 | 79 |
| 79 void RenderWidgetHelper::CancelResourceRequests(int render_widget_id) { | 80 void RenderWidgetHelper::CancelResourceRequests(int render_widget_id) { |
| 80 if (render_process_id_ == -1) | 81 if (render_process_id_ == -1) |
| 81 return; | 82 return; |
| 82 | 83 |
| 83 BrowserThread::PostTask( | 84 BrowserThread::PostTask( |
| 84 BrowserThread::IO, FROM_HERE, | 85 BrowserThread::IO, FROM_HERE, |
| 85 NewRunnableMethod(this, | 86 base::Bind(&RenderWidgetHelper::OnCancelResourceRequests, |
| 86 &RenderWidgetHelper::OnCancelResourceRequests, | 87 this, |
| 87 render_widget_id)); | 88 render_widget_id)); |
| 88 } | 89 } |
| 89 | 90 |
| 90 void RenderWidgetHelper::CrossSiteSwapOutACK( | 91 void RenderWidgetHelper::CrossSiteSwapOutACK( |
| 91 const ViewMsg_SwapOut_Params& params) { | 92 const ViewMsg_SwapOut_Params& params) { |
| 92 BrowserThread::PostTask( | 93 BrowserThread::PostTask( |
| 93 BrowserThread::IO, FROM_HERE, | 94 BrowserThread::IO, FROM_HERE, |
| 94 NewRunnableMethod(this, | 95 base::Bind(&RenderWidgetHelper::OnCrossSiteSwapOutACK, |
| 95 &RenderWidgetHelper::OnCrossSiteSwapOutACK, | 96 this, |
| 96 params)); | 97 params)); |
| 97 } | 98 } |
| 98 | 99 |
| 99 bool RenderWidgetHelper::WaitForUpdateMsg(int render_widget_id, | 100 bool RenderWidgetHelper::WaitForUpdateMsg(int render_widget_id, |
| 100 const base::TimeDelta& max_delay, | 101 const base::TimeDelta& max_delay, |
| 101 IPC::Message* msg) { | 102 IPC::Message* msg) { |
| 102 base::TimeTicks time_start = base::TimeTicks::Now(); | 103 base::TimeTicks time_start = base::TimeTicks::Now(); |
| 103 | 104 |
| 104 for (;;) { | 105 for (;;) { |
| 105 UpdateMsgProxy* proxy = NULL; | 106 UpdateMsgProxy* proxy = NULL; |
| 106 { | 107 { |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 base::ProcessHandle render_process, | 215 base::ProcessHandle render_process, |
| 215 int* route_id) { | 216 int* route_id) { |
| 216 *route_id = GetNextRoutingID(); | 217 *route_id = GetNextRoutingID(); |
| 217 // Block resource requests until the view is created, since the HWND might be | 218 // Block resource requests until the view is created, since the HWND might be |
| 218 // needed if a response ends up creating a plugin. | 219 // needed if a response ends up creating a plugin. |
| 219 resource_dispatcher_host_->BlockRequestsForRoute( | 220 resource_dispatcher_host_->BlockRequestsForRoute( |
| 220 render_process_id_, *route_id); | 221 render_process_id_, *route_id); |
| 221 | 222 |
| 222 BrowserThread::PostTask( | 223 BrowserThread::PostTask( |
| 223 BrowserThread::UI, FROM_HERE, | 224 BrowserThread::UI, FROM_HERE, |
| 224 NewRunnableMethod( | 225 base::Bind( |
| 225 this, &RenderWidgetHelper::OnCreateWindowOnUI, params, *route_id)); | 226 &RenderWidgetHelper::OnCreateWindowOnUI, this, params, *route_id)); |
| 226 } | 227 } |
| 227 | 228 |
| 228 void RenderWidgetHelper::OnCreateWindowOnUI( | 229 void RenderWidgetHelper::OnCreateWindowOnUI( |
| 229 const ViewHostMsg_CreateWindow_Params& params, | 230 const ViewHostMsg_CreateWindow_Params& params, |
| 230 int route_id) { | 231 int route_id) { |
| 231 RenderViewHost* host = | 232 RenderViewHost* host = |
| 232 RenderViewHost::FromID(render_process_id_, params.opener_id); | 233 RenderViewHost::FromID(render_process_id_, params.opener_id); |
| 233 if (host) | 234 if (host) |
| 234 host->CreateNewWindow(route_id, params); | 235 host->CreateNewWindow(route_id, params); |
| 235 | 236 |
| 236 BrowserThread::PostTask( | 237 BrowserThread::PostTask( |
| 237 BrowserThread::IO, FROM_HERE, | 238 BrowserThread::IO, FROM_HERE, |
| 238 NewRunnableMethod(this, &RenderWidgetHelper::OnCreateWindowOnIO, | 239 base::Bind(&RenderWidgetHelper::OnCreateWindowOnIO, this, route_id)); |
| 239 route_id)); | |
| 240 } | 240 } |
| 241 | 241 |
| 242 void RenderWidgetHelper::OnCreateWindowOnIO(int route_id) { | 242 void RenderWidgetHelper::OnCreateWindowOnIO(int route_id) { |
| 243 resource_dispatcher_host_->ResumeBlockedRequestsForRoute( | 243 resource_dispatcher_host_->ResumeBlockedRequestsForRoute( |
| 244 render_process_id_, route_id); | 244 render_process_id_, route_id); |
| 245 } | 245 } |
| 246 | 246 |
| 247 void RenderWidgetHelper::CreateNewWidget(int opener_id, | 247 void RenderWidgetHelper::CreateNewWidget(int opener_id, |
| 248 WebKit::WebPopupType popup_type, | 248 WebKit::WebPopupType popup_type, |
| 249 int* route_id) { | 249 int* route_id) { |
| 250 *route_id = GetNextRoutingID(); | 250 *route_id = GetNextRoutingID(); |
| 251 BrowserThread::PostTask( | 251 BrowserThread::PostTask( |
| 252 BrowserThread::UI, FROM_HERE, | 252 BrowserThread::UI, FROM_HERE, |
| 253 NewRunnableMethod( | 253 base::Bind( |
| 254 this, &RenderWidgetHelper::OnCreateWidgetOnUI, opener_id, *route_id, | 254 &RenderWidgetHelper::OnCreateWidgetOnUI, this, opener_id, *route_id, |
| 255 popup_type)); | 255 popup_type)); |
| 256 } | 256 } |
| 257 | 257 |
| 258 void RenderWidgetHelper::CreateNewFullscreenWidget(int opener_id, | 258 void RenderWidgetHelper::CreateNewFullscreenWidget(int opener_id, |
| 259 int* route_id) { | 259 int* route_id) { |
| 260 *route_id = GetNextRoutingID(); | 260 *route_id = GetNextRoutingID(); |
| 261 BrowserThread::PostTask( | 261 BrowserThread::PostTask( |
| 262 BrowserThread::UI, FROM_HERE, | 262 BrowserThread::UI, FROM_HERE, |
| 263 NewRunnableMethod( | 263 base::Bind( |
| 264 this, &RenderWidgetHelper::OnCreateFullscreenWidgetOnUI, | 264 &RenderWidgetHelper::OnCreateFullscreenWidgetOnUI, this, |
| 265 opener_id, *route_id)); | 265 opener_id, *route_id)); |
| 266 } | 266 } |
| 267 | 267 |
| 268 void RenderWidgetHelper::OnCreateWidgetOnUI( | 268 void RenderWidgetHelper::OnCreateWidgetOnUI( |
| 269 int opener_id, int route_id, WebKit::WebPopupType popup_type) { | 269 int opener_id, int route_id, WebKit::WebPopupType popup_type) { |
| 270 RenderViewHost* host = RenderViewHost::FromID(render_process_id_, opener_id); | 270 RenderViewHost* host = RenderViewHost::FromID(render_process_id_, opener_id); |
| 271 if (host) | 271 if (host) |
| 272 host->CreateNewWidget(route_id, popup_type); | 272 host->CreateNewWidget(route_id, popup_type); |
| 273 } | 273 } |
| 274 | 274 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 gfx::PluginWindowHandle RenderWidgetHelper::LookupCompositingSurface( | 349 gfx::PluginWindowHandle RenderWidgetHelper::LookupCompositingSurface( |
| 350 int render_widget_id) { | 350 int render_widget_id) { |
| 351 base::AutoLock locked(view_compositing_surface_map_lock_); | 351 base::AutoLock locked(view_compositing_surface_map_lock_); |
| 352 ViewCompositingSurfaceMap::iterator it = | 352 ViewCompositingSurfaceMap::iterator it = |
| 353 view_compositing_surface_map_.find(render_widget_id); | 353 view_compositing_surface_map_.find(render_widget_id); |
| 354 if (it == view_compositing_surface_map_.end()) | 354 if (it == view_compositing_surface_map_.end()) |
| 355 return gfx::kNullPluginWindow; | 355 return gfx::kNullPluginWindow; |
| 356 | 356 |
| 357 return it->second; | 357 return it->second; |
| 358 } | 358 } |
| OLD | NEW |