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

Side by Side Diff: webkit/glue/webview_impl.cc

Issue 150208: Set the WebViewDelegate earlier during WebView creation to ensure that... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 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 | Annotate | Revision Log
« no previous file with comments | « chrome/renderer/render_view.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2007 Google Inc. All Rights Reserved. 2 * Copyright 2007 Google Inc. All Rights Reserved.
3 * 3 *
4 * Portions Copyright (C) 2006 Apple Computer, Inc. All rights reserved. 4 * Portions Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
5 * 5 *
6 * ***** BEGIN LICENSE BLOCK ***** 6 * ***** BEGIN LICENSE BLOCK *****
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
10 * are met: 10 * are met:
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 306
307 // WebView ---------------------------------------------------------------- 307 // WebView ----------------------------------------------------------------
308 308
309 /*static*/ 309 /*static*/
310 WebView* WebView::Create(WebViewDelegate* delegate, 310 WebView* WebView::Create(WebViewDelegate* delegate,
311 const WebPreferences& prefs) { 311 const WebPreferences& prefs) {
312 WebViewImpl* instance = new WebViewImpl(); 312 WebViewImpl* instance = new WebViewImpl();
313 instance->AddRef(); 313 instance->AddRef();
314 instance->SetPreferences(prefs); 314 instance->SetPreferences(prefs);
315 315
316 // Here, we construct a new WebFrameImpl with a reference count of 0. That 316 // NOTE: The WebFrameImpl takes a reference to itself within InitMainFrame
317 // is bumped up to 1 by InitMainFrame. The reference count is decremented 317 // and releases that reference once the corresponding Frame is destroyed.
318 // when the corresponding WebCore::Frame object is destroyed. 318 scoped_refptr<WebFrameImpl> main_frame = new WebFrameImpl();
319 WebFrameImpl* main_frame = new WebFrameImpl(); 319
320 // Set the delegate before initializing the frame, so that notifications like
321 // DidCreateDataSource make their way to the client.
322 instance->delegate_ = delegate;
320 main_frame->InitMainFrame(instance); 323 main_frame->InitMainFrame(instance);
321 324
322 // Set the delegate after initializing the main frame, to avoid trying to
323 // respond to notifications before we're fully initialized.
324 instance->delegate_ = delegate;
325
326 WebDevToolsAgentDelegate* tools_delegate = 325 WebDevToolsAgentDelegate* tools_delegate =
327 delegate->GetWebDevToolsAgentDelegate(); 326 delegate->GetWebDevToolsAgentDelegate();
328 if (tools_delegate) { 327 if (tools_delegate) {
329 instance->devtools_agent_.reset( 328 instance->devtools_agent_.reset(
330 new WebDevToolsAgentImpl(instance, tools_delegate)); 329 new WebDevToolsAgentImpl(instance, tools_delegate));
331 } 330 }
332 331
333 // Restrict the access to the local file system 332 // Restrict the access to the local file system
334 // (see WebView.mm WebView::_commonInitializationWithFrameName). 333 // (see WebView.mm WebView::_commonInitializationWithFrameName).
335 FrameLoader::setLocalLoadPolicy( 334 FrameLoader::setLocalLoadPolicy(
(...skipping 1605 matching lines...) Expand 10 before | Expand all | Expand 10 after
1941 1940
1942 return document->focusedNode(); 1941 return document->focusedNode();
1943 } 1942 }
1944 1943
1945 HitTestResult WebViewImpl::HitTestResultForWindowPos(const IntPoint& pos) { 1944 HitTestResult WebViewImpl::HitTestResultForWindowPos(const IntPoint& pos) {
1946 IntPoint doc_point( 1945 IntPoint doc_point(
1947 page_->mainFrame()->view()->windowToContents(pos)); 1946 page_->mainFrame()->view()->windowToContents(pos));
1948 return page_->mainFrame()->eventHandler()-> 1947 return page_->mainFrame()->eventHandler()->
1949 hitTestResultAtPoint(doc_point, false); 1948 hitTestResultAtPoint(doc_point, false);
1950 } 1949 }
OLDNEW
« no previous file with comments | « chrome/renderer/render_view.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698