diff --git a/app/brave_generated_resources.grd b/app/brave_generated_resources.grd index ef4575426231..b8fac3b21fd9 100644 --- a/app/brave_generated_resources.grd +++ b/app/brave_generated_resources.grd @@ -967,9 +967,10 @@ By installing this extension, you are agreeing to the Google Widevine Terms of U Set Brave as your default browser - Brave browser is currently not set as your default browser. -Set Brave as your default to keep browsing the web faster - -up to 6x faster on major news sites. + Keep browsing the web faster - up to 6x faster on major news sites. + + + Don't ask again Set as default diff --git a/browser/brave_local_state_prefs.cc b/browser/brave_local_state_prefs.cc index fc13fd2a091a..ed535d7e7c62 100644 --- a/browser/brave_local_state_prefs.cc +++ b/browser/brave_local_state_prefs.cc @@ -94,6 +94,8 @@ void RegisterLocalStatePrefs(PrefRegistrySimple* registry) { BraveWindowTracker::RegisterPrefs(registry); BraveUptimeTracker::RegisterPrefs(registry); dark_mode::RegisterBraveDarkModeLocalStatePrefs(registry); + + registry->RegisterBooleanPref(kDefaultBrowserPromptEnabled, true); #endif #if BUILDFLAG(ENABLE_WIDEVINE) diff --git a/browser/brave_profile_prefs_browsertest.cc b/browser/brave_prefs_browsertest.cc similarity index 95% rename from browser/brave_profile_prefs_browsertest.cc rename to browser/brave_prefs_browsertest.cc index 5a56f2169f2f..508072b5f5b1 100644 --- a/browser/brave_profile_prefs_browsertest.cc +++ b/browser/brave_prefs_browsertest.cc @@ -9,6 +9,7 @@ #include "brave/components/brave_wallet/common/buildflags/buildflags.h" #include "brave/components/brave_wayback_machine/buildflags.h" #include "brave/components/ipfs/buildflags/buildflags.h" +#include "chrome/browser/browser_process.h" #include "chrome/browser/net/prediction_options.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" @@ -36,6 +37,7 @@ #endif using BraveProfilePrefsBrowserTest = InProcessBrowserTest; +using BraveLocalStatePrefsBrowserTest = InProcessBrowserTest; // Check download prompt preference is set to true by default. IN_PROC_BROWSER_TEST_F(BraveProfilePrefsBrowserTest, DownloadPromptDefault) { @@ -123,3 +125,8 @@ IN_PROC_BROWSER_TEST_F(BraveProfilePrefsBrowserTest, EXPECT_TRUE( browser()->profile()->GetPrefs()->GetBoolean(prefs::kHideWebStoreIcon)); } + +IN_PROC_BROWSER_TEST_F(BraveLocalStatePrefsBrowserTest, DefaultLocalStateTest) { + EXPECT_TRUE(g_browser_process->local_state()->GetBoolean( + kDefaultBrowserPromptEnabled)); +} diff --git a/browser/ui/BUILD.gn b/browser/ui/BUILD.gn index 33e6bfba4762..d00727c66c48 100644 --- a/browser/ui/BUILD.gn +++ b/browser/ui/BUILD.gn @@ -250,6 +250,7 @@ source_set("ui") { "//brave/ui/brave_ads/public/cpp", "//chrome/app:command_ids", "//chrome/app/vector_icons:vector_icons", + "//chrome/browser:browser_process", "//chrome/common", "//chrome/services/qrcode_generator", "//components/content_settings/browser", diff --git a/browser/ui/startup/default_brave_browser_prompt.cc b/browser/ui/startup/default_brave_browser_prompt.cc index c917c462f874..764dcdd2d6f1 100644 --- a/browser/ui/startup/default_brave_browser_prompt.cc +++ b/browser/ui/startup/default_brave_browser_prompt.cc @@ -139,15 +139,18 @@ void ShowDefaultBraveBrowserPrompt(Profile* profile) { return; #endif + PrefService* local_prefs = g_browser_process->local_state(); // Do not check if Chrome is the default browser if there is a policy in // control of this setting. - if (g_browser_process->local_state()->IsManagedPreference( - prefs::kDefaultBrowserSettingEnabled)) { + if (local_prefs->IsManagedPreference(prefs::kDefaultBrowserSettingEnabled)) { // Handling of the browser.default_browser_setting_enabled policy setting is // taken care of in BrowserProcessImpl. return; } + if (!local_prefs->GetBoolean(kDefaultBrowserPromptEnabled)) + return; + PrefService* prefs = profile->GetPrefs(); // Reset preferences if kResetCheckDefaultBrowser is true. if (prefs->GetBoolean(prefs::kResetCheckDefaultBrowser)) { diff --git a/browser/ui/views/brave_default_browser_dialog_view.cc b/browser/ui/views/brave_default_browser_dialog_view.cc index da9eb3de07b1..1bd3340242b9 100644 --- a/browser/ui/views/brave_default_browser_dialog_view.cc +++ b/browser/ui/views/brave_default_browser_dialog_view.cc @@ -10,12 +10,17 @@ #include "base/bind.h" #include "base/memory/scoped_refptr.h" #include "brave/browser/ui/browser_dialogs.h" +#include "brave/common/pref_names.h" #include "brave/grit/brave_generated_resources.h" +#include "chrome/browser/browser_process.h" #include "chrome/browser/shell_integration.h" +#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" #include "components/constrained_window/constrained_window_views.h" +#include "components/prefs/pref_service.h" #include "ui/base/l10n/l10n_util.h" #include "ui/views/bubble/bubble_frame_view.h" +#include "ui/views/controls/button/checkbox.h" #include "ui/views/controls/label.h" #include "ui/views/layout/box_layout.h" #include "ui/views/layout/layout_provider.h" @@ -105,7 +110,10 @@ void BraveDefaultBrowserDialogView::CreateChildViews() { contents_font)); contents_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); contents_label_->SetMultiLine(true); - contents_label_->SetMaxLines(3); + contents_label_->SetMaximumWidth(350); + + dont_ask_again_checkbox_ = AddChildView(std::make_unique( + l10n_util::GetStringUTF16(IDS_BRAVE_DEFAULT_BROWSER_DIALOG_DONT_ASK))); } std::unique_ptr @@ -143,7 +151,8 @@ void BraveDefaultBrowserDialogView::OnDialogInitialized() { } void BraveDefaultBrowserDialogView::OnCancelButtonClicked() { - // Do nothing. + g_browser_process->local_state()->SetBoolean( + kDefaultBrowserPromptEnabled, !dont_ask_again_checkbox_->GetChecked()); } void BraveDefaultBrowserDialogView::OnAcceptButtonClicked() { diff --git a/browser/ui/views/brave_default_browser_dialog_view.h b/browser/ui/views/brave_default_browser_dialog_view.h index 299e845c65d0..3216f9bf2954 100644 --- a/browser/ui/views/brave_default_browser_dialog_view.h +++ b/browser/ui/views/brave_default_browser_dialog_view.h @@ -11,6 +11,7 @@ #include "ui/views/window/dialog_delegate.h" namespace views { +class Checkbox; class Label; } // namespace views @@ -37,6 +38,7 @@ class BraveDefaultBrowserDialogView : public views::DialogDelegateView { views::Label* header_label_ = nullptr; views::Label* contents_label_ = nullptr; + views::Checkbox* dont_ask_again_checkbox_ = nullptr; }; #endif // BRAVE_BROWSER_UI_VIEWS_BRAVE_DEFAULT_BROWSER_DIALOG_VIEW_H_ diff --git a/common/pref_names.cc b/common/pref_names.cc index 4d9175d5f2d1..104ac617682b 100644 --- a/common/pref_names.cc +++ b/common/pref_names.cc @@ -87,6 +87,8 @@ const char kBraveSuggestedSiteSuggestionsEnabled[] = const char kBraveDarkMode[] = "brave.dark_mode"; const char kOtherBookmarksMigrated[] = "brave.other_bookmarks_migrated"; const char kBraveShieldsSettingsVersion[] = "brave.shields_settings_version"; +const char kDefaultBrowserPromptEnabled[] = + "brave.default_browser_prompot_enabled"; #if !BUILDFLAG(USE_GCM_FROM_PLATFORM) const char kBraveGCMChannelStatus[] = "brave.gcm.channel_status"; #endif diff --git a/common/pref_names.h b/common/pref_names.h index a3435d4aa105..12e7dda3fcc8 100644 --- a/common/pref_names.h +++ b/common/pref_names.h @@ -74,6 +74,7 @@ extern const char kOtherBookmarksMigrated[]; extern const char kBraveShieldsSettingsVersion[]; extern const char kBinanceAccessToken[]; extern const char kBinanceRefreshToken[]; +extern const char kDefaultBrowserPromptEnabled[]; #if !BUILDFLAG(USE_GCM_FROM_PLATFORM) extern const char kBraveGCMChannelStatus[]; #endif diff --git a/test/BUILD.gn b/test/BUILD.gn index 69ade15d3283..297c85047ad2 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -539,7 +539,7 @@ if (!is_android) { "//brave/app/brave_main_delegate_browsertest.cc", "//brave/app/brave_main_delegate_runtime_flags_browsertest.cc", "//brave/browser/brave_content_browser_client_browsertest.cc", - "//brave/browser/brave_profile_prefs_browsertest.cc", + "//brave/browser/brave_prefs_browsertest.cc", "//brave/browser/brave_resources_browsertest.cc", "//brave/browser/brave_scheme_load_browsertest.cc", "//brave/browser/brave_search/brave_search_browsertest.cc",