From 577d2c46fc4768075c06ce8e1ec6959fe05d9adc Mon Sep 17 00:00:00 2001 From: "Brian R. Bondy" Date: Thu, 23 Apr 2020 10:50:45 -0400 Subject: [PATCH 1/2] Add preferences for top sites and site suggestions --- app/brave_generated_resources.grd | 6 +++++ browser/brave_profile_prefs.cc | 2 ++ .../api/settings_private/brave_prefs_util.cc | 4 ++++ .../brave_appearance_page.html | 8 +++++++ .../omnibox_autocomplete_browsertest.cc | 11 +++++++++ .../settings_localized_strings_provider.cc | 4 ++++ common/pref_names.cc | 3 +++ common/pref_names.h | 2 ++ .../fake_autocomplete_provider_client.cc | 19 +++++++++++++++ .../fake_autocomplete_provider_client.h | 24 +++++++++++++++++++ .../browser/suggested_sites_provider.cc | 10 +++++++- .../browser/suggested_sites_provider.h | 1 + .../suggested_sites_provider_unittest.cc | 16 +++++++++++-- .../omnibox/browser/topsites_provider.cc | 9 ++++++- .../omnibox/browser/topsites_provider.h | 11 +++++---- .../browser/topsites_provider_unittest.cc | 15 +++++++++++- test/BUILD.gn | 4 +++- 17 files changed, 139 insertions(+), 10 deletions(-) create mode 100644 components/omnibox/browser/fake_autocomplete_provider_client.cc create mode 100644 components/omnibox/browser/fake_autocomplete_provider_client.h diff --git a/app/brave_generated_resources.grd b/app/brave_generated_resources.grd index c1da458aa36d..78012014f2d1 100644 --- a/app/brave_generated_resources.grd +++ b/app/brave_generated_resources.grd @@ -267,6 +267,12 @@ By installing this extension, you are agreeing to the Google Widevine Terms of U Show autocomplete in address bar + + Show top sites in autocomplete suggestions + + + Show Brave suggested sites in autocomplete suggestions + New Tab Page diff --git a/browser/brave_profile_prefs.cc b/browser/brave_profile_prefs.cc index 4f0e8756970e..720ce1f19681 100644 --- a/browser/brave_profile_prefs.cc +++ b/browser/brave_profile_prefs.cc @@ -217,6 +217,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { // Autocomplete in address bar registry->RegisterBooleanPref(kAutocompleteEnabled, true); + registry->RegisterBooleanPref(kTopSiteSuggestionsEnabled, true); + registry->RegisterBooleanPref(kBraveSuggestedSiteSuggestionsEnabled, true); // Password leak detection should be disabled registry->SetDefaultPrefValue( diff --git a/browser/extensions/api/settings_private/brave_prefs_util.cc b/browser/extensions/api/settings_private/brave_prefs_util.cc index 88f76af3f48b..b264cbc3107c 100644 --- a/browser/extensions/api/settings_private/brave_prefs_util.cc +++ b/browser/extensions/api/settings_private/brave_prefs_util.cc @@ -66,6 +66,10 @@ const PrefsUtil::TypedPrefMap& BravePrefsUtil::GetWhitelistedKeys() { settings_api::PrefType::PREF_TYPE_BOOLEAN; (*s_brave_whitelist)[kAutocompleteEnabled] = settings_api::PrefType::PREF_TYPE_BOOLEAN; + (*s_brave_whitelist)[kTopSiteSuggestionsEnabled] = + settings_api::PrefType::PREF_TYPE_BOOLEAN; + (*s_brave_whitelist)[kBraveSuggestedSiteSuggestionsEnabled] = + settings_api::PrefType::PREF_TYPE_BOOLEAN; (*s_brave_whitelist)[brave_rewards::prefs::kHideBraveRewardsButton] = settings_api::PrefType::PREF_TYPE_BOOLEAN; (*s_brave_whitelist)[kAskWidevineInstall] = diff --git a/browser/resources/settings/brave_appearance_page/brave_appearance_page.html b/browser/resources/settings/brave_appearance_page/brave_appearance_page.html index 2d11f393b344..f9493c81317d 100644 --- a/browser/resources/settings/brave_appearance_page/brave_appearance_page.html +++ b/browser/resources/settings/brave_appearance_page/brave_appearance_page.html @@ -118,6 +118,14 @@ pref="{{prefs.brave.autocomplete_enabled}}" label="$i18n{appearanceSettingsShowAutocompleteInAddressBar}"> + + + + diff --git a/browser/ui/views/omnibox/omnibox_autocomplete_browsertest.cc b/browser/ui/views/omnibox/omnibox_autocomplete_browsertest.cc index 70eee8cdef75..d945ba7e4cde 100644 --- a/browser/ui/views/omnibox/omnibox_autocomplete_browsertest.cc +++ b/browser/ui/views/omnibox/omnibox_autocomplete_browsertest.cc @@ -58,3 +58,14 @@ IN_PROC_BROWSER_TEST_F(OmniboxAutocompleteTest, AutocompleteDisabledTest) { EXPECT_TRUE(popup_model()->result().empty()); EXPECT_FALSE(popup_view()->IsOpen()); } + +IN_PROC_BROWSER_TEST_F(OmniboxAutocompleteTest, TopSiteSuggestionsEnabledTest) { + EXPECT_TRUE(browser()->profile()->GetPrefs()->GetBoolean( + kTopSiteSuggestionsEnabled)); +} + +IN_PROC_BROWSER_TEST_F(OmniboxAutocompleteTest, + BraveSuggestedSiteSuggestionsEnabledTest) { + EXPECT_TRUE(browser()->profile()->GetPrefs()->GetBoolean( + kBraveSuggestedSiteSuggestionsEnabled)); +} diff --git a/chromium_src/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chromium_src/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc index 3f826851d192..6ef1621890d1 100644 --- a/chromium_src/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chromium_src/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc @@ -63,6 +63,10 @@ void BraveAddCommonStrings(content::WebUIDataSource* html_source, IDS_SETTINGS_ALWAYS_SHOW_BOOKMARK_BAR_ON_NTP}, {"appearanceSettingsShowAutocompleteInAddressBar", IDS_SETTINGS_APPEARANCE_SETTINGS_SHOW_AUTOCOMPLETE_IN_ADDRESS_BAR}, + {"appearanceSettingsUseTopSiteSuggestions", + IDS_SETTINGS_APPEARANCE_SETTINGS_USE_AUTOCOMPLETE_TOP_SITES}, + {"appearanceSettingsUseBraveSuggestedSiteSuggestions", + IDS_SETTINGS_APPEARANCE_SETTINGS_USE_AUTOCOMPLETE_BRAVE_SUGGESTED_SITES}, {"appearanceSettingsGetMoreThemes", IDS_SETTINGS_APPEARANCE_SETTINGS_GET_MORE_THEMES}, {"appearanceBraveDefaultImagesOptionLabel", diff --git a/common/pref_names.cc b/common/pref_names.cc index 0cc9459321cc..380d9f52a633 100644 --- a/common/pref_names.cc +++ b/common/pref_names.cc @@ -77,6 +77,9 @@ const char kAlwaysShowBookmarkBarOnNTP[] = "brave.always_show_bookmark_bar_on_ntp"; const char kRemoteDebuggingEnabled[] = "brave.remote_debugging_enabled"; const char kAutocompleteEnabled[] = "brave.autocomplete_enabled"; +const char kTopSiteSuggestionsEnabled[] = "brave.top_site_suggestions_enabled"; +const char kBraveSuggestedSiteSuggestionsEnabled[] = + "brave.brave_suggested_site_suggestions_enabled"; const char kBraveDarkMode[] = "brave.dark_mode"; const char kOtherBookmarksMigrated[] = "brave.other_bookmarks_migrated"; const char kBraveShieldsSettingsVersion[] = "brave.shields_settings_version"; diff --git a/common/pref_names.h b/common/pref_names.h index e65890f9beec..8753e2057321 100644 --- a/common/pref_names.h +++ b/common/pref_names.h @@ -66,6 +66,8 @@ extern const char kBraveWalletWeb3Provider[]; extern const char kAlwaysShowBookmarkBarOnNTP[]; extern const char kRemoteDebuggingEnabled[]; extern const char kAutocompleteEnabled[]; +extern const char kTopSiteSuggestionsEnabled[]; +extern const char kBraveSuggestedSiteSuggestionsEnabled[]; extern const char kBraveDarkMode[]; extern const char kOtherBookmarksMigrated[]; extern const char kBraveShieldsSettingsVersion[]; diff --git a/components/omnibox/browser/fake_autocomplete_provider_client.cc b/components/omnibox/browser/fake_autocomplete_provider_client.cc new file mode 100644 index 000000000000..890fb9676387 --- /dev/null +++ b/components/omnibox/browser/fake_autocomplete_provider_client.cc @@ -0,0 +1,19 @@ +/* Copyright (c) 2020 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "brave/components/omnibox/browser/fake_autocomplete_provider_client.h" + +#include "brave/common/pref_names.h" +#include "components/prefs/pref_registry_simple.h" + +FakeAutocompleteProviderClient::FakeAutocompleteProviderClient() { + auto* registry = pref_service_.registry(); + registry->RegisterBooleanPref(kTopSiteSuggestionsEnabled, true); + registry->RegisterBooleanPref(kBraveSuggestedSiteSuggestionsEnabled, true); +} + +PrefService* FakeAutocompleteProviderClient::GetPrefs() { + return &pref_service_; +} diff --git a/components/omnibox/browser/fake_autocomplete_provider_client.h b/components/omnibox/browser/fake_autocomplete_provider_client.h new file mode 100644 index 000000000000..13fbddd8afc3 --- /dev/null +++ b/components/omnibox/browser/fake_autocomplete_provider_client.h @@ -0,0 +1,24 @@ +/* Copyright (c) 2020 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef BRAVE_COMPONENTS_OMNIBOX_BROWSER_FAKE_AUTOCOMPLETE_PROVIDER_CLIENT_H_ +#define BRAVE_COMPONENTS_OMNIBOX_BROWSER_FAKE_AUTOCOMPLETE_PROVIDER_CLIENT_H_ + +#include "brave/components/omnibox/browser/suggested_sites_provider.h" + +#include "components/omnibox/browser/mock_autocomplete_provider_client.h" +#include "components/prefs/testing_pref_service.h" + +class FakeAutocompleteProviderClient : public MockAutocompleteProviderClient { + public: + FakeAutocompleteProviderClient(); + PrefService* GetPrefs() override; + + private: + TestingPrefServiceSimple pref_service_; + DISALLOW_COPY_AND_ASSIGN(FakeAutocompleteProviderClient); +}; + +#endif // BRAVE_COMPONENTS_OMNIBOX_BROWSER_FAKE_AUTOCOMPLETE_PROVIDER_CLIENT_H_ diff --git a/components/omnibox/browser/suggested_sites_provider.cc b/components/omnibox/browser/suggested_sites_provider.cc index 24f592b04544..5ef858d630d2 100644 --- a/components/omnibox/browser/suggested_sites_provider.cc +++ b/components/omnibox/browser/suggested_sites_provider.cc @@ -9,7 +9,10 @@ #include #include "base/strings/utf_string_conversions.h" +#include "brave/common/pref_names.h" #include "components/omnibox/browser/autocomplete_input.h" +#include "components/omnibox/browser/autocomplete_provider_client.h" +#include "components/prefs/pref_service.h" // As from autocomplete_provider.h: // Search Secondary Provider (suggestion) | 100++ @@ -18,12 +21,17 @@ const int SuggestedSitesProvider::kRelevance = 100; SuggestedSitesProvider::SuggestedSitesProvider( AutocompleteProviderClient* client) - : AutocompleteProvider(AutocompleteProvider::TYPE_SEARCH) { + : AutocompleteProvider(AutocompleteProvider::TYPE_SEARCH), client_(client) { } void SuggestedSitesProvider::Start(const AutocompleteInput& input, bool minimal_changes) { matches_.clear(); + auto* prefs = client_->GetPrefs(); + if (!prefs || !prefs->GetBoolean(kBraveSuggestedSiteSuggestionsEnabled)) { + return; + } + if (input.from_omnibox_focus() || (input.type() == metrics::OmniboxInputType::EMPTY) || (input.type() == metrics::OmniboxInputType::QUERY)) { diff --git a/components/omnibox/browser/suggested_sites_provider.h b/components/omnibox/browser/suggested_sites_provider.h index c75b2f213bc0..259a4a3d61d8 100644 --- a/components/omnibox/browser/suggested_sites_provider.h +++ b/components/omnibox/browser/suggested_sites_provider.h @@ -40,6 +40,7 @@ class SuggestedSitesProvider : public AutocompleteProvider { const std::string &input_text, const std::string &site); + AutocompleteProviderClient* client_; DISALLOW_COPY_AND_ASSIGN(SuggestedSitesProvider); }; diff --git a/components/omnibox/browser/suggested_sites_provider_unittest.cc b/components/omnibox/browser/suggested_sites_provider_unittest.cc index fd97b732e0dc..d2fa74f67232 100644 --- a/components/omnibox/browser/suggested_sites_provider_unittest.cc +++ b/components/omnibox/browser/suggested_sites_provider_unittest.cc @@ -6,8 +6,10 @@ #include "brave/components/omnibox/browser/suggested_sites_provider.h" #include "base/strings/utf_string_conversions.h" -#include "components/omnibox/browser/mock_autocomplete_provider_client.h" +#include "brave/common/pref_names.h" +#include "brave/components/omnibox/browser/fake_autocomplete_provider_client.h" #include "components/omnibox/browser/test_scheme_classifier.h" +#include "components/prefs/testing_pref_service.h" #include "testing/gtest/include/gtest/gtest.h" class SuggestedSitesProviderTest : public testing::Test { @@ -23,9 +25,13 @@ class SuggestedSitesProviderTest : public testing::Test { return input; } + PrefService* prefs() { + return client_.GetPrefs(); + } + protected: TestSchemeClassifier classifier_; - MockAutocompleteProviderClient client_; + FakeAutocompleteProviderClient client_; scoped_refptr provider_; }; @@ -67,3 +73,9 @@ TEST_F(SuggestedSitesProviderTest, OnlyMatchFromStart) { provider_->Start(CreateAutocompleteInput("base"), false); EXPECT_TRUE(provider_->matches().empty()); } + +TEST_F(SuggestedSitesProviderTest, NoMatchingWhenPrefIsOff) { + prefs()->SetBoolean(kBraveSuggestedSiteSuggestionsEnabled, false); + provider_->Start(CreateAutocompleteInput("coinb"), false); + EXPECT_TRUE(provider_->matches().empty()); +} diff --git a/components/omnibox/browser/topsites_provider.cc b/components/omnibox/browser/topsites_provider.cc index 9347e24e970a..996426a18bc6 100644 --- a/components/omnibox/browser/topsites_provider.cc +++ b/components/omnibox/browser/topsites_provider.cc @@ -12,8 +12,10 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" +#include "brave/common/pref_names.h" #include "components/omnibox/browser/autocomplete_input.h" #include "components/omnibox/browser/history_provider.h" +#include "components/prefs/pref_service.h" // As from autocomplete_provider.h: // Search Secondary Provider (suggestion) | 100++ @@ -21,12 +23,17 @@ const int TopSitesProvider::kRelevance = 100; TopSitesProvider::TopSitesProvider(AutocompleteProviderClient* client) - : AutocompleteProvider(AutocompleteProvider::TYPE_SEARCH) { + : AutocompleteProvider(AutocompleteProvider::TYPE_SEARCH), client_(client) { } void TopSitesProvider::Start(const AutocompleteInput& input, bool minimal_changes) { matches_.clear(); + auto* prefs = client_->GetPrefs(); + if (!prefs || !prefs->GetBoolean(kTopSiteSuggestionsEnabled)) { + return; + } + if (input.from_omnibox_focus() || (input.type() == metrics::OmniboxInputType::EMPTY) || (input.type() == metrics::OmniboxInputType::QUERY)) diff --git a/components/omnibox/browser/topsites_provider.h b/components/omnibox/browser/topsites_provider.h index 9c1ff58df452..04db377c3d17 100644 --- a/components/omnibox/browser/topsites_provider.h +++ b/components/omnibox/browser/topsites_provider.h @@ -1,10 +1,12 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public +/* Copyright (c) 2020 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#ifndef COMPONENTS_OMNIBOX_BROWSER_TOPSITES_PROVIDER_H_ -#define COMPONENTS_OMNIBOX_BROWSER_TOPSITES_PROVIDER_H_ +#ifndef BRAVE_COMPONENTS_OMNIBOX_BROWSER_TOPSITES_PROVIDER_H_ +#define BRAVE_COMPONENTS_OMNIBOX_BROWSER_TOPSITES_PROVIDER_H_ +#include #include #include "base/compiler_specific.h" @@ -38,7 +40,8 @@ class TopSitesProvider : public AutocompleteProvider { const std::string &site, const size_t &foundPos); + AutocompleteProviderClient* client_; DISALLOW_COPY_AND_ASSIGN(TopSitesProvider); }; -#endif // COMPONENTS_OMNIBOX_BROWSER_TOPSITES_PROVIDER_H_ +#endif // BRAVE_COMPONENTS_OMNIBOX_BROWSER_TOPSITES_PROVIDER_H_ diff --git a/components/omnibox/browser/topsites_provider_unittest.cc b/components/omnibox/browser/topsites_provider_unittest.cc index 291f8f7104ab..6abaf563a752 100644 --- a/components/omnibox/browser/topsites_provider_unittest.cc +++ b/components/omnibox/browser/topsites_provider_unittest.cc @@ -6,8 +6,11 @@ #include "brave/components/omnibox/browser/topsites_provider.h" #include "base/strings/utf_string_conversions.h" +#include "brave/common/pref_names.h" +#include "brave/components/omnibox/browser/fake_autocomplete_provider_client.h" #include "components/omnibox/browser/mock_autocomplete_provider_client.h" #include "components/omnibox/browser/test_scheme_classifier.h" +#include "components/prefs/testing_pref_service.h" #include "testing/gtest/include/gtest/gtest.h" class TopSitesProviderTest : public testing::Test { @@ -22,9 +25,13 @@ class TopSitesProviderTest : public testing::Test { return input; } + PrefService* prefs() { + return client_.GetPrefs(); + } + protected: TestSchemeClassifier classifier_; - MockAutocompleteProviderClient client_; + FakeAutocompleteProviderClient client_; scoped_refptr provider_; }; @@ -43,3 +50,9 @@ TEST_F(TopSitesProviderTest, SmokeTest) { provider_->Start(CreateAutocompleteInput("테스트"), false); EXPECT_TRUE(provider_->matches().empty()); } + +TEST_F(TopSitesProviderTest, NoMatchingWhenPrefIsOff) { + prefs()->SetBoolean(kTopSiteSuggestionsEnabled, false); + provider_->Start(CreateAutocompleteInput("dex"), false); + EXPECT_TRUE(provider_->matches().empty()); +} diff --git a/test/BUILD.gn b/test/BUILD.gn index d2cea40d2c69..9d0256708c42 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -203,8 +203,10 @@ test("brave_unit_tests") { "//brave/browser/autocomplete/brave_autocomplete_provider_client_unittest.cc", "//brave/browser/autoplay/autoplay_permission_context_unittest.cc", "//brave/components/brave_shields/browser/brave_shields_util_unittest.cc", - "//brave/components/omnibox/browser/topsites_provider_unittest.cc", + "//brave/components/omnibox/browser/fake_autocomplete_provider_client.cc", + "//brave/components/omnibox/browser/fake_autocomplete_provider_client.h", "//brave/components/omnibox/browser/suggested_sites_provider_unittest.cc", + "//brave/components/omnibox/browser/topsites_provider_unittest.cc", "//brave/chromium_src/components/search_engines/brave_template_url_prepopulate_data_unittest.cc", "//brave/chromium_src/components/search_engines/brave_template_url_service_util_unittest.cc", "//brave/chromium_src/chrome/browser/external_protocol/external_protocol_handler_unittest.cc", From 7c44cc134d3f67fdb38c5adc74a710a66b4c7dbd Mon Sep 17 00:00:00 2001 From: "Brian R. Bondy" Date: Mon, 4 May 2020 13:38:55 -0400 Subject: [PATCH 2/2] Fix URLs and show entries for dupe match strings --- .../omnibox/browser/suggested_sites_match.cc | 8 +- .../omnibox/browser/suggested_sites_match.h | 7 +- .../browser/suggested_sites_provider.cc | 19 +-- .../browser/suggested_sites_provider.h | 7 +- .../browser/suggested_sites_provider_data.cc | 143 ++++++++++-------- 5 files changed, 105 insertions(+), 79 deletions(-) diff --git a/components/omnibox/browser/suggested_sites_match.cc b/components/omnibox/browser/suggested_sites_match.cc index d8e102d27a15..943a46933596 100644 --- a/components/omnibox/browser/suggested_sites_match.cc +++ b/components/omnibox/browser/suggested_sites_match.cc @@ -6,17 +6,23 @@ #include "brave/components/omnibox/browser/suggested_sites_match.h" // This is the provider for Brave Suggested Sites -SuggestedSitesMatch::SuggestedSitesMatch(const GURL& destination_url, +SuggestedSitesMatch::SuggestedSitesMatch(const std::string& match_string, + const GURL& destination_url, const GURL& stripped_destination_url, const base::string16& display, const bool allow_default) : + match_string_(match_string), destination_url_(destination_url), stripped_destination_url_(stripped_destination_url), display_(display), allow_default_(allow_default) { } SuggestedSitesMatch::SuggestedSitesMatch(const SuggestedSitesMatch& other) { + match_string_ = other.match_string_; destination_url_ = other.destination_url_; stripped_destination_url_ = other.stripped_destination_url_; display_ = other.display_; allow_default_ = other.allow_default_; } + +SuggestedSitesMatch::~SuggestedSitesMatch() { +} diff --git a/components/omnibox/browser/suggested_sites_match.h b/components/omnibox/browser/suggested_sites_match.h index a78145e0d765..a815c3fa9092 100644 --- a/components/omnibox/browser/suggested_sites_match.h +++ b/components/omnibox/browser/suggested_sites_match.h @@ -6,6 +6,8 @@ #ifndef BRAVE_COMPONENTS_OMNIBOX_BROWSER_SUGGESTED_SITES_MATCH_H_ #define BRAVE_COMPONENTS_OMNIBOX_BROWSER_SUGGESTED_SITES_MATCH_H_ +#include + #include "base/strings/string16.h" #include "url/gurl.h" @@ -13,10 +15,13 @@ class SuggestedSitesMatch { public: SuggestedSitesMatch(const SuggestedSitesMatch& other); - SuggestedSitesMatch(const GURL& destination_url, + SuggestedSitesMatch(const std::string& match_string, + const GURL& destination_url, const GURL& stripped_destination_url, const base::string16& display, const bool allow_default); + ~SuggestedSitesMatch(); + std::string match_string_; GURL destination_url_; GURL stripped_destination_url_; base::string16 display_; diff --git a/components/omnibox/browser/suggested_sites_provider.cc b/components/omnibox/browser/suggested_sites_provider.cc index 5ef858d630d2..5d685e9447b4 100644 --- a/components/omnibox/browser/suggested_sites_provider.cc +++ b/components/omnibox/browser/suggested_sites_provider.cc @@ -25,7 +25,7 @@ SuggestedSitesProvider::SuggestedSitesProvider( } void SuggestedSitesProvider::Start(const AutocompleteInput& input, - bool minimal_changes) { + bool minimal_changes) { matches_.clear(); auto* prefs = client_->GetPrefs(); if (!prefs || !prefs->GetBoolean(kBraveSuggestedSiteSuggestionsEnabled)) { @@ -41,15 +41,13 @@ void SuggestedSitesProvider::Start(const AutocompleteInput& input, const std::string input_text = base::ToLowerASCII(base::UTF16ToUTF8(input.text())); auto check_add_match = - [&](const std::pair& pair) { - const std::string& current_site = pair.first; - const SuggestedSitesMatch& match = pair.second; + [&](const SuggestedSitesMatch& match) { // Don't bother matching until 4 chars, or less if it's an exact match if (input_text.length() < 4 && - current_site.length() != input_text.length()) { + match.match_string_.length() != input_text.length()) { return; } - size_t foundPos = current_site.find(input_text); + size_t foundPos = match.match_string_.find(input_text); // We'd normally check for npos here but we want only people that // really want these suggestions. Example don't suggest bitcoin and // litecoin for just a coin search. @@ -57,9 +55,9 @@ void SuggestedSitesProvider::Start(const AutocompleteInput& input, ACMatchClassifications styles = StylesForSingleMatch(input_text, base::UTF16ToASCII(match.display_)); - AddMatch(base::ASCIIToUTF16(current_site), match, styles); + AddMatch(match, styles); if (match.allow_default_ && - current_site.length() == input_text.length()) { + match.match_string_.length() == input_text.length()) { // It's guaranteed that matches_ has at least 1 item // here because of the previous AddMatch call. size_t last_index = matches_.size() - 1; @@ -104,9 +102,8 @@ ACMatchClassifications SuggestedSitesProvider::StylesForSingleMatch( return styles; } -void SuggestedSitesProvider::AddMatch(const base::string16& match_string, - const SuggestedSitesMatch& data, - const ACMatchClassifications& styles) { +void SuggestedSitesProvider::AddMatch(const SuggestedSitesMatch& data, + const ACMatchClassifications& styles) { AutocompleteMatch match(this, kRelevance + matches_.size(), false, AutocompleteMatchType::NAVSUGGEST); match.fill_into_edit = data.display_; diff --git a/components/omnibox/browser/suggested_sites_provider.h b/components/omnibox/browser/suggested_sites_provider.h index 259a4a3d61d8..c32da987c3d4 100644 --- a/components/omnibox/browser/suggested_sites_provider.h +++ b/components/omnibox/browser/suggested_sites_provider.h @@ -6,7 +6,7 @@ #ifndef BRAVE_COMPONENTS_OMNIBOX_BROWSER_SUGGESTED_SITES_PROVIDER_H_ #define BRAVE_COMPONENTS_OMNIBOX_BROWSER_SUGGESTED_SITES_PROVIDER_H_ -#include +#include #include #include "base/compiler_specific.h" @@ -28,12 +28,11 @@ class SuggestedSitesProvider : public AutocompleteProvider { private: ~SuggestedSitesProvider() override; - static std::map suggested_sites_; + static std::vector suggested_sites_; static const int kRelevance; - void AddMatch(const base::string16& match_string, - const SuggestedSitesMatch& match, + void AddMatch(const SuggestedSitesMatch& match, const ACMatchClassifications& styles); static ACMatchClassifications StylesForSingleMatch( diff --git a/components/omnibox/browser/suggested_sites_provider_data.cc b/components/omnibox/browser/suggested_sites_provider_data.cc index 8ad803ba62ba..4aaaf25f5f0d 100644 --- a/components/omnibox/browser/suggested_sites_provider_data.cc +++ b/components/omnibox/browser/suggested_sites_provider_data.cc @@ -7,132 +7,151 @@ #include "base/strings/utf_string_conversions.h" -std::map +std::vector SuggestedSitesProvider::suggested_sites_ = { { - "binance.com", SuggestedSitesMatch( + SuggestedSitesMatch( + "binance.com", GURL("https://www.binance.com?ref=39346846"), GURL("https://www.binance.com"), base::ASCIIToUTF16("binance.com?ref=39346846"), true) }, { - "bitcoin", SuggestedSitesMatch( - GURL("https://www.binance.com/buy-sell-crypto" + SuggestedSitesMatch( + "bitcoin", + GURL("https://www.binance.com/en/buy-sell-crypto" "?fiat=USD&crypto=BTC&ref=39346846&utm_source=brave"), - GURL("https://www.binance.com/buy-sell-crypto?crypto=BTC"), - base::ASCIIToUTF16("binance.com/buy-sell-crypto?crypto=BTC&ref=39346846"), + GURL("https://www.binance.com/en/buy-sell-crypto?crypto=BTC"), + base::ASCIIToUTF16("binance.com/en/buy-sell-crypto?crypto=BTC&ref=39346846"), // NOLINT false) }, { - "btc", SuggestedSitesMatch( - GURL("https://www.binance.com/buy-sell-crypto" + SuggestedSitesMatch( + "btc", + GURL("https://www.binance.com/en/buy-sell-crypto" "?fiat=USD&crypto=BTC&ref=39346846&utm_source=brave"), - GURL("https://www.binance.com/buy-sell-crypto?crypto=BTC"), - base::ASCIIToUTF16("binance.com/buy-sell-crypto?crypto=BTC&ref=39346846"), + GURL("https://www.binance.com/en/buy-sell-crypto?crypto=BTC"), + base::ASCIIToUTF16("binance.com/en/buy-sell-crypto?crypto=BTC&ref=39346846"), // NOLINT false) }, { - "ethereum", SuggestedSitesMatch( - GURL("https://www.binance.com/buy-sell-crypto" + SuggestedSitesMatch( + "ethereum", + GURL("https://www.binance.com/en/buy-sell-crypto" "?fiat=USD&crypto=ETH&ref=39346846&utm_source=brave"), - GURL("https://www.binance.com/buy-sell-crypto?crypto=ETH"), - base::ASCIIToUTF16("binance.com/buy-sell-crypto?crypto=ETH&ref=39346846"), + GURL("https://www.binance.com/en/buy-sell-crypto?crypto=ETH"), + base::ASCIIToUTF16("binance.com/en/buy-sell-crypto?crypto=ETH&ref=39346846"), // NOLINT false) }, { - "eth", SuggestedSitesMatch( - GURL("https://www.binance.com/buy-sell-crypto" + SuggestedSitesMatch( + "eth", + GURL("https://www.binance.com/en/buy-sell-crypto" "?fiat=USD&crypto=ETH&ref=39346846&utm_source=brave"), - GURL("https://www.binance.com/buy-sell-crypto?crypto=ETH"), - base::ASCIIToUTF16("binance.com/buy-sell-crypto?crypto=ETH&ref=39346846"), + GURL("https://www.binance.com/en/buy-sell-crypto?crypto=ETH"), + base::ASCIIToUTF16("binance.com/en/buy-sell-crypto?crypto=ETH&ref=39346846"), // NOLINT false) }, { - "litecoin", SuggestedSitesMatch( - GURL("https://www.binance.com/buy-sell-crypto" + SuggestedSitesMatch( + "litecoin", + GURL("https://www.binance.com/en/buy-sell-crypto" "?fiat=USD&crypto=LTC&ref=39346846&utm_source=brave"), - GURL("https://www.binance.com/buy-sell-crypto?crypto=LTC"), - base::ASCIIToUTF16("binance.com/buy-sell-crypto?crypto=LTC&ref=39346846"), + GURL("https://www.binance.com/en/buy-sell-crypto?crypto=LTC"), + base::ASCIIToUTF16("binance.com/en/buy-sell-crypto?crypto=LTC&ref=39346846"), // NOLINT false) }, { - "ltc", SuggestedSitesMatch( - GURL("https://www.binance.com/buy-sell-crypto" + SuggestedSitesMatch( + "ltc", + GURL("https://www.binance.com/en/buy-sell-crypto" "?fiat=USD&crypto=LTC&ref=39346846&utm_source=brave"), - GURL("https://www.binance.com/buy-sell-crypto?crypto=LTC"), - base::ASCIIToUTF16("binance.com/buy-sell-crypto?crypto=LTC&ref=39346846"), + GURL("https://www.binance.com/en/buy-sell-crypto?crypto=LTC"), + base::ASCIIToUTF16("binance.com/en/buy-sell-crypto?crypto=LTC&ref=39346846"), // NOLINT false) }, { - "bnb", SuggestedSitesMatch( - GURL("https://www.binance.com/buy-sell-crypto" + SuggestedSitesMatch( + "bnb", + GURL("https://www.binance.com/en/buy-sell-crypto" "?fiat=USD&crypto=BNB&ref=39346846&utm_source=brave"), - GURL("https://www.binance.com/buy-sell-crypto?crypto=BNB"), - base::ASCIIToUTF16("binance.com/buy-sell-crypto?crypto=BNB&ref=39346846"), + GURL("https://www.binance.com/en/buy-sell-crypto?crypto=BNB"), + base::ASCIIToUTF16("binance.com/en/buy-sell-crypto?crypto=BNB&ref=39346846"), // NOLINT false) }, { - "binance.us", SuggestedSitesMatch( + SuggestedSitesMatch( + "binance.us", GURL("https://www.binance.us?ref=35089877"), GURL("https://www.binance.us"), base::ASCIIToUTF16("binance.us?ref=35089877"), true) }, { - "bitcoin", SuggestedSitesMatch( - GURL("https://www.binance.us/buy-sell-crypto" + SuggestedSitesMatch( + "bitcoin", + GURL("https://www.binance.us/en/buy-sell-crypto" "?fiat=USD&crypto=BTC&ref=35089877&utm_source=brave"), - GURL("https://www.binance.us/buy-sell-crypto?crypto=BTC"), - base::ASCIIToUTF16("binance.us/buy-sell-crypto?crypto=BTC&ref=35089877"), + GURL("https://www.binance.us/en/buy-sell-crypto?crypto=BTC"), + base::ASCIIToUTF16("binance.us/en/buy-sell-crypto?crypto=BTC&ref=35089877"), // NOLINT false) }, { - "btc", SuggestedSitesMatch( - GURL("https://www.binance.us/buy-sell-crypto" + SuggestedSitesMatch( + "btc", + GURL("https://www.binance.us/en/buy-sell-crypto" "?fiat=USD&crypto=BTC&ref=35089877&utm_source=brave"), - GURL("https://www.binance.us/buy-sell-crypto?crypto=BTC"), - base::ASCIIToUTF16("binance.us/buy-sell-crypto?crypto=BTC&ref=35089877"), + GURL("https://www.binance.us/en/buy-sell-crypto?crypto=BTC"), + base::ASCIIToUTF16("binance.us/en/buy-sell-crypto?crypto=BTC&ref=35089877"), // NOLINT false) }, { - "ethereum", SuggestedSitesMatch( - GURL("https://www.binance.us/buy-sell-crypto" + SuggestedSitesMatch( + "ethereum", + GURL("https://www.binance.us/en/buy-sell-crypto" "?fiat=USD&crypto=ETH&ref=35089877&utm_source=brave"), - GURL("https://www.binance.us/buy-sell-crypto?crypto=ETH"), - base::ASCIIToUTF16("binance.us/buy-sell-crypto?crypto=ETH&ref=35089877"), + GURL("https://www.binance.us/en/buy-sell-crypto?crypto=ETH"), + base::ASCIIToUTF16("binance.us/en/buy-sell-crypto?crypto=ETH&ref=35089877"), // NOLINT false) }, { - "eth", SuggestedSitesMatch( - GURL("https://www.binance.us/buy-sell-crypto" + SuggestedSitesMatch( + "eth", + GURL("https://www.binance.us/en/buy-sell-crypto" "?fiat=USD&crypto=ETH&ref=35089877&utm_source=brave"), - GURL("https://www.binance.us/buy-sell-crypto?crypto=ETH"), - base::ASCIIToUTF16("binance.us/buy-sell-crypto?crypto=ETH&ref=35089877"), + GURL("https://www.binance.us/en/buy-sell-crypto?crypto=ETH"), + base::ASCIIToUTF16("binance.us/en/buy-sell-crypto?crypto=ETH&ref=35089877"), // NOLINT false) }, { - "litecoin", SuggestedSitesMatch( - GURL("https://www.binance.us/buy-sell-crypto" + SuggestedSitesMatch( + "litecoin", + GURL("https://www.binance.us/en/buy-sell-crypto" "?fiat=USD&crypto=LTC&ref=35089877&utm_source=brave"), - GURL("https://www.binance.us/buy-sell-crypto?crypto=LTC"), - base::ASCIIToUTF16("binance.us/buy-sell-crypto?crypto=LTC&ref=35089877"), + GURL("https://www.binance.us/en/buy-sell-crypto?crypto=LTC"), + base::ASCIIToUTF16("binance.us/en/buy-sell-crypto?crypto=LTC&ref=35089877"), // NOLINT false) }, { - "ltc", SuggestedSitesMatch( - GURL("https://www.binance.us/buy-sell-crypto" + SuggestedSitesMatch( + "ltc", + GURL("https://www.binance.us/en/buy-sell-crypto" "?fiat=USD&crypto=LTC&ref=35089877&utm_source=brave"), - GURL("https://www.binance.us/buy-sell-crypto?crypto=LTC"), - base::ASCIIToUTF16("binance.us/buy-sell-crypto?crypto=LTC&ref=35089877"), + GURL("https://www.binance.us/en/buy-sell-crypto?crypto=LTC"), + base::ASCIIToUTF16("binance.us/en/buy-sell-crypto?crypto=LTC&ref=35089877"), // NOLINT false) }, { - "bnb", SuggestedSitesMatch( - GURL("https://www.binance.us/buy-sell-crypto" + SuggestedSitesMatch( + "bnb", + GURL("https://www.binance.us/en/buy-sell-crypto" "?fiat=USD&crypto=BNB&ref=35089877&utm_source=brave"), - GURL("https://www.binance.us/buy-sell-crypto?crypto=BNB"), - base::ASCIIToUTF16("binance.us/buy-sell-crypto?crypto=BNB&ref=35089877"), + GURL("https://www.binance.us/en/buy-sell-crypto?crypto=BNB"), + base::ASCIIToUTF16("binance.us/en/buy-sell-crypto?crypto=BNB&ref=35089877"), // NOLINT false) }, { - "coinbase.com/join", SuggestedSitesMatch( + SuggestedSitesMatch( + "coinbase.com/join", GURL("https://www.coinbase.com/join/sezc_n"), GURL("https://www.coinbase.com/join"), base::ASCIIToUTF16("coinbase.com/join/sezc_n"), true) }, { - "ledger.com/pages/ledger-nano-x", SuggestedSitesMatch( + SuggestedSitesMatch( + "ledger.com/pages/ledger-nano-x", GURL("https://shop.ledger.com/pages/ledger-nano-x?r=0ba5d7199327"), GURL("https://shop.ledger.com/pages/ledger-nano-x"), base::ASCIIToUTF16("shop.ledger.com/pages/ledger-nano-x?r=0ba5d7199327"), true) }, { - "trezor.io/product/trezor-one-metallic", SuggestedSitesMatch( + SuggestedSitesMatch( + "trezor.io/product/trezor-one-metallic", GURL("https://shop.trezor.io/product/trezor-one-metallic" "?offer_id=24&aff_id=3494"), GURL("https://shop.trezor.io/product/trezor-one-metallic"),