Skip to content

Commit 1b6a1b8

Browse files
[Omnibox]: Hide OnDeviceHeadProvider suggestions when top suggestions are disabled
1 parent aa1b311 commit 1b6a1b8

17 files changed

+152
-14
lines changed

app/brave_settings_strings.grdp

+2-2
Original file line numberDiff line numberDiff line change
@@ -252,8 +252,8 @@
252252
<message name="IDS_SETTINGS_APPEARANCE_SETTINGS_SHOW_AUTOCOMPLETE_IN_ADDRESS_BAR" desc="The label for settings switch controlling the showing of autocomplete in address bar">
253253
Show autocomplete suggestions in address bar
254254
</message>
255-
<message name="IDS_SETTINGS_APPEARANCE_SETTINGS_USE_AUTOCOMPLETE_TOP_SITES" desc="The label for settings checkbox controlling whether or not top sites show up in autocomplete">
256-
Top sites
255+
<message name="IDS_SETTINGS_APPEARANCE_SETTINGS_USE_AUTOCOMPLETE_TOP_SUGGESTIONS" desc="The label for settings checkbox controlling whether or not top suggestions show up in autocomplete">
256+
Top Suggestions
257257
</message>
258258
<message name="IDS_SETTINGS_APPEARANCE_SETTINGS_USE_AUTOCOMPLETE_HISTORY" desc="The label for settings checkbox controlling whether or not browsing history shows up in autocomplete">
259259
Browsing History

browser/extensions/api/settings_private/brave_prefs_util.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ const PrefsUtil::TypedPrefMap& BravePrefsUtil::GetAllowlistedKeys() {
129129
(*s_brave_allowlist)[kLocationBarIsWide] = settings_api::PrefType::kBoolean;
130130
(*s_brave_allowlist)[omnibox::kAutocompleteEnabled] =
131131
settings_api::PrefType::kBoolean;
132-
(*s_brave_allowlist)[omnibox::kTopSiteSuggestionsEnabled] =
132+
(*s_brave_allowlist)[omnibox::kTopSuggestionsEnabled] =
133133
settings_api::PrefType::kBoolean;
134134
(*s_brave_allowlist)[omnibox::kHistorySuggestionsEnabled] =
135135
settings_api::PrefType::kBoolean;

browser/resources/settings/brave_appearance_page/toolbar.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@
105105
<settings-checkbox
106106
class="cr-row list-item"
107107
pref="{{prefs.brave.top_site_suggestions_enabled}}"
108-
label="$i18n{appearanceSettingsUseTopSiteSuggestions}">
108+
label="$i18n{appearanceSettingsUseTopSuggestions}">
109109
</settings-checkbox>
110110
<settings-checkbox
111111
class="cr-row list-item"

browser/ui/webui/settings/brave_settings_localized_strings_provider.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,8 @@ void BraveAddCommonStrings(content::WebUIDataSource* html_source,
250250
IDS_SETTINGS_NEVER_SHOW_BOOKMARK_BAR_DESC},
251251
{"appearanceSettingsShowAutocompleteInAddressBar",
252252
IDS_SETTINGS_APPEARANCE_SETTINGS_SHOW_AUTOCOMPLETE_IN_ADDRESS_BAR},
253-
{"appearanceSettingsUseTopSiteSuggestions",
254-
IDS_SETTINGS_APPEARANCE_SETTINGS_USE_AUTOCOMPLETE_TOP_SITES},
253+
{"appearanceSettingsUseTopSuggestions",
254+
IDS_SETTINGS_APPEARANCE_SETTINGS_USE_AUTOCOMPLETE_TOP_SUGGESTIONS},
255255
{"appearanceSettingsUseHistorySuggestions",
256256
IDS_SETTINGS_APPEARANCE_SETTINGS_USE_AUTOCOMPLETE_HISTORY},
257257
{"appearanceSettingsUseBookmarkSuggestions",

chromium_src/components/omnibox/browser/autocomplete_controller.cc

+3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "brave/components/omnibox/browser/brave_history_quick_provider.h"
1919
#include "brave/components/omnibox/browser/brave_history_url_provider.h"
2020
#include "brave/components/omnibox/browser/brave_local_history_zero_suggest_provider.h"
21+
#include "brave/components/omnibox/browser/brave_on_device_head_provider.h"
2122
#include "brave/components/omnibox/browser/brave_search_provider.h"
2223
#include "brave/components/omnibox/browser/brave_shortcuts_provider.h"
2324
#include "brave/components/omnibox/browser/leo_provider.h"
@@ -94,6 +95,7 @@ void MaybeShowLeoMatch(AutocompleteResult* result) {
9495
#define LocalHistoryZeroSuggestProvider BraveLocalHistoryZeroSuggestProvider
9596
#define BookmarkProvider BraveBookmarkProvider
9697
#define ShortcutsProvider BraveShortcutsProvider
98+
#define OnDeviceHeadProvider BraveOnDeviceHeadProvider
9799
#define BRAVE_AUTOCOMPLETE_CONTROLLER_AUTOCOMPLETE_CONTROLLER \
98100
MaybeAddCommanderProvider(providers_, this); \
99101
MaybeAddLeoProvider(providers_, this); \
@@ -114,6 +116,7 @@ void MaybeShowLeoMatch(AutocompleteResult* result) {
114116

115117
#undef BRAVE_AUTOCOMPLETE_CONTROLLER_UPDATE_RESULT
116118
#undef BRAVE_AUTOCOMPLETE_CONTROLLER_AUTOCOMPLETE_CONTROLLER
119+
#undef OnDeviceHeadProvider
117120
#undef ShortcutsProvider
118121
#undef BookmarkProvider
119122
#undef LocalHistoryZeroSuggestProvider
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright (c) 2025 The Brave Authors. All rights reserved.
2+
// This Source Code Form is subject to the terms of the Mozilla Public
3+
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
4+
// You can obtain one at https://mozilla.org/MPL/2.0/.
5+
6+
#ifndef BRAVE_CHROMIUM_SRC_COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_PROVIDER_H_
7+
#define BRAVE_CHROMIUM_SRC_COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_PROVIDER_H_
8+
9+
#define OnDeviceHeadProviderTest \
10+
OnDeviceHeadProviderTest; \
11+
friend class BraveOnDeviceHeadProvider
12+
13+
#include "src/components/omnibox/browser/on_device_head_provider.h" // IWYU pragma: export
14+
15+
#undef OnDeviceHeadProviderTest
16+
17+
#endif // BRAVE_CHROMIUM_SRC_COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_PROVIDER_H_

components/omnibox/browser/BUILD.gn

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ source_set("unit_tests") {
2222
"//brave/components/omnibox/browser/on_device_head_provider_unittest.cc",
2323
"//brave/components/omnibox/browser/topsites_provider_unittest.cc",
2424
"brave_autocomplete_result_unittest.cc",
25+
"brave_on_device_head_provider_unittest.cc",
2526
"brave_search_suggestion_parser_unittest.cc",
2627
"promotion_unittest.cc",
2728
]

components/omnibox/browser/brave_omnibox_prefs.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace omnibox {
1111

1212
void RegisterBraveProfilePrefs(PrefRegistrySimple* registry) {
1313
registry->RegisterBooleanPref(kAutocompleteEnabled, true);
14-
registry->RegisterBooleanPref(kTopSiteSuggestionsEnabled, true);
14+
registry->RegisterBooleanPref(kTopSuggestionsEnabled, true);
1515
registry->RegisterBooleanPref(kHistorySuggestionsEnabled, true);
1616
registry->RegisterBooleanPref(kBookmarkSuggestionsEnabled, true);
1717
registry->RegisterBooleanPref(kCommanderSuggestionsEnabled, true);

components/omnibox/browser/brave_omnibox_prefs.h

+5-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@ namespace omnibox {
1414
// the individual prefs listed below.
1515
inline constexpr char kAutocompleteEnabled[] = "brave.autocomplete_enabled";
1616

17-
// Determines whether top sites show up in the omnibox results. See
18-
// |TopsitesProvider|.
19-
inline constexpr char kTopSiteSuggestionsEnabled[] =
17+
// Determines whether top suggestions show up in the omnibox results. See
18+
// TopSitesProvider and BraveOnDeviceHeadProvider.
19+
// Note: Originally this only controlled TopSitesProvider, but now it also
20+
// controls BraveOnDeviceHeadProvider, hence the pref name.
21+
inline constexpr char kTopSuggestionsEnabled[] =
2022
"brave.top_site_suggestions_enabled";
2123

2224
// Determines whether history suggestions show up in the omnibox results. This
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright (c) 2025 The Brave Authors. All rights reserved.
2+
// This Source Code Form is subject to the terms of the Mozilla Public
3+
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
4+
// You can obtain one at https://mozilla.org/MPL/2.0/.
5+
6+
#include "brave/components/omnibox/browser/brave_on_device_head_provider.h"
7+
8+
#include "brave/components/omnibox/browser/brave_omnibox_prefs.h"
9+
#include "components/omnibox/browser/autocomplete_provider_client.h"
10+
#include "components/omnibox/browser/autocomplete_provider_listener.h"
11+
#include "components/prefs/pref_service.h"
12+
13+
// static
14+
BraveOnDeviceHeadProvider* BraveOnDeviceHeadProvider::Create(
15+
AutocompleteProviderClient* client,
16+
AutocompleteProviderListener* listener) {
17+
return new BraveOnDeviceHeadProvider(client, listener);
18+
}
19+
20+
void BraveOnDeviceHeadProvider::Start(const AutocompleteInput& input,
21+
bool minimal_changes) {
22+
auto* prefs = client_->GetPrefs();
23+
if (!prefs || !prefs->GetBoolean(omnibox::kTopSuggestionsEnabled)) {
24+
matches_.clear();
25+
return;
26+
}
27+
OnDeviceHeadProvider::Start(input, minimal_changes);
28+
}
29+
30+
BraveOnDeviceHeadProvider::~BraveOnDeviceHeadProvider() = default;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Copyright (c) 2025 The Brave Authors. All rights reserved.
2+
// This Source Code Form is subject to the terms of the Mozilla Public
3+
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
4+
// You can obtain one at https://mozilla.org/MPL/2.0/.
5+
6+
#ifndef BRAVE_COMPONENTS_OMNIBOX_BROWSER_BRAVE_ON_DEVICE_HEAD_PROVIDER_H_
7+
#define BRAVE_COMPONENTS_OMNIBOX_BROWSER_BRAVE_ON_DEVICE_HEAD_PROVIDER_H_
8+
9+
#include "components/omnibox/browser/on_device_head_provider.h"
10+
11+
class BraveOnDeviceHeadProvider : public OnDeviceHeadProvider {
12+
public:
13+
static BraveOnDeviceHeadProvider* Create(
14+
AutocompleteProviderClient* client,
15+
AutocompleteProviderListener* listener);
16+
17+
void Start(const AutocompleteInput& input, bool minimal_changes) override;
18+
19+
protected:
20+
using OnDeviceHeadProvider::OnDeviceHeadProvider;
21+
~BraveOnDeviceHeadProvider() override;
22+
};
23+
24+
#endif // BRAVE_COMPONENTS_OMNIBOX_BROWSER_BRAVE_ON_DEVICE_HEAD_PROVIDER_H_
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Copyright (c) 2025 The Brave Authors. All rights reserved.
2+
// This Source Code Form is subject to the terms of the Mozilla Public
3+
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
4+
// You can obtain one at https://mozilla.org/MPL/2.0/.
5+
6+
#include "brave/components/omnibox/browser/brave_on_device_head_provider.h"
7+
8+
#include <memory>
9+
#include <string_view>
10+
11+
#include "base/memory/scoped_refptr.h"
12+
#include "base/strings/utf_string_conversions.h"
13+
#include "brave/components/omnibox/browser/brave_fake_autocomplete_provider_client.h"
14+
#include "brave/components/omnibox/browser/brave_omnibox_prefs.h"
15+
#include "components/omnibox/browser/autocomplete_input.h"
16+
#include "components/omnibox/browser/autocomplete_provider_listener.h"
17+
#include "components/omnibox/browser/test_scheme_classifier.h"
18+
#include "components/prefs/pref_service.h"
19+
#include "content/public/test/browser_task_environment.h"
20+
#include "testing/gtest/include/gtest/gtest.h"
21+
22+
class BraveOnDeviceHeadProviderTest : public testing::Test,
23+
public AutocompleteProviderListener {
24+
public:
25+
AutocompleteInput CreateAutocompleteInput(std::string_view text) {
26+
AutocompleteInput input(base::UTF8ToUTF16(text),
27+
metrics::OmniboxEventProto::OTHER, classifier_);
28+
return input;
29+
}
30+
31+
void SetUp() override {
32+
provider_ =
33+
base::WrapRefCounted(BraveOnDeviceHeadProvider::Create(&client_, this));
34+
}
35+
36+
void OnProviderUpdate(bool updated_matches,
37+
const AutocompleteProvider* provider) override {}
38+
39+
PrefService* prefs() { return client_.GetPrefs(); }
40+
41+
protected:
42+
content::BrowserTaskEnvironment task_environment_;
43+
TestSchemeClassifier classifier_;
44+
BraveFakeAutocompleteProviderClient client_;
45+
scoped_refptr<BraveOnDeviceHeadProvider> provider_;
46+
};
47+
48+
TEST_F(BraveOnDeviceHeadProviderTest, SuggestionsDisabledNoResults) {
49+
prefs()->SetBoolean(omnibox::kTopSuggestionsEnabled, false);
50+
provider_->Start(CreateAutocompleteInput("Hello"), false);
51+
EXPECT_TRUE(provider_->done());
52+
EXPECT_TRUE(provider_->matches().empty());
53+
}
54+
55+
TEST_F(BraveOnDeviceHeadProviderTest, SuggestionsEnabledRunsProvider) {
56+
prefs()->SetBoolean(omnibox::kTopSuggestionsEnabled, true);
57+
provider_->Start(CreateAutocompleteInput("Hello"), false);
58+
EXPECT_FALSE(provider_->done());
59+
}

components/omnibox/browser/omnibox_autocomplete_unittest.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ class OmniboxAutocompleteUnitTest : public testing::Test {
2525
};
2626

2727
TEST_F(OmniboxAutocompleteUnitTest, TopSiteSuggestionsEnabledTest) {
28-
EXPECT_TRUE(prefs()->GetBoolean(omnibox::kTopSiteSuggestionsEnabled));
28+
EXPECT_TRUE(prefs()->GetBoolean(omnibox::kTopSuggestionsEnabled));
2929
}

components/omnibox/browser/promotion_unittest.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class OmniboxPromotionTest : public testing::Test {
8585
void SetUp() override {
8686
RegisterPrefs(pref_service_.registry());
8787
omnibox::RegisterBraveProfilePrefs(pref_service_.registry());
88-
pref_service_.SetBoolean(omnibox::kTopSiteSuggestionsEnabled, false);
88+
pref_service_.SetBoolean(omnibox::kTopSuggestionsEnabled, false);
8989

9090
scoped_default_locale_ =
9191
std::make_unique<brave_l10n::test::ScopedDefaultLocale>("en_US");

components/omnibox/browser/sources.gni

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ brave_components_omnibox_browser_sources = [
1717
"//brave/components/omnibox/browser/brave_local_history_zero_suggest_provider.h",
1818
"//brave/components/omnibox/browser/brave_omnibox_prefs.cc",
1919
"//brave/components/omnibox/browser/brave_omnibox_prefs.h",
20+
"//brave/components/omnibox/browser/brave_on_device_head_provider.cc",
21+
"//brave/components/omnibox/browser/brave_on_device_head_provider.h",
2022
"//brave/components/omnibox/browser/brave_search_provider.cc",
2123
"//brave/components/omnibox/browser/brave_search_provider.h",
2224
"//brave/components/omnibox/browser/brave_search_suggestion_parser.cc",

components/omnibox/browser/topsites_provider.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ void TopSitesProvider::Start(const AutocompleteInput& input,
537537
bool minimal_changes) {
538538
matches_.clear();
539539
auto* prefs = client_->GetPrefs();
540-
if (!prefs || !prefs->GetBoolean(omnibox::kTopSiteSuggestionsEnabled)) {
540+
if (!prefs || !prefs->GetBoolean(omnibox::kTopSuggestionsEnabled)) {
541541
return;
542542
}
543543

components/omnibox/browser/topsites_provider_unittest.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ TEST_F(TopSitesProviderTest, SmokeTest) {
5454
}
5555

5656
TEST_F(TopSitesProviderTest, NoMatchingWhenPrefIsOff) {
57-
prefs()->SetBoolean(omnibox::kTopSiteSuggestionsEnabled, false);
57+
prefs()->SetBoolean(omnibox::kTopSuggestionsEnabled, false);
5858
provider_->Start(CreateAutocompleteInput("dex"), false);
5959
EXPECT_TRUE(provider_->matches().empty());
6060
}

0 commit comments

Comments
 (0)