123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- 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."
- ---
- chrome/browser/about_flags.cc | 1 +
- chrome/browser/flag-metadata.json | 2 +-
- chrome/browser/ui/prefs/prefs_tab_helper.cc | 2 +-
- content/child/runtime_features.cc | 1 +
- third_party/blink/common/features.cc | 2 +-
- .../blink/renderer/core/dom/document.cc | 5 ++++
- .../text_fragment_anchor_metrics_test.cc | 29 +++++++------------
- .../platform/runtime_enabled_features.json5 | 3 +-
- 8 files changed, 21 insertions(+), 24 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
- @@ -5612,6 +5612,7 @@ const FeatureEntry kFeatureEntries[] = {
- flag_descriptions::kSharingHubDesktopOmniboxDescription, kOsDesktop,
- FEATURE_VALUE_TYPE(sharing_hub::kSharingHubDesktopOmnibox)},
- #endif // defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX)
- + // will override runtime text fragment identifiers setting too
-
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- {"ash-enable-pip-rounded-corners",
- 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
- @@ -3058,7 +3058,7 @@
- {
- "name": "ev-details-in-page-info",
- "owners": [ "cthomp" ],
- - "expiry_milestone": 83
- + "expiry_milestone": -1
- },
- {
- "name": "exo-gamepad-vibration",
- 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
- @@ -360,7 +360,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 defined(OS_ANDROID)
- registry->RegisterDoublePref(prefs::kWebKitFontScaleFactor, 1.0);
- registry->RegisterBooleanPref(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
- @@ -263,6 +263,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
- {wf::EnableMouseSubframeNoImplicitCapture,
- features::kMouseSubframeNoImplicitCapture},
- {wf::EnableNeverSlowMode, features::kNeverSlowMode},
- + // will set the TextFragmentIdentifiers runtime feature
- {wf::EnableNotificationContentImage, features::kNotificationContentImage,
- kSetOnlyIfOverridden},
- {wf::EnableParseUrlProtocolHandler,
- 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
- @@ -379,7 +379,7 @@ const base::Feature kStorageAccessAPI{"StorageAccessAPI",
-
- // Enable text snippets in URL fragments. https://crbug.com/919204.
- const base::Feature kTextFragmentAnchor{"TextFragmentAnchor",
- - base::FEATURE_ENABLED_BY_DEFAULT};
- + base::FEATURE_DISABLED_BY_DEFAULT};
-
- // File handling integration. https://crbug.com/829689
- const base::Feature kFileHandlingAPI{"FileHandlingAPI",
- 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
- @@ -4063,6 +4063,10 @@ void Document::SetURL(const KURL& url) {
- }
- }
-
- + // 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.
- String fragment = new_url.FragmentIdentifier();
- @@ -4076,6 +4080,7 @@ void Document::SetURL(const KURL& url) {
- else
- new_url.SetFragmentIdentifier(fragment.Substring(0, start_pos));
- }
- + }
-
- url_ = new_url;
- access_entry_from_url_ = nullptr;
- diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc
- --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc
- +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_metrics_test.cc
- @@ -1249,34 +1249,25 @@ TEST_P(TextFragmentRelatedMetricTest, ElementIdSuccessFailureCounts) {
- // result of the element-id fragment if a text directive is successfully
- // parsed. If the feature is off we treat the text directive as an element-id
- // and should count the result.
- + const int kUncountedOrNotFound = GetParam() ? kUncounted : kNotFound;
- const int kUncountedOrFound = GetParam() ? kUncounted : kFound;
-
- - // Note: We'll strip the fragment directive (i.e. anything after :~:) leaving
- - // just the element anchor. The fragment directive stripping behavior is now
- - // shipped unflagged so it should always be performed.
- + // When the TextFragmentAnchors feature is on, we'll strip the fragment
- + // directive (i.e. anything after :~:) leaving just the element anchor.
- + const int kFoundIfDirectiveStripped = GetParam() ? kFound : kNotFound;
-
- Vector<std::pair<String, int>> test_cases = {
- {"", kUncounted},
- {"#element", kFound},
- {"#doesntExist", kNotFound},
- - // `:~:foo` will be stripped so #element will be found and #doesntexist
- - // ##element will be not found.
- - {"#element:~:foo", kFound},
- + {"#element:~:foo", kFoundIfDirectiveStripped},
- {"#doesntexist:~:foo", kNotFound},
- {"##element", kNotFound},
- - // If the feature is on, `:~:text=` will parse so we shouldn't count.
- - // Otherwise, it'll just be stripped so #element will be found.
- - {"#element:~:text=doesntexist", kUncountedOrFound},
- - {"#element:~:text=page", kUncountedOrFound},
- - // If the feature is on, `:~:text` is parsed so we don't count. If it's
- - // off the entire fragment is a directive that's stripped so no search is
- - // performed either.
- - {"#:~:text=doesntexist", kUncounted},
- - {"#:~:text=page", kUncounted},
- - {"#:~:text=name", kUncounted},
- - // If the feature is enabled, `:~:text` parses and we don't count the
- - // element-id. If the feature is off, we still strip the :~: directive
- - // and the remaining fragment does match an element id.
- + {"#element:~:text=doesntexist", kUncountedOrNotFound},
- + {"#element:~:text=page", kUncountedOrNotFound},
- + {"#:~:text=doesntexist", kUncountedOrNotFound},
- + {"#:~:text=page", kUncountedOrNotFound},
- + {"#:~:text=name", kUncountedOrFound},
- {"#element:~:text=name", kUncountedOrFound}};
-
- const int kNotFoundSample = 0;
- 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
- @@ -2173,8 +2173,7 @@
- },
- {
- name: "TextFragmentIdentifiers",
- - origin_trial_feature_name: "TextFragmentIdentifiers",
- - status: "stable",
- + origin_trial_feature_name: "TextFragmentIdentifiers"
- },
- {
- name: "TextFragmentTapOpensContextMenu",
- --
- 2.20.1
|