Bug 1920799 - Add a new messaging surface to the AppMenu and PXI menus for describing the value of signing into an FxA. r=pdahiya,Gijs,desktop-theme-reviewers,omc-reviewers,home-newtab-reviewers,fluent-reviewers,hjones,skhamis,nbarrett

Developing tests in a later patch in this series.

Differential Revision: https://phabricator.services.mozilla.com/D223409
This commit is contained in:
Mike Conley
2024-10-15 16:15:09 +00:00
parent 23219d1d28
commit dd4373aecb
26 changed files with 804 additions and 1 deletions

View File

@@ -4,6 +4,8 @@
ChromeUtils.defineESModuleGetters(this, {
AppMenuNotifications: "resource://gre/modules/AppMenuNotifications.sys.mjs",
ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs",
MenuMessage: "resource:///modules/asrouter/MenuMessage.sys.mjs",
NewTabUtils: "resource://gre/modules/NewTabUtils.sys.mjs",
PanelMultiView: "resource:///modules/PanelMultiView.sys.mjs",
});
@@ -137,6 +139,7 @@ const PanelUI = {
"appMenu-libraryView"
).addEventListener("command", this._onLibraryCommand);
this.mainView.addEventListener("command", this);
this.mainView.addEventListener("ViewShowing", this._onMainViewShow);
this._eventListenersAdded = true;
},
@@ -216,6 +219,14 @@ const PanelUI = {
return;
}
if (ASRouter.initialized) {
await ASRouter.sendTriggerMessage({
browser: gBrowser.selectedBrowser,
id: "menuOpened",
context: { source: MenuMessage.SOURCES.APP_MENU },
});
}
let domEvent = null;
if (aEvent && aEvent.type != "command") {
domEvent = aEvent;
@@ -284,6 +295,7 @@ const PanelUI = {
this._updatePanelButton(aEvent.target);
if (aEvent.type == "popuphidden") {
CustomizableUI.removePanelCloseListeners(this.panel);
MenuMessage.hideAppMenuMessage(gBrowser.selectedBrowser);
}
break;
case "mousedown":
@@ -619,6 +631,22 @@ const PanelUI = {
}
},
_onMainViewShow(event) {
let panelview = event.target;
let messageId = panelview.getAttribute(
MenuMessage.SHOWING_FXA_MENU_MESSAGE_ATTR
);
if (messageId) {
MenuMessage.recordMenuMessageTelemetry(
"IMPRESSION",
MenuMessage.SOURCES.APP_MENU,
messageId
);
let message = ASRouter.getMessageById(messageId);
ASRouter.addImpression(message);
}
},
_onHelpViewShow() {
// Call global menu setup function
buildHelpMenu();