diff --git a/patches/helium/ui/toolbar-button-prefs.patch b/patches/helium/ui/toolbar-button-prefs.patch index 753e94f4..f39d4f29 100644 --- a/patches/helium/ui/toolbar-button-prefs.patch +++ b/patches/helium/ui/toolbar-button-prefs.patch @@ -1,14 +1,64 @@ +--- a/chrome/common/pref_names.h ++++ b/chrome/common/pref_names.h +@@ -1336,6 +1336,26 @@ inline constexpr char kSplitViewDragAndD + inline constexpr char kSplitViewDragAndDropNudgeUsedCount[] = + "browser.split_view_drag_and_drop_nudge_used_count"; + ++// A boolean pref set to true if the Back button should be visible on the ++// toolbar. ++inline constexpr char kShowBackButton[] = "helium.browser.show_back_button"; ++ ++// A boolean pref set to true if the Reload button should be visible on the ++// toolbar. ++inline constexpr char kShowReloadButton[] = "helium.browser.show_reload_button"; ++ ++// A boolean pref set to true if the Avatar button should be visible on the ++// toolbar. ++inline constexpr char kShowAvatarButton[] = "helium.browser.show_avatar_button"; ++ ++// A boolean pref set to true if the Extensions button should be visible on the ++// toolbar. ++inline constexpr char kShowExtensionsButton[] = "helium.browser.show_extensions_button"; ++ ++// A boolean pref set to true if the Menu button should be visible on the ++// toolbar. ++inline constexpr char kShowMenuButton[] = "helium.browser.show_menu_button"; ++ + // A boolean pref set to true if Gemini integration be enabled. This is managed + // by enterprise policy. + inline constexpr char kGeminiSettings[] = "browser.gemini_settings"; +--- a/chrome/browser/ui/browser_ui_prefs.cc ++++ b/chrome/browser/ui/browser_ui_prefs.cc +@@ -125,6 +125,12 @@ void RegisterBrowserUserPrefs(user_prefs + registry->RegisterBooleanPref(prefs::kPinSplitTabButton, false, + pref_registration_flags); + ++ registry->RegisterBooleanPref(prefs::kShowBackButton, true); ++ registry->RegisterBooleanPref(prefs::kShowReloadButton, true); ++ registry->RegisterBooleanPref(prefs::kShowAvatarButton, true); ++ registry->RegisterBooleanPref(prefs::kShowExtensionsButton, true); ++ registry->RegisterBooleanPref(prefs::kShowMenuButton, true); ++ + registry->RegisterInt64Pref(prefs::kDefaultBrowserLastDeclined, 0); + registry->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, true); + registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true); --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc -@@ -234,6 +234,12 @@ const PrefsUtil::TypedPrefMap& PrefsUtil +@@ -234,6 +234,18 @@ const PrefsUtil::TypedPrefMap& PrefsUtil (*s_allowlist)[::prefs::kSplitViewDragAndDropEnabled] = settings_api::PrefType::kBoolean; -+ // Custom toolbar button settings. ++ // Helium toolbar settings. ++ (*s_allowlist)[::prefs::kShowBackButton] = ++ settings_api::PrefType::kBoolean; ++ (*s_allowlist)[::prefs::kShowReloadButton] = ++ settings_api::PrefType::kBoolean; + (*s_allowlist)[::prefs::kShowAvatarButton] = + settings_api::PrefType::kBoolean; + (*s_allowlist)[::prefs::kShowExtensionsButton] = + settings_api::PrefType::kBoolean; ++ (*s_allowlist)[::prefs::kShowMenuButton] = ++ settings_api::PrefType::kBoolean; + // Appearance settings. (*s_allowlist)[::prefs::kCurrentThemeID] = settings_api::PrefType::kString; @@ -24,45 +74,43 @@ E(kActionNewIncognitoWindow, IDC_NEW_INCOGNITO_WINDOW) \ E(kActionSendSharedTabGroupFeedback, IDC_SEND_SHARED_TAB_GROUP_FEEDBACK) \ E(kActionShowPasswordManager, IDC_SHOW_PASSWORD_MANAGER) \ ---- a/chrome/browser/ui/browser_ui_prefs.cc -+++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -125,6 +125,11 @@ void RegisterBrowserUserPrefs(user_prefs - registry->RegisterBooleanPref(prefs::kPinSplitTabButton, false, - pref_registration_flags); - -+ registry->RegisterBooleanPref( -+ prefs::kShowAvatarButton, true); -+ registry->RegisterBooleanPref( -+ prefs::kShowExtensionsButton, true); -+ - registry->RegisterInt64Pref(prefs::kDefaultBrowserLastDeclined, 0); - registry->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, true); - registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true); --- a/chrome/browser/ui/toolbar/pinned_toolbar/pinned_toolbar_actions_model.cc +++ b/chrome/browser/ui/toolbar/pinned_toolbar/pinned_toolbar_actions_model.cc -@@ -216,6 +216,8 @@ void PinnedToolbarActionsModel::UpdatePi +@@ -216,6 +216,11 @@ void PinnedToolbarActionsModel::UpdatePi void PinnedToolbarActionsModel::ResetToDefault() { pref_service_->ClearPref(prefs::kShowHomeButton); pref_service_->ClearPref(prefs::kShowForwardButton); ++ pref_service_->ClearPref(prefs::kShowBackButton); ++ pref_service_->ClearPref(prefs::kShowReloadButton); + pref_service_->ClearPref(prefs::kShowAvatarButton); + pref_service_->ClearPref(prefs::kShowExtensionsButton); ++ pref_service_->ClearPref(prefs::kShowMenuButton); pref_service_->ClearPref(prefs::kPinnedActions); } -@@ -229,7 +231,15 @@ bool PinnedToolbarActionsModel::IsDefaul +@@ -229,7 +234,24 @@ bool PinnedToolbarActionsModel::IsDefaul const bool forward_is_default = pref_service_->GetDefaultPrefValue(prefs::kShowForwardButton) ->GetBool() == pref_service_->GetBoolean(prefs::kShowForwardButton); - return action_are_default && home_is_default && forward_is_default; ++ const bool back_is_default = ++ pref_service_->GetDefaultPrefValue(prefs::kShowBackButton) ++ ->GetBool() == pref_service_->GetBoolean(prefs::kShowBackButton); ++ const bool reload_is_default = ++ pref_service_->GetDefaultPrefValue(prefs::kShowReloadButton) ++ ->GetBool() == pref_service_->GetBoolean(prefs::kShowReloadButton); + const bool avatar_is_default = + pref_service_->GetDefaultPrefValue(prefs::kShowAvatarButton) + ->GetBool() == pref_service_->GetBoolean(prefs::kShowAvatarButton); + const bool extensions_is_default = + pref_service_->GetDefaultPrefValue(prefs::kShowExtensionsButton) + ->GetBool() == pref_service_->GetBoolean(prefs::kShowExtensionsButton); -+ return action_are_default && home_is_default && -+ forward_is_default && avatar_is_default && -+ extensions_is_default; ++ const bool menu_is_default = ++ pref_service_->GetDefaultPrefValue(prefs::kShowMenuButton) ++ ->GetBool() == pref_service_->GetBoolean(prefs::kShowMenuButton); ++ return action_are_default && home_is_default && forward_is_default && ++ back_is_default && reload_is_default && avatar_is_default && ++ extensions_is_default && menu_is_default; } void PinnedToolbarActionsModel::MaybeMigrateExistingPinnedStates() { @@ -78,17 +126,31 @@ #endif const std::string sab_value = base::CommandLine::ForCurrentProcess()-> -@@ -521,6 +520,25 @@ void ToolbarView::Init() { +@@ -521,6 +520,48 @@ void ToolbarView::Init() { home_->SetVisible(show_home_button_.GetValue()); ++ show_back_button_.Init( ++ prefs::kShowBackButton, prefs, ++ base::BindRepeating(&ToolbarView::OnShowBackButtonChanged, ++ base::Unretained(this))); ++ ++ back_->SetVisible(show_back_button_.GetValue()); ++ ++ show_reload_button_.Init( ++ prefs::kShowReloadButton, prefs, ++ base::BindRepeating(&ToolbarView::OnShowReloadButtonChanged, ++ base::Unretained(this))); ++ ++ reload_->SetVisible(show_reload_button_.GetValue()); ++ + show_avatar_button_.Init( + prefs::kShowAvatarButton, prefs, + base::BindRepeating(&ToolbarView::OnShowAvatarButtonChanged, + base::Unretained(this))); + -+ // avatar is always shown in incognito and guest profiles, -+ // but in regular profiles it's managed by the kShowAvatarButton pref ++ // Avatar is always shown in incognito and guest profiles, ++ // but in regular profiles it's managed by kShowAvatarButton pref. + if (browser_->profile()->IsRegularProfile()) { + avatar_->SetVisible(show_avatar_button_.GetValue()); + } @@ -100,11 +162,34 @@ + base::Unretained(this))); + extensions_container_->SetVisible(show_extensions_button_.GetValue()); + } ++ ++ if (app_menu_button_) { ++ show_menu_button_.Init( ++ prefs::kShowMenuButton, prefs, ++ base::BindRepeating(&ToolbarView::OnShowMenuButtonChanged, ++ base::Unretained(this))); ++ ++ app_menu_button_->SetVisible(show_menu_button_.GetValue()); ++ } + InitLayout(); for (auto* button : std::array{back_, forward_, reload_, -@@ -1200,6 +1218,14 @@ void ToolbarView::OnShowHomeButtonChange +@@ -1234,10 +1275,33 @@ void ToolbarView::OnShowForwardButtonCha + InvalidateLayout(); + } + ++void ToolbarView::OnShowBackButtonChanged() { ++ back_->SetVisible(show_back_button_.GetValue()); ++ InvalidateLayout(); ++} ++ ++void ToolbarView::OnShowReloadButtonChanged() { ++ reload_->SetVisible(show_reload_button_.GetValue()); ++ InvalidateLayout(); ++} ++ + void ToolbarView::OnShowHomeButtonChanged() { home_->SetVisible(show_home_button_.GetValue()); } @@ -115,88 +200,155 @@ +void ToolbarView::OnShowExtensionsButtonChanged() { + extensions_container_->SetVisible(show_extensions_button_.GetValue()); +} ++ ++void ToolbarView::OnShowMenuButtonChanged() { ++ app_menu_button_->SetVisible(show_menu_button_.GetValue()); ++ InvalidateLayout(); ++} + void ToolbarView::OnTouchUiChanged() { if (display_mode_ == DisplayMode::NORMAL) { // Update the internal margins for touch layout. --- a/chrome/browser/ui/views/toolbar/toolbar_view.h +++ b/chrome/browser/ui/views/toolbar/toolbar_view.h -@@ -268,6 +268,10 @@ class ToolbarView : public views::Access +@@ -277,6 +277,16 @@ class ToolbarView : public views::Access void OnShowHomeButtonChanged(); ++ void OnShowBackButtonChanged(); ++ ++ void OnShowReloadButtonChanged(); ++ + void OnShowAvatarButtonChanged(); + + void OnShowExtensionsButtonChanged(); ++ ++ void OnShowMenuButtonChanged(); + void OnTouchUiChanged(); void UpdateClipPath(); -@@ -318,6 +322,10 @@ class ToolbarView : public views::Access +@@ -327,6 +337,16 @@ class ToolbarView : public views::Access // Controls whether or not a home button should be shown on the toolbar. BooleanPrefMember show_home_button_; ++ BooleanPrefMember show_back_button_; ++ ++ BooleanPrefMember show_reload_button_; ++ + BooleanPrefMember show_avatar_button_; + + BooleanPrefMember show_extensions_button_; ++ ++ BooleanPrefMember show_menu_button_; + BooleanPrefMember show_chrome_labs_button_; // The display mode used when laying out the toolbar. --- a/chrome/browser/ui/webui/side_panel/customize_chrome/customize_toolbar/customize_toolbar.mojom +++ b/chrome/browser/ui/webui/side_panel/customize_chrome/customize_toolbar/customize_toolbar.mojom -@@ -16,6 +16,8 @@ enum ActionId { +@@ -16,6 +16,11 @@ enum ActionId { kShowSearchCompanion, kHome, kForward, ++ kBack, ++ kReload, + kAvatar, + kExtensions, ++ kMenu, kNewIncognitoWindow, kShowPasswordManager, kShowPaymentMethods, --- a/chrome/browser/ui/webui/side_panel/customize_chrome/customize_toolbar/customize_toolbar_handler.cc +++ b/chrome/browser/ui/webui/side_panel/customize_chrome/customize_toolbar/customize_toolbar_handler.cc -@@ -41,6 +41,10 @@ MojoActionForChromeAction(actions::Actio +@@ -41,6 +41,16 @@ MojoActionForChromeAction(actions::Actio return side_panel::customize_chrome::mojom::ActionId::kHome; case kActionForward: return side_panel::customize_chrome::mojom::ActionId::kForward; ++ case kActionBack: ++ return side_panel::customize_chrome::mojom::ActionId::kBack; ++ case kActionReload: ++ return side_panel::customize_chrome::mojom::ActionId::kReload; + case kActionAvatar: + return side_panel::customize_chrome::mojom::ActionId::kAvatar; + case kActionExtensions: + return side_panel::customize_chrome::mojom::ActionId::kExtensions; ++ case kActionShowAppMenu: ++ return side_panel::customize_chrome::mojom::ActionId::kMenu; case kActionNewIncognitoWindow: return side_panel::customize_chrome::mojom::ActionId::kNewIncognitoWindow; case kActionShowDownloads: -@@ -85,6 +89,10 @@ std::optional ChromeA +@@ -85,6 +95,16 @@ std::optional ChromeA return kActionHome; case side_panel::customize_chrome::mojom::ActionId::kForward: return kActionForward; ++ case side_panel::customize_chrome::mojom::ActionId::kBack: ++ return kActionBack; ++ case side_panel::customize_chrome::mojom::ActionId::kReload: ++ return kActionReload; + case side_panel::customize_chrome::mojom::ActionId::kAvatar: + return kActionAvatar; + case side_panel::customize_chrome::mojom::ActionId::kExtensions: + return kActionExtensions; ++ case side_panel::customize_chrome::mojom::ActionId::kMenu: ++ return kActionShowAppMenu; case side_panel::customize_chrome::mojom::ActionId::kNewIncognitoWindow: return kActionNewIncognitoWindow; case side_panel::customize_chrome::mojom::ActionId::kShowDownloads: -@@ -144,6 +152,14 @@ CustomizeToolbarHandler::CustomizeToolba +@@ -144,6 +164,26 @@ CustomizeToolbarHandler::CustomizeToolba prefs::kPinSplitTabButton, base::BindRepeating(&CustomizeToolbarHandler::OnPinSplitTabButtonChanged, base::Unretained(this))); + pref_change_registrar_.Add( ++ prefs::kShowBackButton, ++ base::BindRepeating(&CustomizeToolbarHandler::OnShowBackButtonChanged, ++ base::Unretained(this))); ++ pref_change_registrar_.Add( ++ prefs::kShowReloadButton, ++ base::BindRepeating(&CustomizeToolbarHandler::OnShowReloadButtonChanged, ++ base::Unretained(this))); ++ pref_change_registrar_.Add( + prefs::kShowAvatarButton, + base::BindRepeating(&CustomizeToolbarHandler::OnShowAvatarButtonChanged, + base::Unretained(this))); + pref_change_registrar_.Add( + prefs::kShowExtensionsButton, + base::BindRepeating(&CustomizeToolbarHandler::OnShowExtensionsButtonChanged, ++ base::Unretained(this))); ++ pref_change_registrar_.Add( ++ prefs::kShowMenuButton, ++ base::BindRepeating(&CustomizeToolbarHandler::OnShowMenuButtonChanged, + base::Unretained(this))); } CustomizeToolbarHandler::~CustomizeToolbarHandler() = default; -@@ -189,6 +205,32 @@ void CustomizeToolbarHandler::ListAction - actions.push_back(std::move(home_action)); - actions.push_back(std::move(forward_action)); +@@ -186,8 +226,64 @@ void CustomizeToolbarHandler::ListAction + .Rasterize(&provider), + scale_factor))); +- actions.push_back(std::move(home_action)); ++ auto back_action = side_panel::customize_chrome::mojom::Action::New( ++ MojoActionForChromeAction(kActionBack).value(), ++ base::UTF16ToUTF8(l10n_util::GetStringUTF16(IDS_ACCNAME_BACK)), ++ prefs()->GetBoolean(prefs::kShowBackButton), false, ++ side_panel::customize_chrome::mojom::CategoryId::kNavigation, ++ GURL(webui::EncodePNGAndMakeDataURI( ++ ui::ImageModel::FromVectorIcon( ++ vector_icons::kBackArrowChromeRefreshIcon, icon_color_id) ++ .Rasterize(&provider), ++ scale_factor))); ++ ++ auto reload_action = side_panel::customize_chrome::mojom::Action::New( ++ MojoActionForChromeAction(kActionReload).value(), ++ base::UTF16ToUTF8(l10n_util::GetStringUTF16(IDS_ACCNAME_RELOAD)), ++ prefs()->GetBoolean(prefs::kShowReloadButton), false, ++ side_panel::customize_chrome::mojom::CategoryId::kNavigation, ++ GURL(webui::EncodePNGAndMakeDataURI( ++ ui::ImageModel::FromVectorIcon( ++ vector_icons::kReloadChromeRefreshIcon, icon_color_id) ++ .Rasterize(&provider), ++ scale_factor))); ++ + auto avatar_action = side_panel::customize_chrome::mojom::Action::New( + MojoActionForChromeAction(kActionAvatar).value(), + base::UTF16ToUTF8(l10n_util::GetStringUTF16(IDS_PROFILES_MENU_NAME)), @@ -208,8 +360,6 @@ + .Rasterize(&provider), + scale_factor))); + -+ actions.push_back(std::move(avatar_action)); -+ + auto extensions_action = side_panel::customize_chrome::mojom::Action::New( + MojoActionForChromeAction(kActionExtensions).value(), + base::UTF16ToUTF8(l10n_util::GetStringUTF16(IDS_TOOLTIP_EXTENSIONS_BUTTON)), @@ -221,28 +371,94 @@ + .Rasterize(&provider), + scale_factor))); + -+ actions.push_back(std::move(extensions_action)); ++ auto menu_action = side_panel::customize_chrome::mojom::Action::New( ++ MojoActionForChromeAction(kActionShowAppMenu).value(), ++ base::UTF16ToUTF8(l10n_util::GetStringUTF16(IDS_ACCNAME_APP_MENU)), ++ prefs()->GetBoolean(prefs::kShowMenuButton), false, ++ side_panel::customize_chrome::mojom::CategoryId::kYourChrome, ++ GURL(webui::EncodePNGAndMakeDataURI( ++ ui::ImageModel::FromVectorIcon(kBrowserToolsIcon, icon_color_id) ++ .Rasterize(&provider), ++ scale_factor))); + ++ actions.push_back(std::move(back_action)); + actions.push_back(std::move(forward_action)); ++ actions.push_back(std::move(reload_action)); ++ actions.push_back(std::move(home_action)); + if (base::FeatureList::IsEnabled(features::kSideBySide)) { auto split_tab_action = side_panel::customize_chrome::mojom::Action::New( - MojoActionForChromeAction(kActionSplitTab).value(), -@@ -323,6 +365,12 @@ void CustomizeToolbarHandler::PinAction( +@@ -203,6 +299,10 @@ void CustomizeToolbarHandler::ListAction + actions.push_back(std::move(split_tab_action)); + } + ++ actions.push_back(std::move(extensions_action)); ++ actions.push_back(std::move(avatar_action)); ++ actions.push_back(std::move(menu_action)); ++ + const auto add_action = + [&actions, this, &provider, scale_factor, bwi]( + actions::ActionId id, +@@ -247,17 +347,16 @@ void CustomizeToolbarHandler::ListAction + actions.push_back(std::move(mojo_action)); + }; + +- add_action(kActionNewIncognitoWindow, +- side_panel::customize_chrome::mojom::CategoryId::kNavigation); +- + add_action(kActionSidePanelShowBookmarks, +- side_panel::customize_chrome::mojom::CategoryId::kYourChrome); ++ side_panel::customize_chrome::mojom::CategoryId::kTools); + add_action(kActionSidePanelShowHistoryCluster, +- side_panel::customize_chrome::mojom::CategoryId::kYourChrome); ++ side_panel::customize_chrome::mojom::CategoryId::kTools); + add_action(kActionShowDownloads, +- side_panel::customize_chrome::mojom::CategoryId::kYourChrome); ++ side_panel::customize_chrome::mojom::CategoryId::kTools); + add_action(kActionClearBrowsingData, +- side_panel::customize_chrome::mojom::CategoryId::kYourChrome); ++ side_panel::customize_chrome::mojom::CategoryId::kTools); ++ add_action(kActionNewIncognitoWindow, ++ side_panel::customize_chrome::mojom::CategoryId::kTools); + + if (features::HasTabSearchToolbarButton()) { + add_action(kActionTabSearch, +@@ -323,6 +422,21 @@ void CustomizeToolbarHandler::PinAction( case kActionSplitTab: prefs()->SetBoolean(prefs::kPinSplitTabButton, pin); break; ++ case kActionBack: ++ prefs()->SetBoolean(prefs::kShowBackButton, pin); ++ break; ++ case kActionReload: ++ prefs()->SetBoolean(prefs::kShowReloadButton, pin); ++ break; + case kActionAvatar: + prefs()->SetBoolean(prefs::kShowAvatarButton, pin); + break; + case kActionExtensions: + prefs()->SetBoolean(prefs::kShowExtensionsButton, pin); ++ break; ++ case kActionShowAppMenu: ++ prefs()->SetBoolean(prefs::kShowMenuButton, pin); + break; default: model_->UpdatePinnedState(chrome_action.value(), pin); const std::optional metrics_name = -@@ -376,6 +424,16 @@ void CustomizeToolbarHandler::OnPinSplit +@@ -376,6 +490,31 @@ void CustomizeToolbarHandler::OnPinSplit prefs()->GetBoolean(prefs::kPinSplitTabButton)); } ++void CustomizeToolbarHandler::OnShowBackButtonChanged() { ++ OnActionPinnedChanged(kActionBack, ++ prefs()->GetBoolean(prefs::kShowBackButton)); ++} ++ ++void CustomizeToolbarHandler::OnShowReloadButtonChanged() { ++ OnActionPinnedChanged(kActionReload, ++ prefs()->GetBoolean(prefs::kShowReloadButton)); ++} ++ +void CustomizeToolbarHandler::OnShowAvatarButtonChanged() { + OnActionPinnedChanged(kActionAvatar, + prefs()->GetBoolean(prefs::kShowAvatarButton)); @@ -252,38 +468,29 @@ + OnActionPinnedChanged(kActionExtensions, + prefs()->GetBoolean(prefs::kShowExtensionsButton)); +} ++ ++void CustomizeToolbarHandler::OnShowMenuButtonChanged() { ++ OnActionPinnedChanged(kActionShowAppMenu, ++ prefs()->GetBoolean(prefs::kShowMenuButton)); ++} + void CustomizeToolbarHandler::OnActionItemChanged() { client_->NotifyActionsUpdated(); } --- a/chrome/browser/ui/webui/side_panel/customize_chrome/customize_toolbar/customize_toolbar_handler.h +++ b/chrome/browser/ui/webui/side_panel/customize_chrome/customize_toolbar/customize_toolbar_handler.h -@@ -54,6 +54,8 @@ class CustomizeToolbarHandler +@@ -54,6 +54,11 @@ class CustomizeToolbarHandler void OnShowHomeButtonChanged(); void OnShowForwardButtonChanged(); void OnPinSplitTabButtonChanged(); ++ void OnShowBackButtonChanged(); ++ void OnShowReloadButtonChanged(); + void OnShowAvatarButtonChanged(); + void OnShowExtensionsButtonChanged(); ++ void OnShowMenuButtonChanged(); void OnActionItemChanged(); PrefService* prefs() const; ---- a/chrome/common/pref_names.h -+++ b/chrome/common/pref_names.h -@@ -1336,6 +1336,14 @@ inline constexpr char kSplitViewDragAndD - inline constexpr char kSplitViewDragAndDropNudgeUsedCount[] = - "browser.split_view_drag_and_drop_nudge_used_count"; - -+// A boolean pref set to true if the Avatar button should be visible on the -+// toolbar. -+inline constexpr char kShowAvatarButton[] = "helium.browser.show_avatar_button"; -+ -+// A boolean pref set to true if the Extensions button should be visible on the -+// toolbar. -+inline constexpr char kShowExtensionsButton[] = "helium.browser.show_extensions_button"; -+ - // A boolean pref set to true if Gemini integration be enabled. This is managed - // by enterprise policy. - inline constexpr char kGeminiSettings[] = "browser.gemini_settings"; --- a/chrome/browser/ui/views/extensions/extensions_toolbar_container.cc +++ b/chrome/browser/ui/views/extensions/extensions_toolbar_container.cc @@ -552,7 +552,9 @@ void ExtensionsToolbarContainer::AnchorA @@ -308,3 +515,15 @@ return false; // The container (and extensions-menu button) should not be visible if we have +--- a/chrome/app/generated_resources.grd ++++ b/chrome/app/generated_resources.grd +@@ -10358,6 +10358,9 @@ Keep your key file in a safe place. You + + Find + ++ ++ Main Menu ++ + + Bookmarks + diff --git a/patches/helium/ui/toolbar-window-frame-hit-test.patch b/patches/helium/ui/toolbar-window-frame-hit-test.patch index 0bda868a..f9c3bad0 100644 --- a/patches/helium/ui/toolbar-window-frame-hit-test.patch +++ b/patches/helium/ui/toolbar-window-frame-hit-test.patch @@ -21,7 +21,7 @@ if (IsWindowControlsOverlayEnabled() && GetActiveWebContents()) { --- a/chrome/browser/ui/views/toolbar/toolbar_view.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc -@@ -664,6 +664,44 @@ bool ToolbarView::GetAppMenuFocused() co +@@ -646,6 +646,44 @@ bool ToolbarView::GetAppMenuFocused() co return app_menu_button_ && app_menu_button_->HasFocus(); } diff --git a/patches/helium/ui/ublock-show-in-settings.patch b/patches/helium/ui/ublock-show-in-settings.patch index 6def6afd..4975c8a7 100644 --- a/patches/helium/ui/ublock-show-in-settings.patch +++ b/patches/helium/ui/ublock-show-in-settings.patch @@ -87,7 +87,7 @@ }; --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd -@@ -13303,6 +13303,9 @@ Check your passwords anytime in Installed because of dependent extension(s). diff --git a/patches/series b/patches/series index 5fc0a52b..f8e8467a 100644 --- a/patches/series +++ b/patches/series @@ -210,6 +210,7 @@ helium/ui/layout-constants.patch helium/ui/tabs.patch helium/ui/tab-strip-controls.patch helium/ui/toolbar.patch +helium/ui/toolbar-window-frame-hit-test.patch helium/ui/toolbar-button-prefs.patch helium/ui/omnibox.patch helium/ui/app-menu-style.patch @@ -253,4 +254,3 @@ helium/ui/improve-flags-webui.patch helium/ui/ublock-show-in-settings.patch helium/ui/licenses-in-credits.patch helium/ui/remove-autofill-link-to-password-manager.patch -helium/ui/toolbar-window-frame-hit-test.patch