Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 438fe80673a6cba2a85a9221211ed6a6ebd6d2b5..87724cdba54d3201bbf98c20e476fa19a7c638ba 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -1967,7 +1967,7 @@ void RenderFrameImpl::didCommitProvisionalLoad( |
// UpdateSessionHistory and update page_id_ even in this case, so that |
// the current entry gets a state update and so that we don't send a |
// state update to the wrong entry when we swap back in. |
- if (render_view_->GetLoadingUrl(frame) != GURL(kSwappedOutURL)) { |
+ if (GetLoadingUrl() != GURL(kSwappedOutURL)) { |
// Advance our offset in session history, applying the length limit. |
// There is now no forward history. |
render_view_->history_list_offset_++; |
@@ -2010,10 +2010,20 @@ void RenderFrameImpl::didCommitProvisionalLoad( |
} |
} |
- render_view_->FrameDidCommitProvisionalLoad(frame, is_new_navigation); |
+ FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers_, |
+ DidCommitProvisionalLoad(frame, is_new_navigation)); |
FOR_EACH_OBSERVER(RenderFrameObserver, observers_, |
DidCommitProvisionalLoad(is_new_navigation)); |
+ if (!frame->parent()) { // Only for top frames. |
+ RenderThreadImpl* render_thread_impl = RenderThreadImpl::current(); |
+ if (render_thread_impl) { // Can be NULL in tests. |
+ render_thread_impl->histogram_customizer()-> |
+ RenderViewNavigatedToHost(GURL(GetLoadingUrl()).host(), |
+ RenderViewImpl::GetRenderViewCount()); |
+ } |
+ } |
+ |
// Remember that we've already processed this request, so we don't update |
// the session history again. We do this regardless of whether this is |
// a session history navigation, because if we attempted a session history |
@@ -2962,7 +2972,7 @@ void RenderFrameImpl::UpdateURL(blink::WebFrame* frame) { |
params.security_info = response.securityInfo(); |
// Set the URL to be displayed in the browser UI to the user. |
- params.url = render_view_->GetLoadingUrl(frame); |
+ params.url = GetLoadingUrl(); |
DCHECK(!is_swapped_out_ || params.url == GURL(kSwappedOutURL)); |
if (frame->document().baseURL() != params.url) |
@@ -3506,6 +3516,15 @@ RenderFrameImpl::CreateRendererFactory() { |
#endif |
} |
+GURL RenderFrameImpl::GetLoadingUrl() const { |
+ WebDataSource* ds = frame_->dataSource(); |
+ if (ds->hasUnreachableURL()) |
+ return ds->unreachableURL(); |
+ |
+ const WebURLRequest& request = ds->request(); |
+ return request.url(); |
+} |
+ |
#if defined(OS_ANDROID) |
WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( |