summaryrefslogtreecommitdiffstats
path: root/content/browser/frame_host/navigation_controller_impl.cc
diff options
context:
space:
mode:
authorjaphet@chromium.org <japhet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-31 04:07:33 +0000
committerjaphet@chromium.org <japhet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-31 04:07:33 +0000
commitff64b3e804f47534554f654f523c7abfbe45b88a (patch)
tree9f950138c6d8c0cd55ce26f0a5549ee08e95b37e /content/browser/frame_host/navigation_controller_impl.cc
parent72eabec8fb00402cae97f3b7854257bb62f0ea62 (diff)
downloadchromium_src-ff64b3e804f47534554f654f523c7abfbe45b88a.zip
chromium_src-ff64b3e804f47534554f654f523c7abfbe45b88a.tar.gz
chromium_src-ff64b3e804f47534554f654f523c7abfbe45b88a.tar.bz2
Immediately SetTitle on a new NavigationEntry created via history.pushState
We already have the title available (because we're not throwing away the old document in the renderer process), and if we don't immediately set the title, there is a race condition where the title may be updated in the ui before the renderer process sends a FrameHostMsg_UpdateTitle IPC. In this case, the title will flicker to the page url and immeidately back to the proper title. BUG=375455 TEST=NavigationControllerTest.PushStateUpdatesTitle Review URL: https://codereview.chromium.org/308143004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@274006 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/frame_host/navigation_controller_impl.cc')
-rw-r--r--content/browser/frame_host/navigation_controller_impl.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc
index 5469151..463d186b 100644
--- a/content/browser/frame_host/navigation_controller_impl.cc
+++ b/content/browser/frame_host/navigation_controller_impl.cc
@@ -1057,6 +1057,12 @@ void NavigationControllerImpl::RendererDidNavigateToNewPage(
new_entry->SetOriginalRequestURL(params.original_request_url);
new_entry->SetIsOverridingUserAgent(params.is_overriding_user_agent);
+ // history.pushState() is classified as a navigation to a new page, but
+ // sets was_within_same_page to true. In this case, we already have the
+ // title available, so set it immediately.
+ if (params.was_within_same_page)
+ new_entry->SetTitle(GetLastCommittedEntry()->GetTitle());
+
DCHECK(!params.history_list_was_cleared || !replace_entry);
// The browser requested to clear the session history when it initiated the
// navigation. Now we know that the renderer has updated its state accordingly