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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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 | 11 ++++++++++
  9. .../omnibox/browser/history_url_provider.cc | 3 +++
  10. components/omnibox/browser/search_provider.cc | 4 ++++
  11. components/url_formatter/url_fixer.cc | 4 ++++
  12. 5 files changed, 43 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. @@ -459,6 +459,22 @@ const FeatureEntry::FeatureVariation kReaderModeDiscoverabilityVariations[] = {
  17. base::size(kReaderModeOfferInSettings), nullptr}};
  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 kAdaptiveButton_AlwaysNone[] = {
  37. {"mode", "always-none"}};
  38. @@ -4913,6 +4929,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. {"webui-feedback", flag_descriptions::kWebuiFeedbackName,
  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,8 @@
  53. #include "base/bind.h"
  54. #include "base/check_op.h"
  55. +#include "base/containers/contains.h"
  56. +#include "base/command_line.h"
  57. #include "base/feature_list.h"
  58. #include "base/format_macros.h"
  59. #include "base/metrics/histogram.h"
  60. @@ -276,6 +278,15 @@ AutocompleteController::AutocompleteController(
  61. search_service_worker_signal_sent_(false),
  62. template_url_service_(provider_client_->GetTemplateURLService()) {
  63. provider_types &= ~OmniboxFieldTrial::GetDisabledProviderTypes();
  64. + if (base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering")) {
  65. + const std::string flag_value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("omnibox-autocomplete-filtering");
  66. + provider_types &= AutocompleteProvider::TYPE_KEYWORD | AutocompleteProvider::TYPE_SEARCH |
  67. + AutocompleteProvider::TYPE_HISTORY_URL | AutocompleteProvider::TYPE_BOOKMARK | AutocompleteProvider::TYPE_BUILTIN;
  68. + if (!base::Contains(flag_value, "bookmarks"))
  69. + provider_types &= ~AutocompleteProvider::TYPE_BOOKMARK;
  70. + if (!base::Contains(flag_value, "chrome"))
  71. + provider_types &= ~AutocompleteProvider::TYPE_BUILTIN;
  72. + }
  73. if (provider_types & AutocompleteProvider::TYPE_BOOKMARK)
  74. providers_.push_back(new BookmarkProvider(provider_client_.get()));
  75. if (provider_types & AutocompleteProvider::TYPE_BUILTIN)
  76. diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc
  77. --- a/components/omnibox/browser/history_url_provider.cc
  78. +++ b/components/omnibox/browser/history_url_provider.cc
  79. @@ -551,6 +551,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input,
  80. if (fixed_up_input.type() != metrics::OmniboxInputType::QUERY)
  81. matches_.push_back(what_you_typed_match);
  82. + if (base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering"))
  83. + return;
  84. +
  85. // We'll need the history service to run both passes, so try to obtain it.
  86. history::HistoryService* const history_service =
  87. client()->GetHistoryService();
  88. diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc
  89. --- a/components/omnibox/browser/search_provider.cc
  90. +++ b/components/omnibox/browser/search_provider.cc
  91. @@ -12,6 +12,7 @@
  92. #include "base/base64.h"
  93. #include "base/bind.h"
  94. #include "base/callback.h"
  95. +#include "base/command_line.h"
  96. #include "base/feature_list.h"
  97. #include "base/i18n/break_iterator.h"
  98. #include "base/i18n/case_conversion.h"
  99. @@ -646,6 +647,9 @@ void SearchProvider::Run(bool query_is_private) {
  100. }
  101. void SearchProvider::DoHistoryQuery(bool minimal_changes) {
  102. + if (base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering"))
  103. + return;
  104. +
  105. // The history query results are synchronous, so if minimal_changes is true,
  106. // we still have the last results and don't need to do anything.
  107. if (minimal_changes)
  108. diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc
  109. --- a/components/url_formatter/url_fixer.cc
  110. +++ b/components/url_formatter/url_fixer.cc
  111. @@ -9,6 +9,8 @@
  112. #include <algorithm>
  113. #include "base/check_op.h"
  114. +#include "base/containers/contains.h"
  115. +#include "base/command_line.h"
  116. #include "base/files/file_path.h"
  117. #include "base/files/file_util.h"
  118. #include "base/ranges/algorithm.h"
  119. @@ -607,6 +609,8 @@ GURL FixupURL(const std::string& text, const std::string& desired_tld) {
  120. FixupHost(trimmed, parts.host, parts.scheme.is_valid(), desired_tld, &url);
  121. if (chrome_url && !parts.host.is_valid())
  122. + if (!base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering") ||
  123. + base::Contains(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("omnibox-autocomplete-filtering"), "chrome"))
  124. url.append(kChromeUIDefaultHost);
  125. FixupPort(trimmed, parts.port, &url);
  126. FixupPath(trimmed, parts.path, &url);