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 --- 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 @@ -7218,6 +7218,11 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kLegacyTechReportTopLevelUrlDescription, kOsAll, FEATURE_VALUE_TYPE(features::kLegacyTechReportTopLevelUrl)}, + {"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 @@ -3250,6 +3250,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 @@ -1501,6 +1501,10 @@ 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 @@ -843,6 +843,9 @@ extern const char kExperimentalRgbKeyboardPatternsDescription[]; 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 @@ -366,7 +366,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->RegisterIntegerPref(prefs::kAccessibilityTextSizeContrastFactor, 0); 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 @@ -293,6 +293,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { #endif {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 @@ -767,6 +767,11 @@ BASE_FEATURE(kFencedFramesM119Features, "FencedFramesM119Features", 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 @@ -351,6 +351,7 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kDispatchBeforeUnloadOnFreeze); BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kDisplayLocking); BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kDropInputEventsBeforeFirstPaint); +BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kTextFragmentAnchor); BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kDroppedTouchSequenceIncludesTouchEnd); 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 @@ -4465,9 +4465,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 @@ -3736,10 +3736,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.25.1