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",