Index: content/browser/web_contents/web_contents_impl.cc |
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
index 0e2c5155d0bdcb1d37b61e6f4f7178041d8b55ba..231430c763a518a000f4091785b2081010243543 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -226,6 +226,7 @@ void MakeNavigateParams(const NavigationEntryImpl& entry, |
entry.transferred_global_request_id().child_id; |
params->transferred_request_request_id = |
entry.transferred_global_request_id().request_id; |
+ params->is_overriding_user_agent = entry.GetIsOverridingUserAgent(); |
// Avoid downloading when in view-source mode. |
params->allow_download = !entry.IsViewSourceMode(); |
params->embedder_channel_name = embedder_channel_name; |
@@ -746,11 +747,27 @@ content::WebUI* WebContentsImpl::GetCommittedWebUI() const { |
} |
void WebContentsImpl::SetUserAgentOverride(const std::string& override) { |
- user_agent_override_ = override; |
+ if (GetUserAgentOverride() == override) { |
+ return; |
+ } |
+ renderer_preferences_.user_agent_override = override; |
+ |
+ // Send the new override string to the renderer. |
+ RenderViewHost* host = GetRenderViewHost(); |
+ if (host) { |
+ host->SyncRendererPrefs(); |
+ } |
+ |
+ // Reload the page if a load is currently in progress to avoid having |
+ // different parts of the page loaded using different user agents. |
+ NavigationEntry* entry = controller_.GetActiveEntry(); |
+ if (is_loading_ && entry != NULL && entry->GetIsOverridingUserAgent()) { |
+ controller_.ReloadIgnoringCache(true); |
+ } |
} |
const std::string& WebContentsImpl::GetUserAgentOverride() const { |
- return user_agent_override_; |
+ return renderer_preferences_.user_agent_override; |
} |
const string16& WebContentsImpl::GetTitle() const { |