From 78a3a6f8ea98f45a4b8f41f1dfc067f913815f43 Mon Sep 17 00:00:00 2001 From: "darin@chromium.org" Date: Thu, 2 Jul 2009 16:15:01 +0000 Subject: Set the WebViewDelegate earlier during WebView creation to ensure that DidCreateDataSource gets called when constructing the initial data source for the WebView's main frame. This ensures that the NavigationState associated with a WebDataSource can never be null. I went ahead and removed some of the null-checks that were added to avoid other related crashes. (To fix bug 15594, I really really didn't want to add another one of those null checks.) BUG=15594 TEST=partially covered by existing ui tests R=dglazkov Review URL: http://codereview.chromium.org/150208 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19818 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/renderer/render_view.cc | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) (limited to 'chrome') diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index f59cfce..0d65aac 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -1076,18 +1076,15 @@ void RenderView::DidPaint() { WebDataSource* ds = main_frame->GetDataSource(); NavigationState* navigation_state = NavigationState::FromDataSource(ds); - // TODO(darin): It should not be possible for navigation_state to - // be null here! But the UI test DownloadTest.IncognitoDownload - // can cause it to happen. - if (navigation_state) { - Time now = Time::Now(); - if (navigation_state->first_paint_time().is_null()) { - navigation_state->set_first_paint_time(now); - } - if (navigation_state->first_paint_after_load_time().is_null() && - !navigation_state->finish_load_time().is_null()) { - navigation_state->set_first_paint_after_load_time(now); - } + DCHECK(navigation_state); + + Time now = Time::Now(); + if (navigation_state->first_paint_time().is_null()) { + navigation_state->set_first_paint_time(now); + } + if (navigation_state->first_paint_after_load_time().is_null() && + !navigation_state->finish_load_time().is_null()) { + navigation_state->set_first_paint_after_load_time(now); } } @@ -1318,10 +1315,8 @@ void RenderView::DidReceiveTitle(WebView* webview, void RenderView::DidFinishLoadForFrame(WebView* webview, WebFrame* frame) { WebDataSource* ds = frame->GetDataSource(); NavigationState* navigation_state = NavigationState::FromDataSource(ds); - // TODO(darin): It should not be possible for navigation_state to be null - // here! - if (navigation_state) - navigation_state->set_finish_load_time(Time::Now()); + DCHECK(navigation_state); + navigation_state->set_finish_load_time(Time::Now()); } void RenderView::DidFailLoadWithError(WebView* webview, @@ -1336,10 +1331,8 @@ void RenderView::DidFinishDocumentLoadForFrame(WebView* webview, WebFrame* frame) { WebDataSource* ds = frame->GetDataSource(); NavigationState* navigation_state = NavigationState::FromDataSource(ds); - // TODO(darin): It should not be possible for navigation_state to be null - // here! - if (navigation_state) - navigation_state->set_finish_document_load_time(Time::Now()); + DCHECK(navigation_state); + navigation_state->set_finish_document_load_time(Time::Now()); Send(new ViewHostMsg_DocumentLoadedInFrame(routing_id_)); @@ -2727,6 +2720,7 @@ void RenderView::DidAddHistoryItem() { DCHECK(ds != NULL); NavigationState* navigation_state = NavigationState::FromDataSource(ds); + DCHECK(navigation_state); if (navigation_state->transition_type() == PageTransition::START_PAGE) return; -- cgit v1.1