From fd4e3ec87becbd7de44c04107767aa83992fd130 Mon Sep 17 00:00:00 2001 From: jj Date: Tue, 14 Oct 2025 21:52:17 +0200 Subject: [PATCH] helium/core: add "do not show again" to default browser nag (#264) --- .../add-default-browser-reject-button.patch | 131 ++++++++++++++++++ patches/helium/core/add-native-bangs.patch | 2 +- .../helium/core/add-updater-preference.patch | 2 +- .../core/hide-avatar-via-toolbar-prefs.patch | 2 +- .../hide-extensions-via-toolbar-prefs.patch | 2 +- ...n-new-tabs-next-to-active-tab-option.patch | 2 +- .../core/proxy-extension-downloads.patch | 2 +- .../core/reenable-spellcheck-downloads.patch | 2 +- .../helium/core/ublock-helium-services.patch | 2 +- patches/series | 1 + 10 files changed, 140 insertions(+), 8 deletions(-) create mode 100644 patches/helium/core/add-default-browser-reject-button.patch diff --git a/patches/helium/core/add-default-browser-reject-button.patch b/patches/helium/core/add-default-browser-reject-button.patch new file mode 100644 index 00000000..ca7606f3 --- /dev/null +++ b/patches/helium/core/add-default-browser-reject-button.patch @@ -0,0 +1,131 @@ +--- a/chrome/common/pref_names.h ++++ b/chrome/common/pref_names.h +@@ -1416,6 +1416,11 @@ inline constexpr char kExtensionCommands + inline constexpr char kPluginsAlwaysOpenPdfExternally[] = + "plugins.always_open_pdf_externally"; + ++// Boolean indicating that the user has rejected setting ++// the browser as default for an indefinite amount of time. ++inline constexpr char kHeliumDefaultBrowserRejected[] = ++ "helium.browser.default_browser_infobar_rejected"; ++ + // Int64 containing the internal value of the time at which the default browser + // infobar was last dismissed by the user. + inline constexpr char kDefaultBrowserLastDeclined[] = +--- a/chrome/browser/ui/browser_ui_prefs.cc ++++ b/chrome/browser/ui/browser_ui_prefs.cc +@@ -77,6 +77,8 @@ void RegisterBrowserPrefs(PrefRegistrySi + registry->RegisterIntegerPref(prefs::kDefaultBrowserDeclinedCount, 0); + registry->RegisterTimePref(prefs::kDefaultBrowserFirstShownTime, + base::Time()); ++ registry->RegisterBooleanPref(prefs::kHeliumDefaultBrowserRejected, false); ++ + #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) + registry->RegisterTimePref(prefs::kPdfInfoBarLastShown, base::Time()); + registry->RegisterIntegerPref(prefs::kPdfInfoBarTimesShown, 0); +--- a/chrome/browser/ui/startup/infobar_utils.cc ++++ b/chrome/browser/ui/startup/infobar_utils.cc +@@ -208,6 +208,11 @@ void AddInfoBarsIfNecessary(Browser* bro + return; + } + ++ PrefService* local_state = g_browser_process->local_state(); ++ if (local_state && local_state->GetBoolean(prefs::kHeliumDefaultBrowserRejected)) { ++ return; ++ } ++ + base::OnceCallback default_browser_prompt_shown_callback = + base::DoNothing(); + #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) +--- a/components/infobars/core/confirm_infobar_delegate.h ++++ b/components/infobars/core/confirm_infobar_delegate.h +@@ -81,6 +81,8 @@ class ConfirmInfoBarDelegate : public in + // custom layout to show the link text before the button. + virtual bool ShouldShowLinkBeforeButton() const; + ++ virtual bool OkButtonShouldAlwaysLead() const; ++ + #if BUILDFLAG(IS_IOS) + // Returns whether or not a tint should be applied to the icon background. + // Defaults to true. +--- a/components/infobars/core/confirm_infobar_delegate.cc ++++ b/components/infobars/core/confirm_infobar_delegate.cc +@@ -67,6 +67,10 @@ bool ConfirmInfoBarDelegate::ShouldShowL + return false; + } + ++bool ConfirmInfoBarDelegate::OkButtonShouldAlwaysLead() const { ++ return false; ++} ++ + #if BUILDFLAG(IS_IOS) + bool ConfirmInfoBarDelegate::UseIconBackgroundTint() const { + return true; +--- a/chrome/browser/ui/startup/default_browser_prompt/default_browser_infobar_delegate.cc ++++ b/chrome/browser/ui/startup/default_browser_prompt/default_browser_infobar_delegate.cc +@@ -112,13 +112,15 @@ std::u16string DefaultBrowserInfoBarDele + } + + int DefaultBrowserInfoBarDelegate::GetButtons() const { +- return BUTTON_OK; ++ return BUTTON_OK | BUTTON_CANCEL; + } + + std::u16string DefaultBrowserInfoBarDelegate::GetButtonLabel( + InfoBarButton button) const { +- DCHECK_EQ(BUTTON_OK, button); +- return l10n_util::GetStringUTF16(IDS_DEFAULT_BROWSER_INFOBAR_OK_BUTTON_LABEL); ++ DCHECK(button == BUTTON_OK || button == BUTTON_CANCEL); ++ return l10n_util::GetStringUTF16( ++ button == BUTTON_OK ? IDS_DEFAULT_BROWSER_INFOBAR_OK_BUTTON_LABEL ++ : IDS_CARET_BROWSING_DO_NOT_ASK); + } + + bool DefaultBrowserInfoBarDelegate::Accept() { +@@ -155,6 +157,21 @@ bool DefaultBrowserInfoBarDelegate::Acce + return ConfirmInfoBarDelegate::Accept(); + } + ++bool DefaultBrowserInfoBarDelegate::Cancel() { ++ PrefService* local_state = g_browser_process->local_state(); ++ if (!local_state) { ++ return true; ++ } ++ ++ local_state->SetBoolean(prefs::kHeliumDefaultBrowserRejected, true); ++ ++ return ConfirmInfoBarDelegate::Cancel(); ++} ++ + bool DefaultBrowserInfoBarDelegate::ShouldHideInFullscreen() const { + return true; + } ++ ++bool DefaultBrowserInfoBarDelegate::OkButtonShouldAlwaysLead() const { ++ return true; ++} +--- a/chrome/browser/ui/startup/default_browser_prompt/default_browser_infobar_delegate.h ++++ b/chrome/browser/ui/startup/default_browser_prompt/default_browser_infobar_delegate.h +@@ -61,7 +61,9 @@ class DefaultBrowserInfoBarDelegate : pu + int GetButtons() const override; + std::u16string GetButtonLabel(InfoBarButton button) const override; + bool Accept() override; ++ bool Cancel() override; + bool ShouldHideInFullscreen() const override; ++ bool OkButtonShouldAlwaysLead() const override; + + // The WebContents's corresponding profile. + raw_ptr profile_; +--- a/chrome/browser/ui/views/infobars/confirm_infobar.cc ++++ b/chrome/browser/ui/views/infobars/confirm_infobar.cc +@@ -123,7 +123,9 @@ void ConfirmInfoBar::Layout(PassKey) { + } + + if constexpr (!views::PlatformStyle::kIsOkButtonLeading) { +- std::ranges::reverse(order_of_buttons); ++ if (!GetDelegate()->OkButtonShouldAlwaysLead()) { ++ std::ranges::reverse(order_of_buttons); ++ } + } + + for (views::MdTextButton* button : order_of_buttons) { diff --git a/patches/helium/core/add-native-bangs.patch b/patches/helium/core/add-native-bangs.patch index 104c6a78..d3f7fabd 100644 --- a/patches/helium/core/add-native-bangs.patch +++ b/patches/helium/core/add-native-bangs.patch @@ -763,7 +763,7 @@ label="$i18n{heliumExtProxyToggle}" --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -202,6 +202,7 @@ void RegisterBrowserUserPrefs(user_prefs +@@ -204,6 +204,7 @@ void RegisterBrowserUserPrefs(user_prefs { registry->RegisterBooleanPref(prefs::kHeliumServicesEnabled, true); diff --git a/patches/helium/core/add-updater-preference.patch b/patches/helium/core/add-updater-preference.patch index a3935465..df6159dd 100644 --- a/patches/helium/core/add-updater-preference.patch +++ b/patches/helium/core/add-updater-preference.patch @@ -126,7 +126,7 @@ TODO: guard services_page.html with is_mac --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -213,6 +213,7 @@ void RegisterBrowserUserPrefs(user_prefs +@@ -215,6 +215,7 @@ void RegisterBrowserUserPrefs(user_prefs registry->RegisterStringPref(prefs::kHeliumServicesOrigin, ""); registry->RegisterBooleanPref(prefs::kHeliumDidOnboarding, false); registry->RegisterBooleanPref(prefs::kHeliumServicesConsented, false); diff --git a/patches/helium/core/hide-avatar-via-toolbar-prefs.patch b/patches/helium/core/hide-avatar-via-toolbar-prefs.patch index b9d9abc7..98035595 100644 --- a/patches/helium/core/hide-avatar-via-toolbar-prefs.patch +++ b/patches/helium/core/hide-avatar-via-toolbar-prefs.patch @@ -23,7 +23,7 @@ E(kActionShowPasswordManager, IDC_SHOW_PASSWORD_MANAGER) \ --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -117,6 +117,9 @@ void RegisterBrowserUserPrefs(user_prefs +@@ -119,6 +119,9 @@ void RegisterBrowserUserPrefs(user_prefs registry->RegisterBooleanPref(prefs::kPinSplitTabButton, false, pref_registration_flags); diff --git a/patches/helium/core/hide-extensions-via-toolbar-prefs.patch b/patches/helium/core/hide-extensions-via-toolbar-prefs.patch index 031e6f06..295c7c00 100644 --- a/patches/helium/core/hide-extensions-via-toolbar-prefs.patch +++ b/patches/helium/core/hide-extensions-via-toolbar-prefs.patch @@ -21,7 +21,7 @@ E(kActionShowPasswordManager, IDC_SHOW_PASSWORD_MANAGER) \ --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -119,6 +119,8 @@ void RegisterBrowserUserPrefs(user_prefs +@@ -121,6 +121,8 @@ void RegisterBrowserUserPrefs(user_prefs registry->RegisterBooleanPref( prefs::kShowAvatarButton, true); diff --git a/patches/helium/core/open-new-tabs-next-to-active-tab-option.patch b/patches/helium/core/open-new-tabs-next-to-active-tab-option.patch index 622f22d0..ba5ca6c1 100644 --- a/patches/helium/core/open-new-tabs-next-to-active-tab-option.patch +++ b/patches/helium/core/open-new-tabs-next-to-active-tab-option.patch @@ -39,7 +39,7 @@ label="$i18n{showTabGroupsInBookmarksBar}"> --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -104,6 +104,8 @@ void RegisterBrowserUserPrefs(user_prefs +@@ -106,6 +106,8 @@ void RegisterBrowserUserPrefs(user_prefs user_prefs::PrefRegistrySyncable::SYNCABLE_PREF; #endif diff --git a/patches/helium/core/proxy-extension-downloads.patch b/patches/helium/core/proxy-extension-downloads.patch index ad52cd2a..4676a312 100644 --- a/patches/helium/core/proxy-extension-downloads.patch +++ b/patches/helium/core/proxy-extension-downloads.patch @@ -177,7 +177,7 @@ --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -202,6 +202,7 @@ void RegisterBrowserUserPrefs(user_prefs +@@ -204,6 +204,7 @@ void RegisterBrowserUserPrefs(user_prefs { registry->RegisterBooleanPref(prefs::kHeliumServicesEnabled, true); diff --git a/patches/helium/core/reenable-spellcheck-downloads.patch b/patches/helium/core/reenable-spellcheck-downloads.patch index 9dc4d43c..2787b840 100644 --- a/patches/helium/core/reenable-spellcheck-downloads.patch +++ b/patches/helium/core/reenable-spellcheck-downloads.patch @@ -118,7 +118,7 @@ --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -204,6 +204,7 @@ void RegisterBrowserUserPrefs(user_prefs +@@ -206,6 +206,7 @@ void RegisterBrowserUserPrefs(user_prefs registry->RegisterBooleanPref(prefs::kHeliumServicesEnabled, true); registry->RegisterBooleanPref(prefs::kHeliumBangsEnabled, true); registry->RegisterBooleanPref(prefs::kHeliumExtProxyEnabled, true); diff --git a/patches/helium/core/ublock-helium-services.patch b/patches/helium/core/ublock-helium-services.patch index c0dd0d6a..8e545522 100644 --- a/patches/helium/core/ublock-helium-services.patch +++ b/patches/helium/core/ublock-helium-services.patch @@ -68,7 +68,7 @@ --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -214,6 +214,7 @@ void RegisterBrowserUserPrefs(user_prefs +@@ -216,6 +216,7 @@ void RegisterBrowserUserPrefs(user_prefs registry->RegisterBooleanPref(prefs::kHeliumDidOnboarding, false); registry->RegisterBooleanPref(prefs::kHeliumServicesConsented, false); registry->RegisterBooleanPref(prefs::kHeliumUpdateFetchingEnabled, true); diff --git a/patches/series b/patches/series index 402804fa..a8a1ca13 100644 --- a/patches/series +++ b/patches/series @@ -125,6 +125,7 @@ helium/core/search/remove-description-snippet-deps.patch helium/core/keyboard-shortcuts.patch helium/core/update-default-browser-prefs.patch +helium/core/add-default-browser-reject-button.patch helium/core/proxy-extension-downloads.patch helium/core/reenable-update-checks.patch helium/core/add-native-bangs.patch