Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(418)

Unified Diff: content/browser/web_contents/navigation_controller_impl.cc

Issue 10450002: Transfer user agent override info between browser and renderer (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Cleand up userAgentOverride Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/web_contents/navigation_controller_impl.cc
diff --git a/content/browser/web_contents/navigation_controller_impl.cc b/content/browser/web_contents/navigation_controller_impl.cc
index b24eb5b1390c3071230174dcd27948bd9c4f3d93..e497f18bd1f973c56d4a041f2dc8cd1503be1ded 100644
--- a/content/browser/web_contents/navigation_controller_impl.cc
+++ b/content/browser/web_contents/navigation_controller_impl.cc
@@ -114,6 +114,14 @@ bool AreURLsInPageNavigation(const GURL& existing_url, const GURL& new_url) {
new_url.ReplaceComponents(replacements);
}
+// Determines whether or not we should be carrying over a user agent override
+// between two NavigationEntries.
+bool ShouldKeepOverride(
+ content::PageTransition transition,
Charlie Reis 2012/06/19 22:47:59 Why is transition needed?
gone 2012/06/20 00:01:10 Was a leftover bit... removed.
+ const content::NavigationEntry* last_entry) {
+ return last_entry && last_entry->GetIsOverridingUserAgent();
+}
+
} // namespace
// NavigationControllerImpl ----------------------------------------------------
@@ -577,14 +585,9 @@ void NavigationControllerImpl::LoadURL(
if (content::HandleDebugURL(url, transition))
return;
- // The user initiated a load, we don't need to reload anymore.
- needs_reload_ = false;
-
- NavigationEntryImpl* entry = NavigationEntryImpl::FromNavigationEntry(
- CreateNavigationEntry(
- url, referrer, transition, false, extra_headers, browser_context_));
-
- LoadEntry(entry);
+ bool override = ShouldKeepOverride(transition, GetLastCommittedEntry());
+ LoadURLWithUserAgentOverride(url, referrer, transition, false, extra_headers,
+ override);
}
void NavigationControllerImpl::LoadURLFromRenderer(
@@ -592,12 +595,26 @@ void NavigationControllerImpl::LoadURLFromRenderer(
const content::Referrer& referrer,
content::PageTransition transition,
const std::string& extra_headers) {
+ bool override = ShouldKeepOverride(transition, GetLastCommittedEntry());
+ LoadURLWithUserAgentOverride(url, referrer, transition, true, extra_headers,
+ override);
+}
+
+void NavigationControllerImpl::LoadURLWithUserAgentOverride(
+ const GURL& url,
+ const content::Referrer& referrer,
+ content::PageTransition transition,
+ bool is_renderer_initiated,
+ const std::string& extra_headers,
+ bool is_overriding_user_agent) {
// The user initiated a load, we don't need to reload anymore.
needs_reload_ = false;
NavigationEntryImpl* entry = NavigationEntryImpl::FromNavigationEntry(
CreateNavigationEntry(
- url, referrer, transition, true, extra_headers, browser_context_));
+ url, referrer, transition, is_renderer_initiated, extra_headers,
+ browser_context_));
+ entry->SetIsOverridingUserAgent(is_overriding_user_agent);
LoadEntry(entry);
}
@@ -868,6 +885,7 @@ void NavigationControllerImpl::RendererDidNavigateToNewPage(
static_cast<SiteInstanceImpl*>(web_contents_->GetSiteInstance()));
new_entry->SetHasPostData(params.is_post);
new_entry->SetPostID(params.post_id);
+ new_entry->SetIsOverridingUserAgent(params.is_overriding_user_agent);
if (params.redirects.size() > 0)
new_entry->SetOriginalRequestURL(params.redirects[0]);

Powered by Google App Engine
This is Rietveld 408576698