helium: merge toolbar prefs, move to ui

This commit is contained in:
wukko
2025-11-07 18:59:55 +06:00
parent 537ba368e9
commit 8486eb8436
8 changed files with 123 additions and 274 deletions

View File

@@ -115,7 +115,7 @@ TODO: guard services_page.html with is_mac
IDS_SETTINGS_HELIUM_SERVICES_OVERRIDE_DESCRIPTION},
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -367,6 +367,8 @@ const PrefsUtil::TypedPrefMap& PrefsUtil
@@ -361,6 +361,8 @@ const PrefsUtil::TypedPrefMap& PrefsUtil
settings_api::PrefType::kBoolean;
(*s_allowlist)[::prefs::kHeliumSpellcheckEnabled] =
settings_api::PrefType::kBoolean;
@@ -126,7 +126,7 @@ TODO: guard services_page.html with is_mac
(*s_allowlist)[::prefs::kHeliumServicesConsented] =
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -219,6 +219,7 @@ void RegisterBrowserUserPrefs(user_prefs
@@ -214,6 +214,7 @@ void RegisterBrowserUserPrefs(user_prefs
registry->RegisterStringPref(prefs::kHeliumServicesOrigin, "");
registry->RegisterBooleanPref(prefs::kHeliumDidOnboarding, false);
registry->RegisterBooleanPref(prefs::kHeliumServicesConsented, false);

View File

@@ -1,234 +0,0 @@
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -233,6 +233,8 @@ const PrefsUtil::TypedPrefMap& PrefsUtil
// Custom toolbar button settings.
(*s_allowlist)[::prefs::kShowAvatarButton] =
settings_api::PrefType::kBoolean;
+ (*s_allowlist)[::prefs::kShowExtensionsButton] =
+ settings_api::PrefType::kBoolean;
// Appearance settings.
(*s_allowlist)[::prefs::kCurrentThemeID] = settings_api::PrefType::kString;
--- a/chrome/browser/ui/actions/chrome_action_id.h
+++ b/chrome/browser/ui/actions/chrome_action_id.h
@@ -559,6 +559,7 @@
E(kActionHome, IDC_HOME) \
E(kActionForward, IDC_FORWARD) \
E(kActionAvatar, IDC_SHOW_AVATAR_MENU) \
+ E(kActionExtensions) \
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,8 @@ void RegisterBrowserUserPrefs(user_prefs
registry->RegisterBooleanPref(
prefs::kShowAvatarButton, true);
+ registry->RegisterBooleanPref(
+ prefs::kShowExtensionsButton, true);
registry->RegisterInt64Pref(prefs::kDefaultBrowserLastDeclined, 0);
registry->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, 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
@@ -217,6 +217,7 @@ void PinnedToolbarActionsModel::ResetToD
pref_service_->ClearPref(prefs::kShowHomeButton);
pref_service_->ClearPref(prefs::kShowForwardButton);
pref_service_->ClearPref(prefs::kShowAvatarButton);
+ pref_service_->ClearPref(prefs::kShowExtensionsButton);
pref_service_->ClearPref(prefs::kPinnedActions);
}
@@ -233,7 +234,12 @@ bool PinnedToolbarActionsModel::IsDefaul
const bool avatar_is_default =
pref_service_->GetDefaultPrefValue(prefs::kShowAvatarButton)
->GetBool() == pref_service_->GetBoolean(prefs::kShowAvatarButton);
- return action_are_default && home_is_default && forward_is_default && avatar_is_default;
+ 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;
}
void PinnedToolbarActionsModel::MaybeMigrateExistingPinnedStates() {
--- 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
// Fix the position of widgets. Without this fix, extension-installed-bubble
// and extension-uninstall-dialog may be out of the window border on Linux.
- if (base::CommandLine::ForCurrentProcess()->HasSwitch("hide-extensions-menu"))
+ if (!browser_->profile()->GetPrefs()->GetBoolean(
+ prefs::kShowExtensionsButton) ||
+ base::CommandLine::ForCurrentProcess()->HasSwitch("hide-extensions-menu"))
{
views::View* anchor_view = BrowserView::GetBrowserViewForBrowser(browser_)
->toolbar_button_provider()->GetAppMenuButton();
@@ -962,7 +964,9 @@ void ExtensionsToolbarContainer::UpdateC
}
bool ExtensionsToolbarContainer::ShouldContainerBeVisible() const {
- if (base::CommandLine::ForCurrentProcess()->HasSwitch("hide-extensions-menu"))
+ if (!browser_->profile()->GetPrefs()->GetBoolean(
+ prefs::kShowExtensionsButton) ||
+ base::CommandLine::ForCurrentProcess()->HasSwitch("hide-extensions-menu"))
return false;
// The container (and extensions-menu button) should not be visible if we have
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -543,6 +543,14 @@ void ToolbarView::Init() {
avatar_->SetVisible(show_avatar_button_.GetValue());
}
+ if (extensions_container_) {
+ show_extensions_button_.Init(
+ prefs::kShowExtensionsButton, prefs,
+ base::BindRepeating(&ToolbarView::OnShowExtensionsButtonChanged,
+ base::Unretained(this)));
+ extensions_container_->SetVisible(show_extensions_button_.GetValue());
+ }
+
InitLayout();
for (auto* button : std::array<views::Button*, 5>{back_, forward_, reload_,
@@ -1267,6 +1275,10 @@ void ToolbarView::OnShowAvatarButtonChan
avatar_->SetVisible(show_avatar_button_.GetValue());
}
+void ToolbarView::OnShowExtensionsButtonChanged() {
+ extensions_container_->SetVisible(show_extensions_button_.GetValue());
+}
+
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
@@ -270,6 +270,8 @@ class ToolbarView : public views::Access
void OnShowAvatarButtonChanged();
+ void OnShowExtensionsButtonChanged();
+
void OnTouchUiChanged();
void UpdateClipPath();
@@ -322,6 +324,8 @@ class ToolbarView : public views::Access
BooleanPrefMember show_avatar_button_;
+ BooleanPrefMember show_extensions_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
@@ -17,6 +17,7 @@ enum ActionId {
kHome,
kForward,
kAvatar,
+ kExtensions,
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
@@ -52,6 +52,8 @@ MojoActionForChromeAction(actions::Actio
return side_panel::customize_chrome::mojom::ActionId::kForward;
case kActionAvatar:
return side_panel::customize_chrome::mojom::ActionId::kAvatar;
+ case kActionExtensions:
+ return side_panel::customize_chrome::mojom::ActionId::kExtensions;
case kActionNewIncognitoWindow:
return side_panel::customize_chrome::mojom::ActionId::kNewIncognitoWindow;
case kActionShowPasswordsBubbleOrPage:
@@ -113,6 +115,8 @@ std::optional<actions::ActionId> ChromeA
return kActionForward;
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::kNewIncognitoWindow:
return kActionNewIncognitoWindow;
case side_panel::customize_chrome::mojom::ActionId::kShowPasswordManager:
@@ -182,6 +186,10 @@ CustomizeToolbarHandler::CustomizeToolba
prefs::kShowAvatarButton,
base::BindRepeating(&CustomizeToolbarHandler::OnShowAvatarButtonChanged,
base::Unretained(this)));
+ pref_change_registrar_.Add(
+ prefs::kShowExtensionsButton,
+ base::BindRepeating(&CustomizeToolbarHandler::OnShowExtensionsButtonChanged,
+ base::Unretained(this)));
}
CustomizeToolbarHandler::~CustomizeToolbarHandler() = default;
@@ -240,6 +248,19 @@ void CustomizeToolbarHandler::ListAction
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)),
+ prefs()->GetBoolean(prefs::kShowExtensionsButton), false,
+ side_panel::customize_chrome::mojom::CategoryId::kYourChrome,
+ GURL(webui::EncodePNGAndMakeDataURI(
+ ui::ImageModel::FromVectorIcon(
+ vector_icons::kExtensionChromeRefreshIcon, icon_color_id)
+ .Rasterize(&provider),
+ scale_factor)));
+
+ actions.push_back(std::move(extensions_action));
+
if (base::FeatureList::IsEnabled(features::kSideBySide)) {
auto split_tab_action = side_panel::customize_chrome::mojom::Action::New(
MojoActionForChromeAction(kActionSplitTab).value(),
@@ -391,6 +412,9 @@ void CustomizeToolbarHandler::PinAction(
case kActionAvatar:
prefs()->SetBoolean(prefs::kShowAvatarButton, pin);
break;
+ case kActionExtensions:
+ prefs()->SetBoolean(prefs::kShowExtensionsButton, pin);
+ break;
default:
model_->UpdatePinnedState(chrome_action.value(), pin);
const std::optional<std::string> metrics_name =
@@ -449,6 +473,11 @@ void CustomizeToolbarHandler::OnShowAvat
prefs()->GetBoolean(prefs::kShowAvatarButton));
}
+void CustomizeToolbarHandler::OnShowExtensionsButtonChanged() {
+ OnActionPinnedChanged(kActionExtensions,
+ prefs()->GetBoolean(prefs::kShowExtensionsButton));
+}
+
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
@@ -55,6 +55,7 @@ class CustomizeToolbarHandler
void OnShowForwardButtonChanged();
void OnPinSplitTabButtonChanged();
void OnShowAvatarButtonChanged();
+ void OnShowExtensionsButtonChanged();
void OnActionItemChanged();
PrefService* prefs() const;
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -1336,6 +1336,10 @@ inline constexpr char kSplitViewDragAndD
// 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";

View File

@@ -1,6 +1,6 @@
--- 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
@@ -37,15 +37,6 @@ MojoActionForChromeAction(actions::Actio
@@ -37,28 +37,12 @@ MojoActionForChromeAction(actions::Actio
return side_panel::customize_chrome::mojom::ActionId::kShowBookmarks;
case kActionSidePanelShowHistoryCluster:
return side_panel::customize_chrome::mojom::ActionId::kShowHistoryCluster;
@@ -16,8 +16,7 @@
case kActionHome:
return side_panel::customize_chrome::mojom::ActionId::kHome;
case kActionForward:
@@ -56,13 +47,6 @@ MojoActionForChromeAction(actions::Actio
return side_panel::customize_chrome::mojom::ActionId::kExtensions;
return side_panel::customize_chrome::mojom::ActionId::kForward;
case kActionNewIncognitoWindow:
return side_panel::customize_chrome::mojom::ActionId::kNewIncognitoWindow;
- case kActionShowPasswordsBubbleOrPage:
@@ -30,7 +29,7 @@
case kActionShowDownloads:
return side_panel::customize_chrome::mojom::ActionId::kShowDownloads;
case kActionClearBrowsingData:
@@ -101,14 +85,6 @@ std::optional<actions::ActionId> ChromeA
@@ -97,26 +81,12 @@ std::optional<actions::ActionId> ChromeA
return kActionSidePanelShowBookmarks;
case side_panel::customize_chrome::mojom::ActionId::kShowHistoryCluster:
return kActionSidePanelShowHistoryCluster;
@@ -45,8 +44,7 @@
case side_panel::customize_chrome::mojom::ActionId::kHome:
return kActionHome;
case side_panel::customize_chrome::mojom::ActionId::kForward:
@@ -119,12 +95,6 @@ std::optional<actions::ActionId> ChromeA
return kActionExtensions;
return kActionForward;
case side_panel::customize_chrome::mojom::ActionId::kNewIncognitoWindow:
return kActionNewIncognitoWindow;
- case side_panel::customize_chrome::mojom::ActionId::kShowPasswordManager:
@@ -58,7 +56,7 @@
case side_panel::customize_chrome::mojom::ActionId::kShowDownloads:
return kActionShowDownloads;
case side_panel::customize_chrome::mojom::ActionId::kClearBrowsingData:
@@ -322,16 +292,8 @@ void CustomizeToolbarHandler::ListAction
@@ -280,16 +250,8 @@ void CustomizeToolbarHandler::ListAction
add_action(kActionNewIncognitoWindow,
side_panel::customize_chrome::mojom::CategoryId::kNavigation);
@@ -75,7 +73,7 @@
add_action(kActionSidePanelShowHistoryCluster,
side_panel::customize_chrome::mojom::CategoryId::kYourChrome);
add_action(kActionShowDownloads,
@@ -345,18 +307,12 @@ void CustomizeToolbarHandler::ListAction
@@ -303,18 +265,12 @@ void CustomizeToolbarHandler::ListAction
}
add_action(kActionPrint,
side_panel::customize_chrome::mojom::CategoryId::kTools);

View File

@@ -57,7 +57,7 @@
#endif // COMPONENTS_HELIUM_SERVICES_PREF_NAMES_H_
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -369,6 +369,8 @@ const PrefsUtil::TypedPrefMap& PrefsUtil
@@ -363,6 +363,8 @@ const PrefsUtil::TypedPrefMap& PrefsUtil
settings_api::PrefType::kBoolean;
(*s_allowlist)[::prefs::kHeliumUpdateFetchingEnabled] =
settings_api::PrefType::kBoolean;
@@ -68,7 +68,7 @@
(*s_allowlist)[::prefs::kHeliumServicesConsented] =
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -220,6 +220,7 @@ void RegisterBrowserUserPrefs(user_prefs
@@ -215,6 +215,7 @@ void RegisterBrowserUserPrefs(user_prefs
registry->RegisterBooleanPref(prefs::kHeliumDidOnboarding, false);
registry->RegisterBooleanPref(prefs::kHeliumServicesConsented, false);
registry->RegisterBooleanPref(prefs::kHeliumUpdateFetchingEnabled, true);

View File

@@ -1,6 +1,6 @@
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -147,7 +147,7 @@ void RegisterBrowserUserPrefs(user_prefs
@@ -142,7 +142,7 @@ void RegisterBrowserUserPrefs(user_prefs
false);
#endif
registry->RegisterStringPref(prefs::kWebRTCIPHandlingPolicy,

View File

@@ -19,7 +19,7 @@
auto location_bar = std::make_unique<LocationBarView>(
browser_, browser_->profile(), browser_->command_controller(), this,
display_mode_ != DisplayMode::NORMAL);
@@ -841,14 +829,6 @@ void ToolbarView::Layout(PassKey) {
@@ -823,14 +811,6 @@ void ToolbarView::Layout(PassKey) {
// The container view should be the exact same size/position as ToolbarView.
container_view_->SetSize(size());
@@ -34,7 +34,7 @@
if (display_mode_ == DisplayMode::CUSTOM_TAB) {
custom_tab_bar_->SetBounds(0, 0, width(),
custom_tab_bar_->GetPreferredSize().height());
@@ -858,7 +838,6 @@ void ToolbarView::Layout(PassKey) {
@@ -840,7 +820,6 @@ void ToolbarView::Layout(PassKey) {
if (display_mode_ == DisplayMode::NORMAL) {
LayoutCommon();
@@ -42,7 +42,7 @@
}
if (toolbar_controller_) {
@@ -896,38 +875,6 @@ void ToolbarView::OnThemeChanged() {
@@ -878,38 +857,6 @@ void ToolbarView::OnThemeChanged() {
SchedulePaint();
}

View File

@@ -1,49 +1,55 @@
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -230,6 +230,10 @@ const PrefsUtil::TypedPrefMap& PrefsUtil
@@ -234,6 +234,12 @@ const PrefsUtil::TypedPrefMap& PrefsUtil
(*s_allowlist)[::prefs::kSplitViewDragAndDropEnabled] =
settings_api::PrefType::kBoolean;
+ // Custom toolbar button settings.
+ (*s_allowlist)[::prefs::kShowAvatarButton] =
+ settings_api::PrefType::kBoolean;
+ (*s_allowlist)[::prefs::kShowExtensionsButton] =
+ settings_api::PrefType::kBoolean;
+
// Appearance settings.
(*s_allowlist)[::prefs::kCurrentThemeID] = settings_api::PrefType::kString;
(*s_allowlist)[::prefs::kPinnedActions] = settings_api::PrefType::kList;
--- a/chrome/browser/ui/actions/chrome_action_id.h
+++ b/chrome/browser/ui/actions/chrome_action_id.h
@@ -558,6 +558,7 @@
@@ -558,6 +558,8 @@
#define TOOLBAR_PINNABLE_ACTION_IDS \
E(kActionHome, IDC_HOME) \
E(kActionForward, IDC_FORWARD) \
+ E(kActionAvatar, IDC_SHOW_AVATAR_MENU) \
+ E(kActionExtensions) \
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
@@ -123,6 +123,9 @@ void RegisterBrowserUserPrefs(user_prefs
@@ -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,7 @@ void PinnedToolbarActionsModel::UpdatePi
@@ -216,6 +216,8 @@ void PinnedToolbarActionsModel::UpdatePi
void PinnedToolbarActionsModel::ResetToDefault() {
pref_service_->ClearPref(prefs::kShowHomeButton);
pref_service_->ClearPref(prefs::kShowForwardButton);
+ pref_service_->ClearPref(prefs::kShowAvatarButton);
+ pref_service_->ClearPref(prefs::kShowExtensionsButton);
pref_service_->ClearPref(prefs::kPinnedActions);
}
@@ -229,7 +230,10 @@ bool PinnedToolbarActionsModel::IsDefaul
@@ -229,7 +231,15 @@ bool PinnedToolbarActionsModel::IsDefaul
const bool forward_is_default =
pref_service_->GetDefaultPrefValue(prefs::kShowForwardButton)
->GetBool() == pref_service_->GetBoolean(prefs::kShowForwardButton);
@@ -51,13 +57,18 @@
+ const bool avatar_is_default =
+ pref_service_->GetDefaultPrefValue(prefs::kShowAvatarButton)
+ ->GetBool() == pref_service_->GetBoolean(prefs::kShowAvatarButton);
+ return action_are_default && home_is_default && forward_is_default && avatar_is_default;
+ 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;
}
void PinnedToolbarActionsModel::MaybeMigrateExistingPinnedStates() {
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -463,8 +463,7 @@ void ToolbarView::Init() {
@@ -451,8 +451,7 @@ void ToolbarView::Init() {
#else
// DevTools profiles are OffTheRecord, so hide it there.
show_avatar_toolbar_button = browser_->profile()->IsIncognitoProfile() ||
@@ -67,7 +78,7 @@
#endif
const std::string sab_value = base::CommandLine::ForCurrentProcess()->
@@ -533,6 +532,17 @@ void ToolbarView::Init() {
@@ -521,6 +520,25 @@ void ToolbarView::Init() {
home_->SetVisible(show_home_button_.GetValue());
@@ -81,83 +92,108 @@
+ if (browser_->profile()->IsRegularProfile()) {
+ avatar_->SetVisible(show_avatar_button_.GetValue());
+ }
+
+ if (extensions_container_) {
+ show_extensions_button_.Init(
+ prefs::kShowExtensionsButton, prefs,
+ base::BindRepeating(&ToolbarView::OnShowExtensionsButtonChanged,
+ base::Unretained(this)));
+ extensions_container_->SetVisible(show_extensions_button_.GetValue());
+ }
+
InitLayout();
for (auto* button : std::array<views::Button*, 5>{back_, forward_, reload_,
@@ -1253,6 +1263,10 @@ void ToolbarView::OnShowHomeButtonChange
@@ -1200,6 +1218,14 @@ void ToolbarView::OnShowHomeButtonChange
home_->SetVisible(show_home_button_.GetValue());
}
+void ToolbarView::OnShowAvatarButtonChanged() {
+ avatar_->SetVisible(show_avatar_button_.GetValue());
+}
+
+void ToolbarView::OnShowExtensionsButtonChanged() {
+ extensions_container_->SetVisible(show_extensions_button_.GetValue());
+}
+
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,8 @@ class ToolbarView : public views::Access
@@ -268,6 +268,10 @@ class ToolbarView : public views::Access
void OnShowHomeButtonChanged();
+ void OnShowAvatarButtonChanged();
+
+ void OnShowExtensionsButtonChanged();
+
void OnTouchUiChanged();
void UpdateClipPath();
@@ -318,6 +320,8 @@ class ToolbarView : public views::Access
@@ -318,6 +322,10 @@ class ToolbarView : public views::Access
// Controls whether or not a home button should be shown on the toolbar.
BooleanPrefMember show_home_button_;
+ BooleanPrefMember show_avatar_button_;
+
+ BooleanPrefMember show_extensions_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,7 @@ enum ActionId {
@@ -16,6 +16,8 @@ enum ActionId {
kShowSearchCompanion,
kHome,
kForward,
+ kAvatar,
+ kExtensions,
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
@@ -50,6 +50,8 @@ MojoActionForChromeAction(actions::Actio
@@ -41,6 +41,10 @@ MojoActionForChromeAction(actions::Actio
return side_panel::customize_chrome::mojom::ActionId::kHome;
case kActionForward:
return side_panel::customize_chrome::mojom::ActionId::kForward;
+ case kActionAvatar:
+ return side_panel::customize_chrome::mojom::ActionId::kAvatar;
+ case kActionExtensions:
+ return side_panel::customize_chrome::mojom::ActionId::kExtensions;
case kActionNewIncognitoWindow:
return side_panel::customize_chrome::mojom::ActionId::kNewIncognitoWindow;
case kActionShowPasswordsBubbleOrPage:
@@ -109,6 +111,8 @@ std::optional<actions::ActionId> ChromeA
case kActionShowDownloads:
@@ -85,6 +89,10 @@ std::optional<actions::ActionId> ChromeA
return kActionHome;
case side_panel::customize_chrome::mojom::ActionId::kForward:
return kActionForward;
+ 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::kNewIncognitoWindow:
return kActionNewIncognitoWindow;
case side_panel::customize_chrome::mojom::ActionId::kShowPasswordManager:
@@ -174,6 +178,10 @@ CustomizeToolbarHandler::CustomizeToolba
case side_panel::customize_chrome::mojom::ActionId::kShowDownloads:
@@ -144,6 +152,14 @@ CustomizeToolbarHandler::CustomizeToolba
prefs::kPinSplitTabButton,
base::BindRepeating(&CustomizeToolbarHandler::OnPinSplitTabButtonChanged,
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)));
}
CustomizeToolbarHandler::~CustomizeToolbarHandler() = default;
@@ -219,6 +227,19 @@ void CustomizeToolbarHandler::ListAction
@@ -189,6 +205,32 @@ void CustomizeToolbarHandler::ListAction
actions.push_back(std::move(home_action));
actions.push_back(std::move(forward_action));
@@ -173,21 +209,37 @@
+ 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)),
+ prefs()->GetBoolean(prefs::kShowExtensionsButton), false,
+ side_panel::customize_chrome::mojom::CategoryId::kYourChrome,
+ GURL(webui::EncodePNGAndMakeDataURI(
+ ui::ImageModel::FromVectorIcon(
+ vector_icons::kExtensionChromeRefreshIcon, icon_color_id)
+ .Rasterize(&provider),
+ scale_factor)));
+
+ actions.push_back(std::move(extensions_action));
+
if (base::FeatureList::IsEnabled(features::kSideBySide)) {
auto split_tab_action = side_panel::customize_chrome::mojom::Action::New(
MojoActionForChromeAction(kActionSplitTab).value(),
@@ -367,6 +388,9 @@ void CustomizeToolbarHandler::PinAction(
@@ -323,6 +365,12 @@ void CustomizeToolbarHandler::PinAction(
case kActionSplitTab:
prefs()->SetBoolean(prefs::kPinSplitTabButton, pin);
break;
+ case kActionAvatar:
+ prefs()->SetBoolean(prefs::kShowAvatarButton, pin);
+ break;
+ case kActionExtensions:
+ prefs()->SetBoolean(prefs::kShowExtensionsButton, pin);
+ break;
default:
model_->UpdatePinnedState(chrome_action.value(), pin);
const std::optional<std::string> metrics_name =
@@ -420,6 +444,11 @@ void CustomizeToolbarHandler::OnPinSplit
@@ -376,6 +424,16 @@ void CustomizeToolbarHandler::OnPinSplit
prefs()->GetBoolean(prefs::kPinSplitTabButton));
}
@@ -195,30 +247,64 @@
+ OnActionPinnedChanged(kActionAvatar,
+ prefs()->GetBoolean(prefs::kShowAvatarButton));
+}
+
+void CustomizeToolbarHandler::OnShowExtensionsButtonChanged() {
+ OnActionPinnedChanged(kActionExtensions,
+ prefs()->GetBoolean(prefs::kShowExtensionsButton));
+}
+
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,7 @@ class CustomizeToolbarHandler
@@ -54,6 +54,8 @@ class CustomizeToolbarHandler
void OnShowHomeButtonChanged();
void OnShowForwardButtonChanged();
void OnPinSplitTabButtonChanged();
+ void OnShowAvatarButtonChanged();
+ void OnShowExtensionsButtonChanged();
void OnActionItemChanged();
PrefService* prefs() const;
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -1332,6 +1332,10 @@ inline constexpr char kSplitViewDragAndD
@@ -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
// Fix the position of widgets. Without this fix, extension-installed-bubble
// and extension-uninstall-dialog may be out of the window border on Linux.
- if (base::CommandLine::ForCurrentProcess()->HasSwitch("hide-extensions-menu"))
+ if (!browser_->profile()->GetPrefs()->GetBoolean(
+ prefs::kShowExtensionsButton) ||
+ base::CommandLine::ForCurrentProcess()->HasSwitch("hide-extensions-menu"))
{
views::View* anchor_view = BrowserView::GetBrowserViewForBrowser(browser_)
->toolbar_button_provider()->GetAppMenuButton();
@@ -962,7 +964,9 @@ void ExtensionsToolbarContainer::UpdateC
}
bool ExtensionsToolbarContainer::ShouldContainerBeVisible() const {
- if (base::CommandLine::ForCurrentProcess()->HasSwitch("hide-extensions-menu"))
+ if (!browser_->profile()->GetPrefs()->GetBoolean(
+ prefs::kShowExtensionsButton) ||
+ base::CommandLine::ForCurrentProcess()->HasSwitch("hide-extensions-menu"))
return false;
// The container (and extensions-menu button) should not be visible if we have

View File

@@ -145,8 +145,6 @@ helium/core/spoof-extension-downloader-platform.patch
helium/core/spoof-chrome-ua-brand.patch
helium/core/add-helium-versioning.patch
helium/core/enable-tab-search-toolbar-button.patch
helium/core/hide-avatar-via-toolbar-prefs.patch
helium/core/hide-extensions-via-toolbar-prefs.patch
helium/core/clean-context-menu.patch
helium/core/split-view.patch
helium/core/fix-tab-sync-unreached-error.patch
@@ -212,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-button-prefs.patch
helium/ui/omnibox.patch
helium/ui/app-menu-style.patch
helium/ui/app-menu-model.patch