Commit f22626ac authored by Christopher Lam's avatar Christopher Lam Committed by Chromium LUCI CQ

[Chrome Apps] Disable target blank implies no opener behavior.

This CL fixes an issue where target=_blank links in Chrome Apps wouldn't
open when clicked.

This CL adds a target_blank_implies_no_opener WebPreference as enabled
by default and plumbs the disabling from extension_webkit_preferences.cc.

Bug: 1152286
Change-Id: Ib4e86c5df9c2a2f8945178c47bcd6cb4cd62ff9d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2612624Reviewed-by: default avatarBen Wells <benwells@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Commit-Queue: calamity <calamity@chromium.org>
Cr-Commit-Position: refs/heads/master@{#841324}
parent 115594ca
...@@ -34,6 +34,8 @@ void SetPreferences(const extensions::Extension* extension, ...@@ -34,6 +34,8 @@ void SetPreferences(const extensions::Extension* extension,
webkit_prefs->local_storage_enabled = false; webkit_prefs->local_storage_enabled = false;
webkit_prefs->sync_xhr_in_documents_enabled = false; webkit_prefs->sync_xhr_in_documents_enabled = false;
webkit_prefs->cookie_enabled = false; webkit_prefs->cookie_enabled = false;
webkit_prefs->target_blank_implies_no_opener_enabled_will_be_removed =
false;
} }
// Enable WebGL features that regular pages can't access, since they add // Enable WebGL features that regular pages can't access, since they add
......
...@@ -131,6 +131,8 @@ bool StructTraits<blink::mojom::WebPreferencesDataView, ...@@ -131,6 +131,8 @@ bool StructTraits<blink::mojom::WebPreferencesDataView,
data.dont_send_key_events_to_javascript(); data.dont_send_key_events_to_javascript();
out->barrel_button_for_drag_enabled = data.barrel_button_for_drag_enabled(); out->barrel_button_for_drag_enabled = data.barrel_button_for_drag_enabled();
out->sync_xhr_in_documents_enabled = data.sync_xhr_in_documents_enabled(); out->sync_xhr_in_documents_enabled = data.sync_xhr_in_documents_enabled();
out->target_blank_implies_no_opener_enabled_will_be_removed =
data.target_blank_implies_no_opener_enabled_will_be_removed();
out->number_of_cpu_cores = data.number_of_cpu_cores(); out->number_of_cpu_cores = data.number_of_cpu_cores();
out->editing_behavior = data.editing_behavior(); out->editing_behavior = data.editing_behavior();
out->supports_multiple_windows = data.supports_multiple_windows(); out->supports_multiple_windows = data.supports_multiple_windows();
......
...@@ -135,6 +135,8 @@ struct BLINK_COMMON_EXPORT WebPreferences { ...@@ -135,6 +135,8 @@ struct BLINK_COMMON_EXPORT WebPreferences {
bool dont_send_key_events_to_javascript; bool dont_send_key_events_to_javascript;
bool barrel_button_for_drag_enabled = false; bool barrel_button_for_drag_enabled = false;
bool sync_xhr_in_documents_enabled; bool sync_xhr_in_documents_enabled;
// TODO(https://crbug.com/1163644): Remove once Chrome Apps are deprecated.
bool target_blank_implies_no_opener_enabled_will_be_removed = true;
int number_of_cpu_cores; int number_of_cpu_cores;
blink::mojom::EditingBehavior editing_behavior; blink::mojom::EditingBehavior editing_behavior;
bool supports_multiple_windows; bool supports_multiple_windows;
......
...@@ -360,6 +360,11 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::WebPreferencesDataView, ...@@ -360,6 +360,11 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::WebPreferencesDataView,
return r.sync_xhr_in_documents_enabled; return r.sync_xhr_in_documents_enabled;
} }
static bool target_blank_implies_no_opener_enabled_will_be_removed(
const blink::web_pref::WebPreferences& r) {
return r.target_blank_implies_no_opener_enabled_will_be_removed;
}
static uint32_t number_of_cpu_cores( static uint32_t number_of_cpu_cores(
const blink::web_pref::WebPreferences& r) { const blink::web_pref::WebPreferences& r) {
return r.number_of_cpu_cores; return r.number_of_cpu_cores;
......
...@@ -188,6 +188,7 @@ struct WebPreferences { ...@@ -188,6 +188,7 @@ struct WebPreferences {
bool dont_send_key_events_to_javascript; bool dont_send_key_events_to_javascript;
bool barrel_button_for_drag_enabled; bool barrel_button_for_drag_enabled;
bool sync_xhr_in_documents_enabled; bool sync_xhr_in_documents_enabled;
bool target_blank_implies_no_opener_enabled_will_be_removed;
int32 number_of_cpu_cores; int32 number_of_cpu_cores;
EditingBehavior editing_behavior; EditingBehavior editing_behavior;
bool supports_multiple_windows; bool supports_multiple_windows;
......
...@@ -219,6 +219,8 @@ class WebSettings { ...@@ -219,6 +219,8 @@ class WebSettings {
virtual void SetSupportDeprecatedTargetDensityDPI(bool) = 0; virtual void SetSupportDeprecatedTargetDensityDPI(bool) = 0;
virtual void SetSupportsMultipleWindows(bool) = 0; virtual void SetSupportsMultipleWindows(bool) = 0;
virtual void SetSyncXHRInDocumentsEnabled(bool) = 0; virtual void SetSyncXHRInDocumentsEnabled(bool) = 0;
// TODO(https://crbug.com/1163644): Remove once Chrome Apps are deprecated.
virtual void SetTargetBlankImpliesNoOpenerEnabledWillBeRemoved(bool) = 0;
virtual void SetTextAreasAreResizable(bool) = 0; virtual void SetTextAreasAreResizable(bool) = 0;
virtual void SetTextAutosizingEnabled(bool) = 0; virtual void SetTextAutosizingEnabled(bool) = 0;
virtual void SetAccessibilityFontScaleFactor(float) = 0; virtual void SetAccessibilityFontScaleFactor(float) = 0;
......
...@@ -624,6 +624,11 @@ void WebSettingsImpl::SetSyncXHRInDocumentsEnabled(bool enabled) { ...@@ -624,6 +624,11 @@ void WebSettingsImpl::SetSyncXHRInDocumentsEnabled(bool enabled) {
settings_->SetSyncXHRInDocumentsEnabled(enabled); settings_->SetSyncXHRInDocumentsEnabled(enabled);
} }
void WebSettingsImpl::SetTargetBlankImpliesNoOpenerEnabledWillBeRemoved(
bool enabled) {
settings_->SetTargetBlankImpliesNoOpenerEnabledWillBeRemoved(enabled);
}
void WebSettingsImpl::SetCaretBrowsingEnabled(bool enabled) { void WebSettingsImpl::SetCaretBrowsingEnabled(bool enabled) {
settings_->SetCaretBrowsingEnabled(enabled); settings_->SetCaretBrowsingEnabled(enabled);
} }
......
...@@ -162,6 +162,7 @@ class CORE_EXPORT WebSettingsImpl final : public WebSettings { ...@@ -162,6 +162,7 @@ class CORE_EXPORT WebSettingsImpl final : public WebSettings {
void SetSupportDeprecatedTargetDensityDPI(bool) override; void SetSupportDeprecatedTargetDensityDPI(bool) override;
void SetSupportsMultipleWindows(bool) override; void SetSupportsMultipleWindows(bool) override;
void SetSyncXHRInDocumentsEnabled(bool) override; void SetSyncXHRInDocumentsEnabled(bool) override;
void SetTargetBlankImpliesNoOpenerEnabledWillBeRemoved(bool) override;
void SetTextAreasAreResizable(bool) override; void SetTextAreasAreResizable(bool) override;
void SetTextAutosizingEnabled(bool) override; void SetTextAutosizingEnabled(bool) override;
void SetAccessibilityFontScaleFactor(float) override; void SetAccessibilityFontScaleFactor(float) override;
......
...@@ -1404,6 +1404,8 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs, ...@@ -1404,6 +1404,8 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs,
blink::WebNetworkStateNotifier::SetSaveDataEnabled(prefs.data_saver_enabled); blink::WebNetworkStateNotifier::SetSaveDataEnabled(prefs.data_saver_enabled);
settings->SetLocalStorageEnabled(prefs.local_storage_enabled); settings->SetLocalStorageEnabled(prefs.local_storage_enabled);
settings->SetSyncXHRInDocumentsEnabled(prefs.sync_xhr_in_documents_enabled); settings->SetSyncXHRInDocumentsEnabled(prefs.sync_xhr_in_documents_enabled);
settings->SetTargetBlankImpliesNoOpenerEnabledWillBeRemoved(
prefs.target_blank_implies_no_opener_enabled_will_be_removed);
RuntimeEnabledFeatures::SetDatabaseEnabled(prefs.databases_enabled); RuntimeEnabledFeatures::SetDatabaseEnabled(prefs.databases_enabled);
settings->SetOfflineWebApplicationCacheEnabled( settings->SetOfflineWebApplicationCacheEnabled(
prefs.application_cache_enabled); prefs.application_cache_enabled);
......
...@@ -289,6 +289,10 @@ ...@@ -289,6 +289,10 @@
name: "syncXHRInDocumentsEnabled", name: "syncXHRInDocumentsEnabled",
initial: true, initial: true,
}, },
{
name: "targetBlankImpliesNoOpenerEnabledWillBeRemoved",
initial: true,
},
{ {
name: "cookieEnabled", name: "cookieEnabled",
initial: true, initial: true,
......
...@@ -544,7 +544,9 @@ void HTMLAnchorElement::HandleClick(Event& event) { ...@@ -544,7 +544,9 @@ void HTMLAnchorElement::HandleClick(Event& event) {
} }
if (HasRel(kRelationNoOpener) || if (HasRel(kRelationNoOpener) ||
(EqualIgnoringASCIICase(target, "_blank") && !HasRel(kRelationOpener) && (EqualIgnoringASCIICase(target, "_blank") && !HasRel(kRelationOpener) &&
RuntimeEnabledFeatures::TargetBlankImpliesNoOpenerEnabled())) { RuntimeEnabledFeatures::TargetBlankImpliesNoOpenerEnabled() &&
frame->GetSettings()
->GetTargetBlankImpliesNoOpenerEnabledWillBeRemoved())) {
frame_request.SetNoOpener(); frame_request.SetNoOpener();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment