From 8325553236f87ef8f5f503a329c0c08323e1eddb Mon Sep 17 00:00:00 2001 From: Simon Hong Date: Mon, 15 Mar 2021 21:10:30 +0900 Subject: [PATCH 1/2] Add don't ask again checkbox to default browser prompt Default browser prompot is disabled if it's checked and user will not see this prompt anymore. This checking is stored in local state so new profile also can't see this prompt dialog anymore. fix https://github.com/brave/brave-browser/issues/14469 --- app/brave_generated_resources.grd | 7 ++++--- browser/brave_local_state_prefs.cc | 2 ++ ...fs_browsertest.cc => brave_prefs_browsertest.cc} | 7 +++++++ browser/ui/BUILD.gn | 1 + browser/ui/startup/default_brave_browser_prompt.cc | 7 +++++-- .../ui/views/brave_default_browser_dialog_view.cc | 13 +++++++++++-- .../ui/views/brave_default_browser_dialog_view.h | 2 ++ common/pref_names.cc | 2 ++ common/pref_names.h | 1 + test/BUILD.gn | 2 +- 10 files changed, 36 insertions(+), 8 deletions(-) rename browser/{brave_profile_prefs_browsertest.cc => brave_prefs_browsertest.cc} (95%) diff --git a/app/brave_generated_resources.grd b/app/brave_generated_resources.grd index ef4575426231..2208169fa0d3 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", From ef4d70315b163e66f80dba90aa7fcb11df28c847 Mon Sep 17 00:00:00 2001 From: Simon Hong Date: Wed, 7 Apr 2021 07:47:01 +0900 Subject: [PATCH 2/2] Fixed string description typo --- app/brave_generated_resources.grd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/brave_generated_resources.grd b/app/brave_generated_resources.grd index 2208169fa0d3..b8fac3b21fd9 100644 --- a/app/brave_generated_resources.grd +++ b/app/brave_generated_resources.grd @@ -969,7 +969,7 @@ By installing this extension, you are agreeing to the Google Widevine Terms of U Keep browsing the web faster - up to 6x faster on major news sites. - + Don't ask again