Allow user agent to be overridden in popup webview creation
When a webview-embedding app creates another webview inside
WebChromeClient#onCreateWindow(), the navigator does not have
a current entry nor pending entry yet, but decides not to override
user agent nevertheless, in creating navigation request.
Therefore, the intent to override the user agent is ignored in
creating navigation request.
This can be fixed by looking up the delegate as a fall-back.
BUG=614951
Change-Id: I00fe0a26e67116517f59452e89297018a09ffa8e
Reviewed-on: https://chromium-review.googlesource.com/846713
Commit-Queue: Changwan Ryu <[email protected]>
Reviewed-by: John Abd-El-Malek <[email protected]>
Reviewed-by: Bo <[email protected]>
Reviewed-by: Ted Choc <[email protected]>
Reviewed-by: Charlie Reis <[email protected]>
Cr-Commit-Position: refs/heads/master@{#541287}
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 13c4ff4..3d9de22 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -1178,10 +1178,13 @@
return frame_tree_.root()->current_frame_host()->web_ui();
}
-void WebContentsImpl::SetUserAgentOverride(const std::string& override) {
+void WebContentsImpl::SetUserAgentOverride(const std::string& override,
+ bool override_in_new_tabs) {
if (GetUserAgentOverride() == override)
return;
+ should_override_user_agent_in_new_tabs_ = override_in_new_tabs;
+
renderer_preferences_.user_agent_override = override;
// Send the new override string to the renderer.
@@ -1203,6 +1206,10 @@
return renderer_preferences_.user_agent_override;
}
+bool WebContentsImpl::ShouldOverrideUserAgentInNewTabs() {
+ return should_override_user_agent_in_new_tabs_;
+}
+
void WebContentsImpl::EnableWebContentsOnlyAccessibilityMode() {
if (!GetAccessibilityMode().is_mode_off()) {
for (RenderFrameHost* rfh : GetAllFrames())