From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sat, 22 Aug 2020 12:46:20 +0200 Subject: Disable text fragments by default Revert "[Text Fragment] Unflag fragment directive removal." Original License: BSD-3-Clause - https://spdx.org/licenses/BSD-3-Clause.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html Change-Id: I145be3cf3de31f7c92fc97c74fede22addf8621a --- chrome/browser/about_flags.cc | 5 +++++ chrome/browser/flag-metadata.json | 5 +++++ chrome/browser/flag_descriptions.cc | 4 ++++ chrome/browser/flag_descriptions.h | 3 +++ chrome/browser/ui/prefs/prefs_tab_helper.cc | 2 +- content/child/runtime_features.cc | 2 ++ third_party/blink/common/features.cc | 5 +++++ third_party/blink/public/common/features.h | 1 + third_party/blink/renderer/core/dom/document.cc | 5 +++++ .../blink/renderer/platform/runtime_enabled_features.json5 | 5 ++--- 10 files changed, 33 insertions(+), 4 deletions(-) diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc @@ -6328,6 +6328,11 @@ const FeatureEntry kFeatureEntries[] = { "")}, #endif + {"enable-text-fragment-anchor", + flag_descriptions::kEnableTextFragmentAnchorName, + flag_descriptions::kEnableTextFragmentAnchorDescription, kOsAll, + FEATURE_VALUE_TYPE(blink::features::kTextFragmentAnchor)}, + #if BUILDFLAG(IS_CHROMEOS_ASH) {"enable-web-authentication-chromeos-authenticator", flag_descriptions::kEnableWebAuthenticationChromeOSAuthenticatorName, diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json @@ -2827,6 +2827,11 @@ "owners": [ "robsc", "napper", "alanlxl" ], "expiry_milestone": 130 }, + { + "name": "enable-text-fragment-anchor", + "owners": [ "bokan", "input-dev" ], + "expiry_milestone": -1 + }, { "name": "enable-neural-stylus-palm-rejection", "owners": [ "robsc", "napper", "adlr" ], diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc @@ -1327,6 +1327,10 @@ extern const char kDropInputEventsBeforeFirstPaintDescription[] = "intentionally interact with elements on that page. By dropping the events " "we prevent accidental interaction with a page the user has not seen yet."; +const char kEnableTextFragmentAnchorName[] = "Enable Text Fragment Anchor."; +const char kEnableTextFragmentAnchorDescription[] = + "Enables scrolling to text specified in URL's fragment."; + const char kEnableCssSelectorFragmentAnchorName[] = "Enables CSS selector fragment anchors"; const char kEnableCssSelectorFragmentAnchorDescription[] = diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h @@ -739,6 +739,9 @@ extern const char kReduceHorizontalFlingVelocityDescription[]; extern const char kRetailCouponsName[]; extern const char kRetailCouponsDescription[]; +extern const char kEnableTextFragmentAnchorName[]; +extern const char kEnableTextFragmentAnchorDescription[]; + extern const char kDropInputEventsBeforeFirstPaintName[]; extern const char kDropInputEventsBeforeFirstPaintDescription[]; diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/prefs/prefs_tab_helper.cc --- a/chrome/browser/ui/prefs/prefs_tab_helper.cc +++ b/chrome/browser/ui/prefs/prefs_tab_helper.cc @@ -361,7 +361,7 @@ void PrefsTabHelper::RegisterProfilePrefs( prefs::kEnableReferrers, !base::FeatureList::IsEnabled(features::kNoReferrers)); registry->RegisterBooleanPref(prefs::kEnableEncryptedMedia, true); - registry->RegisterBooleanPref(prefs::kScrollToTextFragmentEnabled, true); + registry->RegisterBooleanPref(prefs::kScrollToTextFragmentEnabled, false); #if BUILDFLAG(IS_ANDROID) registry->RegisterDoublePref(browser_ui::prefs::kWebKitFontScaleFactor, 1.0); registry->RegisterBooleanPref(browser_ui::prefs::kWebKitForceEnableZoom, diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc @@ -290,6 +290,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { raw_ref(autofill::features::kAutofillSharedAutofill)}, {wf::EnableTouchDragAndContextMenu, raw_ref(features::kTouchDragAndContextMenu)}, + {wf::EnableTextFragmentIdentifiers, + raw_ref(blink::features::kTextFragmentAnchor)}, {wf::EnableUserActivationSameOriginVisibility, raw_ref(features::kUserActivationSameOriginVisibility)}, {wf::EnableVideoPlaybackQuality, raw_ref(features::kVideoPlaybackQuality)}, diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc @@ -520,6 +520,11 @@ BASE_FEATURE(kDroppedTouchSequenceIncludesTouchEnd, "DroppedTouchSequenceIncludesTouchEnd", base::FEATURE_DISABLED_BY_DEFAULT); +// Enable text snippets in URL fragments. https://crbug.com/919204. +BASE_FEATURE(kTextFragmentAnchor, + "TextFragmentAnchor", + base::FEATURE_DISABLED_BY_DEFAULT); + // File handling icons. https://crbug.com/1218213 BASE_FEATURE(kFileHandlingIcons, "FileHandlingIcons", diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h --- a/third_party/blink/public/common/features.h +++ b/third_party/blink/public/common/features.h @@ -247,6 +247,7 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kDecodeJpeg420ImagesToYUV); BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kDecodeLossyWebPImagesToYUV); BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kWebFontsCacheAwareTimeoutAdaption); +BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kTextFragmentAnchor); BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kAudioWorkletThreadRealtimePriority); BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kWebAudioSinkSelection); diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc @@ -4300,9 +4300,14 @@ void Document::SetURL(const KURL& url) { TRACE_EVENT1("navigation", "Document::SetURL", "url", new_url.GetString().Utf8()); + // If text fragment identifiers are enabled, we strip the fragment directive + // from the URL fragment. + // E.g. "#id:~:text=a" --> "#id" + if (RuntimeEnabledFeatures::TextFragmentIdentifiersEnabled(domWindow())) { // Strip the fragment directive from the URL fragment. E.g. "#id:~:text=a" // --> "#id". See https://github.com/WICG/scroll-to-text-fragment. new_url = fragment_directive_->ConsumeFragmentDirective(new_url); + } url_ = new_url; UpdateBaseURL(); diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 @@ -3320,10 +3320,9 @@ }, { name: "TextFragmentIdentifiers", - origin_trial_feature_name: "TextFragmentIdentifiers", public: true, - status: "stable", - base_feature: "TextFragmentAnchor", + status: "test", + origin_trial_feature_name: "TextFragmentIdentifiers" }, { name: "TextFragmentTapOpensContextMenu", -- 2.40.1