diff options
author | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-02 16:15:01 +0000 |
---|---|---|
committer | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-02 16:15:01 +0000 |
commit | 78a3a6f8ea98f45a4b8f41f1dfc067f913815f43 (patch) | |
tree | f3f97bb15f24be4bbff09c2f73fefc6cd5dc2fe2 /chrome/renderer/render_view.cc | |
parent | 574d5c165f055e21a93ac97e8f5f66a2aea5b65a (diff) | |
download | chromium_src-78a3a6f8ea98f45a4b8f41f1dfc067f913815f43.zip chromium_src-78a3a6f8ea98f45a4b8f41f1dfc067f913815f43.tar.gz chromium_src-78a3a6f8ea98f45a4b8f41f1dfc067f913815f43.tar.bz2 |
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
Diffstat (limited to 'chrome/renderer/render_view.cc')
-rw-r--r-- | chrome/renderer/render_view.cc | 34 |
1 files changed, 14 insertions, 20 deletions
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; |