mirror of
https://github.com/morgan9e/helium
synced 2026-04-14 00:14:20 +09:00
helium: merge toolbar prefs, move to ui
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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";
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user