Bug 1893068 - Remove command inline event handlers from the menubar. r=Gijs

Differential Revision: https://phabricator.services.mozilla.com/D212246
This commit is contained in:
Tom Schuster
2024-06-14 21:08:03 +00:00
parent e58f43eac7
commit a8c9401904
4 changed files with 184 additions and 48 deletions

View File

@@ -12,6 +12,8 @@
event.target.parentNode.openedWithKey);"
#endif
>
<script src="chrome://browser/content/browser-menubar.js" />
<menu id="file-menu" data-l10n-id="menu-file">
<menupopup id="menu_FilePopup"
onpopupshowing="gFileMenu.onPopupShowing(event);">
@@ -122,7 +124,6 @@
#ifndef XP_MACOSX
<menuseparator/>
<menuitem id="menu_preferences"
oncommand="openPreferences(undefined);"
data-l10n-id="menu-settings"
/>
#endif
@@ -165,10 +166,8 @@
<menu id="pageStyleMenu" data-l10n-id="menu-view-page-style-menu">
<menupopup onpopupshowing="gPageStyleMenu.fillPopup(this);">
<menuitem id="menu_pageStyleNoStyle"
oncommand="gPageStyleMenu.disableStyle();"
type="radio" data-l10n-id="menu-view-page-style-no-style"/>
<menuitem id="menu_pageStylePersistentOnly"
oncommand="gPageStyleMenu.switchStyleSheet(null);"
type="radio"
checked="true" data-l10n-id="menu-view-page-basic-style"/>
<menuseparator/>
@@ -176,7 +175,6 @@
</menu>
<menuitem id="repair-text-encoding"
disabled="true"
oncommand="BrowserCommands.forceEncodingDetection();"
data-l10n-id="menu-view-repair-text-encoding"/>
<menuseparator/>
#ifdef XP_MACOSX
@@ -207,7 +205,7 @@
<menuseparator hidden="true" id="documentDirection-separator"/>
<menuitem id="documentDirection-swap"
hidden="true"
oncommand="gBrowser.selectedBrowser.sendMessageToActor('SwitchDocumentDirection', {}, 'SwitchDocumentDirection', 'roots');" data-l10n-id="menu-view-bidi-switch-page-direction"/>
data-l10n-id="menu-view-bidi-switch-page-direction"/>
</menupopup>
</menu>
@@ -217,7 +215,6 @@
placespopup="true"
is="places-popup"
#endif
oncommand="this.parentNode._placesView._onCommand(event);"
onpopupshowing="if (!this.parentNode._placesView)
new HistoryMenu(event);"
tooltip="bhTooltip"
@@ -230,12 +227,10 @@
command="Tools:Sanitize" data-l10n-id="menu-history-clear-recent-history"/>
<menuseparator id="sanitizeSeparator"/>
<menuitem id="sync-tabs-menuitem"
oncommand="gSync.openSyncedTabsPanel();"
hidden="true" data-l10n-id="menu-history-synced-tabs"/>
<menuitem id="historyRestoreLastSession"
command="Browser:RestoreLastSession" data-l10n-id="menu-history-restore-last-session"/>
<menuitem id="hiddenTabsMenu"
oncommand="gTabsPanel.showHiddenTabsPanel(event, 'hidden-tabs-menuitem');"
hidden="true" data-l10n-id="menu-history-hidden-tabs"/>
<menuitem id="menu_searchHistory"
command="History:SearchHistory"
@@ -369,26 +364,26 @@
<menuitem id="sync-setup"
class="sync-ui-item"
hidden="true"
oncommand="gSync.openPrefs('menubar')" data-l10n-id="menu-tools-fxa-sign-in2"/>
data-l10n-id="menu-tools-fxa-sign-in2"/>
<menuitem id="sync-enable"
class="sync-ui-item"
hidden="true"
oncommand="gSync.openPrefs('menubar')" data-l10n-id="menu-tools-turn-on-sync2"/>
data-l10n-id="menu-tools-turn-on-sync2"/>
<menuitem id="sync-unverifieditem"
class="sync-ui-item"
hidden="true"
oncommand="gSync.openPrefs('menubar')" data-l10n-id="menu-tools-fxa-sign-in2"/>
data-l10n-id="menu-tools-fxa-sign-in2"/>
<menuitem id="sync-syncnowitem"
class="sync-ui-item"
hidden="true"
oncommand="gSync.doSync(event);" data-l10n-id="menu-tools-sync-now"/>
data-l10n-id="menu-tools-sync-now"/>
<menuitem id="sync-reauthitem"
class="sync-ui-item"
hidden="true"
oncommand="gSync.openSignInAgainPage('menubar');" data-l10n-id="menu-tools-fxa-re-auth"/>
data-l10n-id="menu-tools-fxa-re-auth"/>
<menuitem id="menu_openFirefoxView"
oncommand="FirefoxViewHandler.openTab();" data-l10n-id="menu-tools-firefox-view"/>
data-l10n-id="menu-tools-firefox-view"/>
<menuseparator id="devToolsSeparator"/>
<menu id="browserToolsMenu" data-l10n-id="menu-tools-browser-tools">
<menupopup id="menuWebDeveloperPopup">
@@ -407,20 +402,17 @@
#ifndef XP_UNIX
<menuseparator id="prefSep"/>
<menuitem id="menu_preferences"
data-l10n-id="menu-settings"
oncommand="openPreferences(undefined);"/>
data-l10n-id="menu-settings"/>
#endif
#ifdef MOZ_DEBUG
<menuitem id="menu_layout_debugger"
data-l10n-id="menu-tools-layout-debugger"
oncommand="toOpenWindowByType('mozapp:layoutdebug',
'chrome://layoutdebug/content/layoutdebug.xhtml');"/>
data-l10n-id="menu-tools-layout-debugger"/>
#endif
#ifdef XP_MACOSX
<!-- nsMenuBarX hides these and uses them to build the Application menu. -->
<menuitem id="menu_preferences"
data-l10n-id="menu-application-preferences"
key="key_preferencesCmdMac" oncommand="openPreferences(undefined);"/>
key="key_preferencesCmdMac"/>
<menuitem id="menu_mac_services" data-l10n-id="menu-application-services"/>
<menuitem id="menu_mac_hide_app" data-l10n-id="menu-application-hide-this" key="key_hideThisAppCmdMac"/>
<menuitem id="menu_mac_hide_others" data-l10n-id="menu-application-hide-other" key="key_hideOtherAppsCmdMac"/>
@@ -451,7 +443,6 @@
<!-- Note: Items under here are cloned to the AppMenu Help submenu. The cloned items
have their strings defined by appmenu-data-l10n-id. -->
<menuitem id="menu_openHelp"
oncommand="openHelpLink('firefox-help')"
data-l10n-id="menu-get-help"
appmenu-data-l10n-id="appmenu-get-help"
#ifdef XP_MACOSX
@@ -465,48 +456,39 @@
hidden="true"
appmenu-data-l10n-id="menu-report-broken-site"/>
<menuitem id="feedbackPage"
oncommand="openFeedbackPage()"
data-l10n-id="menu-help-share-ideas"
appmenu-data-l10n-id="appmenu-help-share-ideas"/>
<menuitem id="helpSafeMode"
oncommand="safeModeRestart();"
data-l10n-id="menu-help-enter-troubleshoot-mode2"
appmenu-data-l10n-id="appmenu-help-enter-troubleshoot-mode2"/>
<menuitem id="troubleShooting"
oncommand="openTroubleshootingPage()"
data-l10n-id="menu-help-more-troubleshooting-info"
appmenu-data-l10n-id="appmenu-help-more-troubleshooting-info"/>
<menuitem id="help_reportSiteIssue"
oncommand="ReportSiteIssue();"
data-l10n-id="menu-help-report-site-issue"
appmenu-data-l10n-id="appmenu-help-report-site-issue"
hidden="true"/>
<menuitem id="menu_HelpPopup_reportPhishingtoolmenu"
disabled="true"
oncommand="openUILink(gSafeBrowsing.getReportURL('Phish'), event, {triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({})});"
hidden="true"
data-l10n-id="menu-help-report-deceptive-site"
appmenu-data-l10n-id="appmenu-help-report-deceptive-site"/>
<menuitem id="menu_HelpPopup_reportPhishingErrortoolmenu"
disabled="true"
oncommand="ReportFalseDeceptiveSite();"
data-l10n-id="menu-help-not-deceptive"
appmenu-data-l10n-id="appmenu-help-not-deceptive"
hidden="true"/>
<menuitem id="helpSwitchDevice"
oncommand="openSwitchingDevicesPage();"
data-l10n-id="menu-help-switch-device"
appmenu-data-l10n-id="appmenu-help-switch-device"/>
<menuseparator id="aboutSeparator"/>
<menuitem id="aboutName"
oncommand="openAboutDialog();"
data-l10n-id="menu-about"
appmenu-data-l10n-id="appmenu-about"/>
<menuseparator id="helpPolicySeparator"
hidden="true"/>
<menuitem id="helpPolicySupport"
hidden="true"
oncommand="openTrustedLinkIn(Services.policies.getSupportMenu().URL.href, 'tab');"/>
hidden="true"/>
</menupopup>
</menu>
</menubar>

View File

@@ -0,0 +1,119 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* eslint-env mozilla/browser-window */
document.addEventListener(
"DOMContentLoaded",
() => {
let mainMenuBar = document.getElementById("main-menubar");
mainMenuBar.addEventListener("command", event => {
switch (event.target.id) {
// == edit-menu ==
case "menu_preferences":
openPreferences(undefined);
break;
// == view-menu ==
case "menu_pageStyleNoStyle":
gPageStyleMenu.disableStyle();
break;
case "menu_pageStylePersistentOnly":
gPageStyleMenu.switchStyleSheet(null);
break;
case "repair-text-encoding":
BrowserCommands.forceEncodingDetection();
break;
case "documentDirection-swap":
gBrowser.selectedBrowser.sendMessageToActor(
"SwitchDocumentDirection",
{},
"SwitchDocumentDirection",
"roots"
);
break;
// == history-menu ==
case "sync-tabs-menuitem":
gSync.openSyncedTabsPanel();
break;
case "hiddenTabsMenu":
gTabsPanel.showHiddenTabsPanel(event, "hidden-tabs-menuitem");
break;
case "sync-setup":
gSync.openPrefs("menubar");
break;
case "sync-enable":
gSync.openPrefs("menubar");
break;
case "sync-unverifieditem":
gSync.openPrefs("menubar");
break;
case "sync-syncnowitem":
gSync.doSync(event);
break;
case "sync-reauthitem":
gSync.openSignInAgainPage("menubar");
break;
case "menu_openFirefoxView":
FirefoxViewHandler.openTab();
break;
// == menu_HelpPopup ==
// (Duplicated in PanelUI._onHelpCommand)
case "menu_openHelp":
openHelpLink("firefox-help");
break;
case "menu_layout_debugger":
toOpenWindowByType(
"mozapp:layoutdebug",
"chrome://layoutdebug/content/layoutdebug.xhtml"
);
break;
case "feedbackPage":
openFeedbackPage();
break;
case "helpSafeMode":
safeModeRestart();
break;
case "troubleShooting":
openTroubleshootingPage();
break;
case "help_reportSiteIssue":
ReportSiteIssue();
break;
case "menu_HelpPopup_reportPhishingtoolmenu":
openUILink(gSafeBrowsing.getReportURL("Phish"), event, {
triggeringPrincipal:
Services.scriptSecurityManager.createNullPrincipal({}),
});
break;
case "menu_HelpPopup_reportPhishingErrortoolmenu":
ReportFalseDeceptiveSite();
break;
case "helpSwitchDevice":
openSwitchingDevicesPage();
break;
case "aboutName":
openAboutDialog();
break;
case "helpPolicySupport":
openTrustedLinkIn(Services.policies.getSupportMenu().URL.href, "tab");
break;
}
});
document
.getElementById("historyMenuPopup")
.addEventListener("command", event => {
// Handle commands/clicks on the descending menuitems that are
// history entries.
let historyMenu = document.getElementById("history-menu");
historyMenu._placesView._onCommand(event);
});
},
{ once: true }
);

View File

@@ -50,6 +50,7 @@ browser.jar:
content/browser/browser-fullScreenAndPointerLock.js (content/browser-fullScreenAndPointerLock.js)
content/browser/browser-gestureSupport.js (content/browser-gestureSupport.js)
content/browser/browser-init.js (content/browser-init.js)
content/browser/browser-menubar.js (content/browser-menubar.js)
content/browser/browser-pageActions.js (content/browser-pageActions.js)
content/browser/browser-pagestyle.js (content/browser-pagestyle.js)
content/browser/browser-places.js (content/browser-places.js)

View File

@@ -128,11 +128,10 @@ const PanelUI = {
this.panel.addEventListener(event, this);
}
let helpView = PanelMultiView.getViewNode(document, "PanelUI-helpView");
helpView.addEventListener("ViewShowing", this._onHelpViewShow);
helpView.addEventListener("command", this._onHelpCommand);
this._onLibraryCommand = this._onLibraryCommand.bind(this);
PanelMultiView.getViewNode(document, "PanelUI-helpView").addEventListener(
"ViewShowing",
this._onHelpViewShow
);
PanelMultiView.getViewNode(
document,
"appMenu-libraryView"
@@ -145,10 +144,9 @@ const PanelUI = {
for (let event of this.kEvents) {
this.panel.removeEventListener(event, this);
}
PanelMultiView.getViewNode(
document,
"PanelUI-helpView"
).removeEventListener("ViewShowing", this._onHelpViewShow);
let helpView = PanelMultiView.getViewNode(document, "PanelUI-helpView");
helpView.removeEventListener("ViewShowing", this._onHelpViewShow);
helpView.removeEventListener("command", this._onHelpCommand);
PanelMultiView.getViewNode(
document,
"appMenu-libraryView"
@@ -627,15 +625,7 @@ const PanelUI = {
let helpMenu = document.getElementById("menu_HelpPopup");
let items = this.getElementsByTagName("vbox")[0];
let attrs = [
"command",
"oncommand",
"onclick",
"key",
"disabled",
"accesskey",
"label",
];
let attrs = ["command", "onclick", "key", "disabled", "accesskey", "label"];
// Remove all buttons from the view
while (items.firstChild) {
@@ -691,6 +681,50 @@ const PanelUI = {
items.appendChild(fragment);
},
_onHelpCommand(aEvent) {
switch (aEvent.target.id) {
case "appMenu_menu_openHelp":
openHelpLink("firefox-help");
break;
case "appMenu_menu_layout_debugger":
toOpenWindowByType(
"mozapp:layoutdebug",
"chrome://layoutdebug/content/layoutdebug.xhtml"
);
break;
case "appMenu_feedbackPage":
openFeedbackPage();
break;
case "appMenu_helpSafeMode":
safeModeRestart();
break;
case "appMenu_troubleShooting":
openTroubleshootingPage();
break;
case "appMenu_help_reportSiteIssue":
ReportSiteIssue();
break;
case "appMenu_menu_HelpPopup_reportPhishingtoolmenu":
openUILink(gSafeBrowsing.getReportURL("Phish"), aEvent, {
triggeringPrincipal:
Services.scriptSecurityManager.createNullPrincipal({}),
});
break;
case "appMenu_menu_HelpPopup_reportPhishingErrortoolmenu":
ReportFalseDeceptiveSite();
break;
case "appMenu_helpSwitchDevice":
openSwitchingDevicesPage();
break;
case "appMenu_aboutName":
openAboutDialog();
break;
case "appMenu_helpPolicySupport":
openTrustedLinkIn(Services.policies.getSupportMenu().URL.href, "tab");
break;
}
},
_onLibraryCommand(aEvent) {
let button = aEvent.target;
let { BookmarkingUI, DownloadsPanel } = button.ownerGlobal;