helium/toolbar: add prefs for hiding back, reload, and main menu buttons

This commit is contained in:
wukko
2025-11-08 01:43:43 +06:00
parent 8486eb8436
commit dc61f5cf4f
4 changed files with 280 additions and 61 deletions

View File

@@ -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<views::Button*, 5>{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<actions::ActionId> ChromeA
@@ -85,6 +95,16 @@ std::optional<actions::ActionId> 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<std::string> 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
<message name="IDS_ACCNAME_FIND" desc="The accessible name for the find button.">
Find
</message>
+ <message name="IDS_ACCNAME_APP_MENU" desc="The accessible name for the app menu button.">
+ Main Menu
+ </message>
<message name="IDS_ACCNAME_BOOKMARKS" desc="The accessible name for the Bookmarks toolbar.">
Bookmarks
</message>

View File

@@ -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();
}

View File

@@ -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 <ph name
@@ -13306,6 +13306,9 @@ Check your passwords anytime in <ph name
<message name="IDS_EXTENSIONS_INSTALL_LOCATION_SHARED_MODULE" desc="The text explaining the the installation of the extension was because of extensions that depend on this shared module">
Installed because of dependent extension(s).
</message>

View File

@@ -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