/* 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/. */ const { MessageGenerator } = ChromeUtils.importESModule( "resource://testing-common/mailnews/MessageGenerator.sys.mjs" ); /** @type {MenuData} */ const viewMenuData = { menu_Toolbars: {}, view_toolbars_popup_quickFilterBar: { checked: true }, viewToolbarsPopupSpacesToolbar: { checked: true }, menu_showTaskbar: { checked: true }, customizeMailToolbars: {}, menu_MessagePaneLayout: {}, messagePaneClassic: {}, messagePaneWide: {}, messagePaneVertical: { checked: true }, menu_showFolderPane: { checked: true }, menu_toggleThreadPaneHeader: { disabled: true, checked: true }, menu_showMessage: {}, menu_FolderViews: {}, menu_toggleFolderHeader: { checked: true }, menu_allFolders: { disabled: true, checked: true }, menu_smartFolders: {}, menu_unreadFolders: {}, menu_favoriteFolders: {}, menu_recentFolders: {}, menu_tags: {}, menu_compactMode: { disabled: true }, menu_uiDensity: {}, uiDensityCompact: {}, uiDensityNormal: { checked: true }, uiDensityTouch: {}, viewFullZoomMenu: {}, menu_fullZoomEnlarge: { disabled: true }, menu_fullZoomReduce: { disabled: true }, menu_fullZoomReset: { disabled: true }, menu_fullZoomToggle: { disabled: true }, menu_uiFontSize: {}, menu_fontSizeEnlarge: {}, menu_fontSizeReduce: {}, menu_fontSizeReset: {}, calTodayPaneMenu: { hidden: true }, "calShowTodayPane-2": {}, calTodayPaneDisplayMiniday: {}, calTodayPaneDisplayMinimonth: {}, calTodayPaneDisplayNone: {}, calCalendarMenu: { hidden: true }, calChangeViewDay: {}, calChangeViewWeek: {}, calChangeViewMultiweek: {}, calChangeViewMonth: {}, calCalendarPaneMenu: {}, calViewCalendarPane: {}, calTasksViewMinimonth: {}, calTasksViewCalendarlist: {}, calCalendarCurrentViewMenu: {}, calWorkdaysOnlyMenuitem: {}, calTasksInViewMenuitem: {}, calShowCompletedInViewMenuItem: {}, calViewRotated: {}, calTasksMenu: { hidden: true }, calTasksViewFilterTasks: {}, calTasksViewFilterCurrent: {}, calTasksViewFilterToday: {}, calTasksViewFilterNext7days: {}, calTasksViewFilterNotstartedtasks: {}, calTasksViewFilterOverdue: {}, calTasksViewFilterCompleted: {}, calTasksViewFilterOpen: {}, calTasksViewFilterAll: {}, viewSortMenu: { disabled: true }, sortByDateMenuitem: {}, sortByReceivedMenuitem: {}, sortByFlagMenuitem: {}, sortByOrderReceivedMenuitem: {}, sortByPriorityMenuitem: {}, sortByFromMenuitem: {}, sortByRecipientMenuitem: {}, sortByCorrespondentMenuitem: {}, sortBySizeMenuitem: {}, sortByStatusMenuitem: {}, sortBySubjectMenuitem: {}, sortByUnreadMenuitem: {}, sortByTagsMenuitem: {}, sortByJunkStatusMenuitem: {}, sortByAttachmentsMenuitem: {}, sortAscending: {}, sortDescending: {}, sortThreaded: {}, sortUnthreaded: {}, groupBySort: {}, viewMessageViewMenu: { hidden: true }, viewMessageAll: {}, viewMessageUnread: {}, viewMessageNotDeleted: {}, viewMessageTags: {}, viewMessageCustomViews: {}, viewMessageVirtualFolder: {}, viewMessageCustomize: {}, viewMessagesMenu: { disabled: true }, viewAllMessagesMenuItem: { disabled: true, checked: true }, viewUnreadMessagesMenuItem: { disabled: true }, viewThreadsWithUnreadMenuItem: { disabled: true }, viewWatchedThreadsWithUnreadMenuItem: { disabled: true }, viewIgnoredThreadsMenuItem: { disabled: true }, menu_expandAllThreads: { disabled: true }, collapseAllThreads: { disabled: true }, viewheadersmenu: {}, viewallheaders: {}, viewnormalheaders: { checked: true }, viewBodyMenu: {}, bodyAllowHTML: { checked: true }, bodySanitized: {}, bodyAsPlaintext: {}, bodyAllParts: { hidden: true }, viewFeedSummary: { hidden: true }, bodyFeedGlobalWebPage: {}, bodyFeedGlobalSummary: {}, bodyFeedPerFolderPref: {}, bodyFeedSummaryAllowHTML: {}, bodyFeedSummarySanitized: {}, bodyFeedSummaryAsPlaintext: {}, viewAttachmentsInlineMenuitem: { checked: true }, pageSourceMenuItem: { disabled: true }, }; const helper = new MenuTestHelper("menu_View", viewMenuData); const tabmail = document.getElementById("tabmail"); let inboxFolder, secondFolder, rootFolder, testMessages; add_setup(async function () { document.getElementById("toolbar-menubar").removeAttribute("autohide"); const generator = new MessageGenerator(); const account = MailServices.accounts.createLocalMailAccount(); account.addIdentity(MailServices.accounts.createIdentity()); rootFolder = account.incomingServer.rootFolder.QueryInterface( Ci.nsIMsgLocalMailFolder ); inboxFolder = rootFolder .createLocalSubfolder("view menu") .QueryInterface(Ci.nsIMsgLocalMailFolder); secondFolder = rootFolder .createLocalSubfolder("multi selection") .QueryInterface(Ci.nsIMsgLocalMailFolder); inboxFolder.addMessageBatch( generator .makeMessages({ count: 5 }) .map(message => message.toMessageString()) ); testMessages = [...inboxFolder.messages]; goDoCommand("cmd_showQuickFilterBar"); registerCleanupFunction(() => { tabmail.closeOtherTabs(0); MailServices.accounts.removeAccount(account, false); }); }); add_task(async function test3PaneTab() { tabmail.currentAbout3Pane.restoreState({ folderPaneVisible: true, messagePaneVisible: true, folderURI: rootFolder, }); await new Promise(resolve => setTimeout(resolve)); await helper.testAllItems("mail3PaneTab"); tabmail.currentAbout3Pane.displayFolder(inboxFolder); await helper.testItems({ menu_Toolbars: {}, view_toolbars_popup_quickFilterBar: { checked: true }, menu_MessagePaneLayout: {}, menu_showFolderPane: { checked: true }, menu_toggleThreadPaneHeader: { checked: true }, menu_showMessage: { checked: true }, viewSortMenu: { disabled: false }, viewMessagesMenu: { disabled: false }, }); // Multiselect folders and test. EventUtils.synthesizeMouseAtCenter( tabmail.currentAbout3Pane.folderPane .getRowForFolder(secondFolder) .querySelector(".name"), { accelKey: true }, tabmail.currentAbout3Pane ); await helper.testItems({ viewSortMenu: { disabled: true }, viewMessagesMenu: { disabled: true }, }); EventUtils.synthesizeMouseAtCenter( tabmail.currentAbout3Pane.folderPane .getRowForFolder(inboxFolder) .querySelector(".name"), {}, tabmail.currentAbout3Pane ); tabmail.currentAbout3Pane.displayFolder(inboxFolder); goDoCommand("cmd_toggleQuickFilterBar"); await helper.testItems({ menu_Toolbars: {}, view_toolbars_popup_quickFilterBar: { checked: false }, }); goDoCommand("cmd_toggleFolderPane"); await helper.testItems({ menu_MessagePaneLayout: {}, menu_showFolderPane: { checked: false }, menu_showMessage: { checked: true }, }); goDoCommand("cmd_toggleThreadPaneHeader"); await helper.testItems({ menu_MessagePaneLayout: {}, menu_toggleThreadPaneHeader: { checked: false }, }); goDoCommand("cmd_toggleMessagePane"); await helper.testItems({ menu_MessagePaneLayout: {}, menu_showFolderPane: { checked: false }, menu_showMessage: { checked: false }, }); goDoCommand("cmd_toggleQuickFilterBar"); goDoCommand("cmd_toggleFolderPane"); goDoCommand("cmd_toggleThreadPaneHeader"); goDoCommand("cmd_toggleMessagePane"); await helper.testItems({ menu_Toolbars: {}, view_toolbars_popup_quickFilterBar: { checked: true }, menu_MessagePaneLayout: {}, menu_showFolderPane: { checked: true }, menu_toggleThreadPaneHeader: { checked: true }, menu_showMessage: { checked: true }, }); // No messages selected. tabmail.currentAbout3Pane.threadTree.selectedIndices = []; await helper.testItems({ pageSourceMenuItem: { disabled: true }, }); // Single message selected. tabmail.currentAbout3Pane.threadTree.selectedIndices = [1]; await helper.testItems({ pageSourceMenuItem: { disabled: false }, }); // Multiselect messages. tabmail.currentAbout3Pane.threadTree.selectedIndices = [2, 4]; await helper.testItems({ pageSourceMenuItem: { disabled: false }, }); });