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

Side by Side Diff: chrome/browser/renderer_host/render_widget_helper.cc

Issue 6363002: Implement the onBeforeRetarget event of the webNavigation API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates Created 9 years, 11 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
« no previous file with comments | « chrome/browser/renderer_host/render_widget_helper.h ('k') | chrome/common/notification_type.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "chrome/browser/renderer_host/render_widget_helper.h" 5 #include "chrome/browser/renderer_host/render_widget_helper.h"
6 6
7 #include "base/eintr_wrapper.h" 7 #include "base/eintr_wrapper.h"
8 #include "base/threading/thread.h" 8 #include "base/threading/thread.h"
9 #include "chrome/browser/browser_thread.h" 9 #include "chrome/browser/browser_thread.h"
10 #include "chrome/browser/renderer_host/render_process_host.h" 10 #include "chrome/browser/renderer_host/render_process_host.h"
11 #include "chrome/browser/renderer_host/render_view_host.h" 11 #include "chrome/browser/renderer_host/render_view_host.h"
12 #include "chrome/browser/renderer_host/render_view_host_delegate.h"
12 #include "chrome/browser/renderer_host/resource_dispatcher_host.h" 13 #include "chrome/browser/renderer_host/resource_dispatcher_host.h"
14 #include "chrome/common/notification_service.h"
13 #include "chrome/common/render_messages_params.h" 15 #include "chrome/common/render_messages_params.h"
14 16
15 // A Task used with InvokeLater that we hold a pointer to in pending_paints_. 17 // A Task used with InvokeLater that we hold a pointer to in pending_paints_.
16 // Instances are deleted by MessageLoop after it calls their Run method. 18 // Instances are deleted by MessageLoop after it calls their Run method.
17 class RenderWidgetHelper::UpdateMsgProxy : public Task { 19 class RenderWidgetHelper::UpdateMsgProxy : public Task {
18 public: 20 public:
19 UpdateMsgProxy(RenderWidgetHelper* h, const IPC::Message& m) 21 UpdateMsgProxy(RenderWidgetHelper* h, const IPC::Message& m)
20 : helper(h), 22 : helper(h),
21 message(m), 23 message(m),
22 cancelled(false) { 24 cancelled(false) {
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 resource_dispatcher_host_->CancelRequestsForRoute( 195 resource_dispatcher_host_->CancelRequestsForRoute(
194 render_process_id_, render_widget_id); 196 render_process_id_, render_widget_id);
195 } 197 }
196 198
197 void RenderWidgetHelper::OnCrossSiteClosePageACK( 199 void RenderWidgetHelper::OnCrossSiteClosePageACK(
198 const ViewMsg_ClosePage_Params& params) { 200 const ViewMsg_ClosePage_Params& params) {
199 resource_dispatcher_host_->OnClosePageACK(params); 201 resource_dispatcher_host_->OnClosePageACK(params);
200 } 202 }
201 203
202 void RenderWidgetHelper::CreateNewWindow( 204 void RenderWidgetHelper::CreateNewWindow(
203 int opener_id, 205 const ViewHostMsg_CreateWindow_Params& params,
204 bool user_gesture,
205 WindowContainerType window_container_type,
206 const string16& frame_name,
207 base::ProcessHandle render_process, 206 base::ProcessHandle render_process,
208 int* route_id) { 207 int* route_id) {
209 *route_id = GetNextRoutingID(); 208 *route_id = GetNextRoutingID();
210 // Block resource requests until the view is created, since the HWND might be 209 // Block resource requests until the view is created, since the HWND might be
211 // needed if a response ends up creating a plugin. 210 // needed if a response ends up creating a plugin.
212 resource_dispatcher_host_->BlockRequestsForRoute( 211 resource_dispatcher_host_->BlockRequestsForRoute(
213 render_process_id_, *route_id); 212 render_process_id_, *route_id);
214 213
215 BrowserThread::PostTask( 214 BrowserThread::PostTask(
216 BrowserThread::UI, FROM_HERE, 215 BrowserThread::UI, FROM_HERE,
217 NewRunnableMethod( 216 NewRunnableMethod(
218 this, &RenderWidgetHelper::OnCreateWindowOnUI, opener_id, *route_id, 217 this, &RenderWidgetHelper::OnCreateWindowOnUI, params, *route_id));
219 window_container_type, frame_name));
220 } 218 }
221 219
222 void RenderWidgetHelper::OnCreateWindowOnUI( 220 void RenderWidgetHelper::OnCreateWindowOnUI(
223 int opener_id, 221 const ViewHostMsg_CreateWindow_Params& params,
224 int route_id, 222 int route_id) {
225 WindowContainerType window_container_type, 223 RenderViewHost* host =
226 string16 frame_name) { 224 RenderViewHost::FromID(render_process_id_, params.opener_id);
227 RenderViewHost* host = RenderViewHost::FromID(render_process_id_, opener_id); 225 if (host) {
228 if (host) 226 host->CreateNewWindow(route_id,
229 host->CreateNewWindow(route_id, window_container_type, frame_name); 227 params.window_container_type,
228 params.frame_name);
229 TabContents* tab_contents = host->delegate()->GetAsTabContents();
230 if (tab_contents) {
231 NotificationService::current()->Notify(
232 NotificationType::CREATING_NEW_WINDOW,
233 Source<TabContents>(tab_contents),
234 Details<const ViewHostMsg_CreateWindow_Params>(&params));
235 }
236 }
230 237
231 BrowserThread::PostTask( 238 BrowserThread::PostTask(
232 BrowserThread::IO, FROM_HERE, 239 BrowserThread::IO, FROM_HERE,
233 NewRunnableMethod(this, &RenderWidgetHelper::OnCreateWindowOnIO, 240 NewRunnableMethod(this, &RenderWidgetHelper::OnCreateWindowOnIO,
234 route_id)); 241 route_id));
235 } 242 }
236 243
237 void RenderWidgetHelper::OnCreateWindowOnIO(int route_id) { 244 void RenderWidgetHelper::OnCreateWindowOnIO(int route_id) {
238 resource_dispatcher_host_->ResumeBlockedRequestsForRoute( 245 resource_dispatcher_host_->ResumeBlockedRequestsForRoute(
239 render_process_id_, route_id); 246 render_process_id_, route_id);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 void RenderWidgetHelper::ClearAllocatedDIBs() { 330 void RenderWidgetHelper::ClearAllocatedDIBs() {
324 for (std::map<TransportDIB::Id, int>::iterator 331 for (std::map<TransportDIB::Id, int>::iterator
325 i = allocated_dibs_.begin(); i != allocated_dibs_.end(); ++i) { 332 i = allocated_dibs_.begin(); i != allocated_dibs_.end(); ++i) {
326 if (HANDLE_EINTR(close(i->second)) < 0) 333 if (HANDLE_EINTR(close(i->second)) < 0)
327 PLOG(ERROR) << "close: " << i->first; 334 PLOG(ERROR) << "close: " << i->first;
328 } 335 }
329 336
330 allocated_dibs_.clear(); 337 allocated_dibs_.clear();
331 } 338 }
332 #endif 339 #endif
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/render_widget_helper.h ('k') | chrome/common/notification_type.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698