Index: content/renderer/render_frame_impl.cc |
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
index 8fa21dc458b1cac2fe80adfc54126e31a35d352e..f24982617bb4e1aee439ff23e38f355157fc35a3 100644 |
--- a/content/renderer/render_frame_impl.cc |
+++ b/content/renderer/render_frame_impl.cc |
@@ -2021,10 +2021,18 @@ blink::WebServiceWorkerProvider* RenderFrameImpl::createServiceWorkerProvider( |
void RenderFrameImpl::didAccessInitialDocument(blink::WebLocalFrame* frame) { |
DCHECK(!frame_ || frame_ == frame); |
- // Notify the browser process that it is no longer safe to show the pending |
- // URL of the main frame, since a URL spoof is now possible. |
- if (!frame->parent() && render_view_->page_id_ == -1) |
- Send(new FrameHostMsg_DidAccessInitialDocument(routing_id_)); |
+ // If the request hasn't yet committed, notify the browser process that it is |
+ // no longer safe to show the pending URL of the main frame, since a URL spoof |
+ // is now possible. (If the request has committed, the browser already knows.) |
+ if (!frame->parent()) { |
+ DocumentState* document_state = |
+ DocumentState::FromDataSource(frame->dataSource()); |
+ NavigationState* navigation_state = document_state->navigation_state(); |
+ |
+ if (!navigation_state->request_committed()) { |
+ Send(new FrameHostMsg_DidAccessInitialDocument(routing_id_)); |
+ } |
+ } |
} |
// TODO(alexmos): Remove once Blink is updated to use the version that takes |