Add-flag-for-omnibox-autocomplete-filtering.patch 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. From: Blaise <BlaiseD@GMail.com>
  2. Date: Sat, 22 Aug 2020 08:52:40 -0500
  3. Subject: Add flag for omnibox autocomplete filtering
  4. Adds a flag that restricts whether search history, clipboard, bookmarks
  5. and internal chrome:// pages will be used for the autocomplete results.
  6. ---
  7. chrome/browser/about_flags.cc | 21 +++++++++++++++++++
  8. .../browser/autocomplete_controller.cc | 10 +++++++++
  9. .../omnibox/browser/history_url_provider.cc | 3 +++
  10. components/omnibox/browser/search_provider.cc | 4 ++++
  11. components/url_formatter/url_fixer.cc | 3 +++
  12. 5 files changed, 41 insertions(+)
  13. diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  14. --- a/chrome/browser/about_flags.cc
  15. +++ b/chrome/browser/about_flags.cc
  16. @@ -503,6 +503,22 @@ const FeatureEntry::FeatureVariation kAdaptiveButtonInTopToolbarVariations[] = {
  17. };
  18. #endif // OS_ANDROID
  19. +const FeatureEntry::Choice kOmniboxAutocompleteFiltering[] = {
  20. + {flags_ui::kGenericExperimentChoiceDefault, "", ""},
  21. + {"Search suggestions only",
  22. + "omnibox-autocomplete-filtering",
  23. + "search"},
  24. + {"Search suggestions and bookmarks",
  25. + "omnibox-autocomplete-filtering",
  26. + "search-bookmarks"},
  27. + {"Search suggestions and internal chrome pages",
  28. + "omnibox-autocomplete-filtering",
  29. + "search-chrome"},
  30. + {"Search suggestions, bookmarks, and internal chrome pages",
  31. + "omnibox-autocomplete-filtering",
  32. + "search-bookmarks-chrome"},
  33. +};
  34. +
  35. #if defined(OS_ANDROID)
  36. const FeatureEntry::FeatureParam kHideDismissButton[] = {
  37. {"dismiss_button", "hide"}};
  38. @@ -4769,6 +4785,11 @@ const FeatureEntry kFeatureEntries[] = {
  39. FEATURE_VALUE_TYPE(chrome::android::kReaderModeInCCT)},
  40. #endif // !defined(OS_ANDROID)
  41. + {"omnibox-autocomplete-filtering",
  42. + "Omnibox Autocomplete Filtering",
  43. + "Restrict omnibox autocomplete results to a combination of search suggestions (if enabled), bookmarks, and internal chrome pages. ungoogled-chromium flag.",
  44. + kOsAll, MULTI_VALUE_TYPE(kOmniboxAutocompleteFiltering)},
  45. +
  46. #if defined(OS_WIN) || defined(OS_MAC) || defined(OS_LINUX) || \
  47. defined(OS_CHROMEOS)
  48. {"direct-manipulation-stylus",
  49. diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc
  50. --- a/components/omnibox/browser/autocomplete_controller.cc
  51. +++ b/components/omnibox/browser/autocomplete_controller.cc
  52. @@ -15,6 +15,7 @@
  53. #include "base/bind.h"
  54. #include "base/check_op.h"
  55. +#include "base/command_line.h"
  56. #include "base/feature_list.h"
  57. #include "base/format_macros.h"
  58. #include "base/metrics/histogram.h"
  59. @@ -275,6 +276,15 @@ AutocompleteController::AutocompleteController(
  60. search_service_worker_signal_sent_(false),
  61. template_url_service_(provider_client_->GetTemplateURLService()) {
  62. provider_types &= ~OmniboxFieldTrial::GetDisabledProviderTypes();
  63. + if (base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering")) {
  64. + const std::string flag_value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("omnibox-autocomplete-filtering");
  65. + provider_types &= AutocompleteProvider::TYPE_KEYWORD | AutocompleteProvider::TYPE_SEARCH |
  66. + AutocompleteProvider::TYPE_HISTORY_URL | AutocompleteProvider::TYPE_BOOKMARK | AutocompleteProvider::TYPE_BUILTIN;
  67. + if (!base::Contains(flag_value, "bookmarks"))
  68. + provider_types &= ~AutocompleteProvider::TYPE_BOOKMARK;
  69. + if (!base::Contains(flag_value, "chrome"))
  70. + provider_types &= ~AutocompleteProvider::TYPE_BUILTIN;
  71. + }
  72. if (provider_types & AutocompleteProvider::TYPE_BOOKMARK)
  73. providers_.push_back(new BookmarkProvider(provider_client_.get()));
  74. if (provider_types & AutocompleteProvider::TYPE_BUILTIN)
  75. diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc
  76. --- a/components/omnibox/browser/history_url_provider.cc
  77. +++ b/components/omnibox/browser/history_url_provider.cc
  78. @@ -553,6 +553,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input,
  79. if (fixed_up_input.type() != metrics::OmniboxInputType::QUERY)
  80. matches_.push_back(what_you_typed_match);
  81. + if (base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering"))
  82. + return;
  83. +
  84. // We'll need the history service to run both passes, so try to obtain it.
  85. history::HistoryService* const history_service =
  86. client()->GetHistoryService();
  87. diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc
  88. --- a/components/omnibox/browser/search_provider.cc
  89. +++ b/components/omnibox/browser/search_provider.cc
  90. @@ -12,6 +12,7 @@
  91. #include "base/base64.h"
  92. #include "base/bind.h"
  93. #include "base/callback.h"
  94. +#include "base/command_line.h"
  95. #include "base/feature_list.h"
  96. #include "base/i18n/break_iterator.h"
  97. #include "base/i18n/case_conversion.h"
  98. @@ -643,6 +644,9 @@ void SearchProvider::Run(bool query_is_private) {
  99. }
  100. void SearchProvider::DoHistoryQuery(bool minimal_changes) {
  101. + if (base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering"))
  102. + return;
  103. +
  104. // The history query results are synchronous, so if minimal_changes is true,
  105. // we still have the last results and don't need to do anything.
  106. if (minimal_changes)
  107. diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc
  108. --- a/components/url_formatter/url_fixer.cc
  109. +++ b/components/url_formatter/url_fixer.cc
  110. @@ -9,6 +9,7 @@
  111. #include <algorithm>
  112. #include "base/check_op.h"
  113. +#include "base/command_line.h"
  114. #include "base/files/file_path.h"
  115. #include "base/files/file_util.h"
  116. #include "base/ranges/algorithm.h"
  117. @@ -607,6 +608,8 @@ GURL FixupURL(const std::string& text, const std::string& desired_tld) {
  118. FixupHost(trimmed, parts.host, parts.scheme.is_valid(), desired_tld, &url);
  119. if (chrome_url && !parts.host.is_valid())
  120. + if (!base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering") ||
  121. + base::Contains(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("omnibox-autocomplete-filtering"), "chrome"))
  122. url.append(kChromeUIDefaultHost);
  123. FixupPort(trimmed, parts.port, &url);
  124. FixupPath(trimmed, parts.path, &url);
  125. --
  126. 2.17.1