diff --git a/mail/extensions/openpgp/content/modules/windows.sys.mjs b/mail/extensions/openpgp/content/modules/windows.sys.mjs index 1da15e817a..d2821240e7 100644 --- a/mail/extensions/openpgp/content/modules/windows.sys.mjs +++ b/mail/extensions/openpgp/content/modules/windows.sys.mjs @@ -5,63 +5,18 @@ const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { EnigmailKeyRing: "chrome://openpgp/content/modules/keyRing.sys.mjs", - EnigmailLog: "chrome://openpgp/content/modules/log.sys.mjs", -}); - -ChromeUtils.defineLazyGetter(lazy, "l10n", () => { - return new Localization(["messenger/openpgp/openpgp.ftl"], true); }); export var EnigmailWindows = { - /** - * Open a window, or focus it if it is already open - * - * @winName : String - name of the window; used to identify if it is already open - * @spec : String - window URL (e.g. chrome://openpgp/content/ui/test.xhtml) - * @winOptions: String - window options as defined in nsIWindow.open - * @optObj : any - an Object, Array, String, etc. that is passed as parameter - * to the window - */ - openWin(winName, spec, winOptions, optObj) { - var windowManager = Services.wm; - - var recentWin = null; - for (const win of windowManager.getEnumerator(null)) { - if (win.location.href == spec) { - recentWin = win; - break; - } - if (winName && win.name && win.name == winName) { - win.focus(); - break; - } - } - - if (recentWin) { - recentWin.focus(); - } else { - var appShellSvc = Services.appShell; - var domWin = appShellSvc.hiddenDOMWindow; - try { - domWin.open(spec, winName, "chrome," + winOptions, optObj); - } catch (ex) { - domWin = windowManager.getMostRecentWindow(null); - domWin.open(spec, winName, "chrome," + winOptions, optObj); - } - } - }, - /** * Determine the best possible window to serve as parent window for dialogs. * - * @return: nsIWindow object + * @returns {?window} */ getBestParentWin() { - var windowManager = Services.wm; + let bestFit = null; - var bestFit = null; - - for (const win of windowManager.getEnumerator(null)) { + for (const win of Services.wm.getEnumerator(null)) { if (win.location.href.search(/\/messenger.xhtml$/) > 0) { bestFit = win; } @@ -74,223 +29,37 @@ export var EnigmailWindows = { } if (!bestFit) { - var winEnum = windowManager.getEnumerator(null); - bestFit = winEnum.getNext(); + bestFit = Services.wm.getEnumerator(null).getNext(); } return bestFit; }, - /** - * Iterate through the frames of a window and return the first frame with a - * matching name. - * - * @win: nsIWindow - XUL window to search - * @frameName: String - name of the frame to search - * - * @return: the frame object or null if not found - */ - getFrame(win, frameName) { - lazy.EnigmailLog.DEBUG( - "windows.sys.mjs: getFrame: name=" + frameName + "\n" - ); - for (var j = 0; j < win.frames.length; j++) { - if (win.frames[j].name == frameName) { - return win.frames[j]; - } - } - return null; - }, - - getMostRecentWindow() { - var windowManager = Services.wm; - return windowManager.getMostRecentWindow(null); - }, - - /** - * Display the key help window - * - * @source - |string| containing the name of the file to display - * - * no return value - */ - - openHelpWindow(source) { - EnigmailWindows.openWin( - "enigmail:help", - "chrome://openpgp/content/ui/enigmailHelp.xhtml?src=" + source, - "centerscreen,resizable" - ); - }, - - /** - * Open the Enigmail Documentation page in a new window - * - * no return value - */ - openEnigmailDocu(parent) { - if (!parent) { - parent = this.getMostRecentWindow(); - } - - parent.open( - "https://doesnotexist-openpgp-integration.thunderbird/faq/docu.php", - "", - "chrome,width=600,height=500,resizable" - ); - }, - /** * If the Key Manager is open, dispatch an event to tell the key * manager to refresh the displayed keys */ keyManReloadKeys() { - for (const thisWin of Services.wm.getEnumerator(null)) { - if (thisWin.name && thisWin.name == "enigmail:KeyManager") { - const evt = new thisWin.Event("reload-keycache", { + for (const win of Services.wm.getEnumerator(null)) { + if (win.name && win.name == "enigmail:KeyManager") { + const evt = new Event("reload-keycache", { bubbles: true, cancelable: false, }); - thisWin.dispatchEvent(evt); + win.dispatchEvent(evt); break; } } }, /** - * Display the card details window + * Display the OpenPGP Key Details. * - * no return value - */ - openCardDetails() { - EnigmailWindows.openWin( - "enigmail:cardDetails", - "chrome://openpgp/content/ui/enigmailCardDetails.xhtml", - "centerscreen" - ); - }, - - /** - * Display the console log window - * - * @win - |object| holding the parent window for the dialog - * - * no return value - */ - openConsoleWindow() { - EnigmailWindows.openWin( - "enigmail:console", - "chrome://openpgp/content/ui/enigmailConsole.xhtml", - "resizable,centerscreen" - ); - }, - - /** - * Display the window for the debug log file - * - * @win - |object| holding the parent window for the dialog - * - * no return value - */ - openDebugLog() { - EnigmailWindows.openWin( - "enigmail:logFile", - "chrome://openpgp/content/ui/enigmailViewFile.xhtml?viewLog=1&title=" + - escape(lazy.l10n.formatValueSync("debug-log-title")), - "centerscreen" - ); - }, - - /** - * Display the dialog for changing the expiry date of one or several keys - * - * @win - |object| holding the parent window for the dialog - * @userIdArr - |array| of |strings| containing the User IDs - * @keyIdArr - |array| of |strings| containing the key IDs (eg. "0x12345678") to change - * - * @returns Boolean - true if expiry date was changed; false otherwise - */ - editKeyExpiry(win, userIdArr, keyIdArr) { - const inputObj = { - keyId: keyIdArr, - userId: userIdArr, - }; - const resultObj = { - refresh: false, - }; - win.openDialog( - "chrome://openpgp/content/ui/enigmailEditKeyExpiryDlg.xhtml", - "", - "dialog,modal,centerscreen,resizable", - inputObj, - resultObj - ); - return resultObj.refresh; - }, - - /** - * Display the dialog for changing key trust of one or several keys - * - * @win - |object| holding the parent window for the dialog - * @userIdArr - |array| of |strings| containing the User IDs - * @keyIdArr - |array| of |strings| containing the key IDs (eg. "0x12345678") to change - * - * @returns Boolean - true if key trust was changed; false otherwise - */ - editKeyTrust(win, userIdArr, keyIdArr) { - const inputObj = { - keyId: keyIdArr, - userId: userIdArr, - }; - const resultObj = { - refresh: false, - }; - win.openDialog( - "chrome://openpgp/content/ui/enigmailEditKeyTrustDlg.xhtml", - "", - "dialog,modal,centerscreen,resizable", - inputObj, - resultObj - ); - return resultObj.refresh; - }, - - /** - * Display the dialog for signing a key - * - * @win - |object| holding the parent window for the dialog - * @userId - |string| containing the User ID (for displaing in the dialog only) - * @keyId - |string| containing the key ID (eg. "0x12345678") - * - * @returns Boolean - true if key was signed; false otherwise - */ - signKey(win, userId, keyId) { - const inputObj = { - keyId, - userId, - }; - const resultObj = { - refresh: false, - }; - win.openDialog( - "chrome://openpgp/content/ui/enigmailSignKeyDlg.xhtml", - "", - "dialog,modal,centerscreen,resizable", - inputObj, - resultObj - ); - return resultObj.refresh; - }, - - /** - * Display the OpenPGP Key Details window - * - * @win - |object| holding the parent window for the dialog - * @keyId - |string| containing the key ID (eg. "0x12345678") - * @refresh - |boolean| if true, cache is cleared and the key data is loaded from GnuPG - * - * @returns Boolean - true: keylist needs to be refreshed - * - false: no need to refresh keylist + * @param {?window} win - Parent window for the dialog. + * @param {string} keyId - The key ID (eg. "0x12345678") + * @param {boolean} refresh - If true, cache is cleared and the key data is + * loaded from the keyring. + * @returns {boolean} true if keylist needs to be refreshed. */ async openKeyDetails(win, keyId, refresh) { if (!win) { @@ -313,165 +82,6 @@ export var EnigmailWindows = { { keyId, modified: lazy.EnigmailKeyRing.clearCache }, resultObj ); - return resultObj.refresh; }, - - /** - * Display the dialog to search and/or download key(s) from a keyserver - * - * @win - |object| holding the parent window for the dialog - * @inputObj - |object| with member searchList (|string| containing the keys to search) - * @resultObj - |object| with member importedKeys (|number| containing the number of imporeted keys) - * - * no return value - */ - downloadKeys(win, inputObj, resultObj) { - lazy.EnigmailLog.DEBUG( - "windows.sys.mjs: downloadKeys: searchList=" + inputObj.searchList + "\n" - ); - - resultObj.importedKeys = 0; - - const ioService = Services.io; - if (ioService && ioService.offline) { - lazy.l10n.formatValue("need-online").then(value => { - Services.prompt.alert(win, null, value); - }); - return; - } - - let valueObj = {}; - if (inputObj.searchList) { - valueObj = { - keyId: "<" + inputObj.searchList.join("> <") + ">", - }; - } - - const keysrvObj = {}; - - if (inputObj.searchList && inputObj.autoKeyServer) { - keysrvObj.value = inputObj.autoKeyServer; - } else { - win.openDialog( - "chrome://openpgp/content/ui/enigmailKeyserverDlg.xhtml", - "", - "dialog,modal,centerscreen", - valueObj, - keysrvObj - ); - } - - if (!keysrvObj.value) { - return; - } - - inputObj.keyserver = keysrvObj.value; - - if (!inputObj.searchList) { - const searchval = keysrvObj.email - .replace(/^(\s*)(.*)/, "$2") - .replace(/\s+$/, ""); // trim spaces - // special handling to convert fingerprints with spaces into fingerprint without spaces - if ( - searchval.length == 49 && - searchval.match(/^[0-9a-fA-F ]*$/) && - searchval[4] == " " && - searchval[9] == " " && - searchval[14] == " " && - searchval[19] == " " && - searchval[24] == " " && - searchval[29] == " " && - searchval[34] == " " && - searchval[39] == " " && - searchval[44] == " " - ) { - inputObj.searchList = ["0x" + searchval.replace(/ /g, "")]; - } else if (searchval.length == 40 && searchval.match(/^[0-9a-fA-F ]*$/)) { - inputObj.searchList = ["0x" + searchval]; - } else if (searchval.length == 8 && searchval.match(/^[0-9a-fA-F]*$/)) { - // special handling to add the required leading 0x when searching for keys - inputObj.searchList = ["0x" + searchval]; - } else if (searchval.length == 16 && searchval.match(/^[0-9a-fA-F]*$/)) { - inputObj.searchList = ["0x" + searchval]; - } else { - inputObj.searchList = searchval.split(/[,; ]+/); - } - } - - win.openDialog( - "chrome://openpgp/content/ui/enigmailSearchKey.xhtml", - "", - "dialog,modal,centerscreen", - inputObj, - resultObj - ); - }, - - /** - * Display Autocrypt Setup Passwd dialog. - * - * @param dlgMode: String - dialog mode: "input" / "display" - * @param passwdType: String - type of password ("numeric9x4" / "generic") - * @param password: String - password or initial two digits of password - * - * @returns String entered password (in input mode) or NULL - */ - autocryptSetupPasswd(window, dlgMode, passwdType = "numeric9x4", password) { - if (!window) { - window = this.getBestParentWin(); - } - - const inputObj = { - password: null, - passwdType, - dlgMode, - }; - - if (password) { - inputObj.initialPasswd = password; - } - - window.openDialog( - "chrome://openpgp/content/ui/autocryptSetupPasswd.xhtml", - "", - "dialog,modal,centerscreen", - inputObj - ); - - return inputObj.password; - }, - - /** - * Display dialog to initiate the Autocrypt Setup Message. - * - */ - inititateAcSetupMessage(window) { - if (!window) { - window = this.getBestParentWin(); - } - - window.openDialog( - "chrome://openpgp/content/ui/autocryptInitiateBackup.xhtml", - "", - "dialog,centerscreen" - ); - }, - - shutdown() { - lazy.EnigmailLog.DEBUG("windows.sys.mjs: shutdown()\n"); - - const tabs = Services.wm - .getMostRecentWindow("mail:3pane") - .document.getElementById("tabmail"); - - for (let i = tabs.tabInfo.length - 1; i >= 0; i--) { - if ( - "openedUrl" in tabs.tabInfo[i] && - tabs.tabInfo[i].openedUrl.startsWith("chrome://openpgp/") - ) { - tabs.closeTab(tabs.tabInfo[i]); - } - } - }, }; diff --git a/mail/extensions/openpgp/content/strings/enigmail.properties b/mail/extensions/openpgp/content/strings/enigmail.properties index f48cecb827..e6e72d77ba 100644 --- a/mail/extensions/openpgp/content/strings/enigmail.properties +++ b/mail/extensions/openpgp/content/strings/enigmail.properties @@ -218,13 +218,6 @@ # Strings in enigmailEditKeyTrustDlg.xhtml ### setKeyTrustFailed=Setting owner trust failed -# Strings in enigmailSignKeyDlg.js -### signKeyFailed=Key signing failed -### alreadySigned.label=Note: the key %S is already signed with the selected secret key. -### alreadySignedexportable.label=Note: the key %S is already signed exportable with the selected secret key. A local signature does not make sense. -### partlySigned.label=Note: some user IDs of key %S are already signed with the selected secret key. -### noTrustedOwnKeys=No eligible key found for signing! You need at least one fully trusted secret key in order to sign keys. - # Strings in enigmailKeyManager.js ### keyValid.noSubkey=no valid subkey diff --git a/mail/extensions/openpgp/content/ui/enigmailKeyManager.js b/mail/extensions/openpgp/content/ui/enigmailKeyManager.js index 32800594d8..07f5835741 100644 --- a/mail/extensions/openpgp/content/ui/enigmailKeyManager.js +++ b/mail/extensions/openpgp/content/ui/enigmailKeyManager.js @@ -854,10 +854,6 @@ function enigmailImportKeysFromUrl() { }); } -function initiateAcKeyTransfer() { - EnigmailWindows.inititateAcSetupMessage(); -} - // // ----- key filtering functionality ----- // diff --git a/mail/extensions/openpgp/content/ui/enigmailMsgHdrViewOverlay.js b/mail/extensions/openpgp/content/ui/enigmailMsgHdrViewOverlay.js index 756b18a0c8..9f7716ba6d 100644 --- a/mail/extensions/openpgp/content/ui/enigmailMsgHdrViewOverlay.js +++ b/mail/extensions/openpgp/content/ui/enigmailMsgHdrViewOverlay.js @@ -341,38 +341,6 @@ Enigmail.hdrView = { ); }, - editKeyExpiry() { - EnigmailWindows.editKeyExpiry( - window, - [Enigmail.msg.securityInfo.userId], - [Enigmail.msg.securityInfo.keyId] - ); - ReloadMessage(); - }, - - editKeyTrust() { - const key = EnigmailKeyRing.getKeyById(Enigmail.msg.securityInfo.keyId); - - EnigmailWindows.editKeyTrust( - window, - [Enigmail.msg.securityInfo.userId], - [key.keyId] - ); - ReloadMessage(); - }, - - signKey() { - const key = EnigmailKeyRing.getKeyById(Enigmail.msg.securityInfo.keyId); - - EnigmailWindows.signKey( - window, - Enigmail.msg.securityInfo.userId, - key.keyId, - null - ); - ReloadMessage(); - }, - msgHdrViewLoad() { this.messageListener = { onStartHeaders() { diff --git a/mail/extensions/openpgp/content/ui/keyDetailsDlg.js b/mail/extensions/openpgp/content/ui/keyDetailsDlg.js index ac7a778104..33100d8363 100644 --- a/mail/extensions/openpgp/content/ui/keyDetailsDlg.js +++ b/mail/extensions/openpgp/content/ui/keyDetailsDlg.js @@ -663,15 +663,6 @@ function enableRefresh() { // ------------------ onCommand Functions ----------------- -/* -function signKey() { - if (EnigmailWindows.signKey(window, gUserId, gKeyId)) { - enableRefresh(); - reloadData(false); - } -} -*/ - /* function manageUids() { let keyObj = EnigmailKeyRing.getKeyById(gKeyId);