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 6b345d2187d84070a97be7f5403f99f2caeef464..e4d1397b7a428d49ee0b43fc86ee5b3e84496f1e 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -227,6 +227,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; |
@@ -749,11 +750,25 @@ 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 { |