| Index: content/browser/web_contents/navigation_controller_impl.cc
|
| ===================================================================
|
| --- content/browser/web_contents/navigation_controller_impl.cc (revision 153532)
|
| +++ content/browser/web_contents/navigation_controller_impl.cc (working copy)
|
| @@ -103,8 +103,13 @@
|
| }
|
|
|
| // See NavigationController::IsURLInPageNavigation for how this works and why.
|
| -bool AreURLsInPageNavigation(const GURL& existing_url, const GURL& new_url) {
|
| - if (existing_url == new_url || !new_url.has_ref()) {
|
| +bool AreURLsInPageNavigation(const GURL& existing_url,
|
| + const GURL& new_url,
|
| + bool renderer_says_in_page) {
|
| + if (existing_url == new_url)
|
| + return renderer_says_in_page;
|
| +
|
| + if (!new_url.has_ref()) {
|
| // TODO(jcampan): what about when navigating back from a ref URL to the top
|
| // non ref URL? Nothing is loaded in that case but we return false here.
|
| // The user could also navigate from the ref URL to the non ref URL by
|
| @@ -684,7 +689,8 @@
|
| }
|
|
|
| // is_in_page must be computed before the entry gets committed.
|
| - details->is_in_page = IsURLInPageNavigation(params.url);
|
| + details->is_in_page = IsURLInPageNavigation(
|
| + params.url, params.was_within_same_page);
|
|
|
| // Do navigation-type specific actions. These will make and commit an entry.
|
| details->type = ClassifyNavigation(params);
|
| @@ -871,7 +877,7 @@
|
| // the time this doesn't matter since WebKit doesn't tell us about subframe
|
| // navigations that don't actually navigate, but it can happen when there is
|
| // an encoding override (it always sends a navigation request).
|
| - if (AreURLsInPageNavigation(existing_entry->GetURL(), params.url))
|
| + if (AreURLsInPageNavigation(existing_entry->GetURL(), params.url, false))
|
| return content::NAVIGATION_TYPE_IN_PAGE;
|
|
|
| // Since we weeded out "new" navigations above, we know this is an existing
|
| @@ -1079,11 +1085,11 @@
|
| return (i == entries_.end()) ? -1 : static_cast<int>(i - entries_.begin());
|
| }
|
|
|
| -bool NavigationControllerImpl::IsURLInPageNavigation(const GURL& url) const {
|
| +bool NavigationControllerImpl::IsURLInPageNavigation(
|
| + const GURL& url, bool renderer_says_in_page) const {
|
| NavigationEntry* last_committed = GetLastCommittedEntry();
|
| - if (!last_committed)
|
| - return false;
|
| - return AreURLsInPageNavigation(last_committed->GetURL(), url);
|
| + return last_committed && AreURLsInPageNavigation(
|
| + last_committed->GetURL(), url, renderer_says_in_page);
|
| }
|
|
|
| void NavigationControllerImpl::CopyStateFrom(
|
|
|