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 |