From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- comm/mailnews/base/src/MailServices.jsm | 169 ++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 comm/mailnews/base/src/MailServices.jsm (limited to 'comm/mailnews/base/src/MailServices.jsm') diff --git a/comm/mailnews/base/src/MailServices.jsm b/comm/mailnews/base/src/MailServices.jsm new file mode 100644 index 0000000000..f316b16bde --- /dev/null +++ b/comm/mailnews/base/src/MailServices.jsm @@ -0,0 +1,169 @@ +/* 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/. */ + +var EXPORTED_SYMBOLS = ["MailServices"]; + +const { XPCOMUtils } = ChromeUtils.importESModule( + "resource://gre/modules/XPCOMUtils.sys.mjs" +); + +var MailServices = { + /** + * Gets the `nsIMsgMessageService` for a given message URI. This should have + * the same behaviour as `GetMessageServiceFromURI` (nsMsgUtils.cpp). + * + * @param {string} uri - The URI of a folder or message. + * @returns {nsIMsgMessageService} + */ + messageServiceFromURI(uri) { + let index = uri.indexOf(":"); + if (index == -1) { + throw new Components.Exception( + `Bad message URI: ${uri}`, + Cr.NS_ERROR_FAILURE + ); + } + + let protocol = uri.substring(0, index); + if (protocol == "file") { + protocol = "mailbox"; + } + return Cc[ + `@mozilla.org/messenger/messageservice;1?type=${protocol}` + ].getService(Ci.nsIMsgMessageService); + }, +}; + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "mailSession", + "@mozilla.org/messenger/services/session;1", + "nsIMsgMailSession" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "accounts", + "@mozilla.org/messenger/account-manager;1", + "nsIMsgAccountManager" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "pop3", + "@mozilla.org/messenger/popservice;1", + "nsIPop3Service" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "imap", + "@mozilla.org/messenger/imapservice;1", + "nsIImapService" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "nntp", + "@mozilla.org/messenger/nntpservice;1", + "nsINntpService" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "smtp", + "@mozilla.org/messengercompose/smtp;1", + "nsISmtpService" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "compose", + "@mozilla.org/messengercompose;1", + "nsIMsgComposeService" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "ab", + "@mozilla.org/abmanager;1", + "nsIAbManager" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "copy", + "@mozilla.org/messenger/messagecopyservice;1", + "nsIMsgCopyService" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "mfn", + "@mozilla.org/messenger/msgnotificationservice;1", + "nsIMsgFolderNotificationService" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "headerParser", + "@mozilla.org/messenger/headerparser;1", + "nsIMsgHeaderParser" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "mimeConverter", + "@mozilla.org/messenger/mimeconverter;1", + "nsIMimeConverter" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "tags", + "@mozilla.org/messenger/tagservice;1", + "nsIMsgTagService" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "filters", + "@mozilla.org/messenger/services/filters;1", + "nsIMsgFilterService" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "junk", + "@mozilla.org/messenger/filter-plugin;1?name=bayesianfilter", + "nsIJunkMailPlugin" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "newMailNotification", + "@mozilla.org/newMailNotificationService;1", + "mozINewMailNotificationService" +); + +XPCOMUtils.defineLazyServiceGetter( + MailServices, + "folderLookup", + "@mozilla.org/mail/folder-lookup;1", + "nsIFolderLookupService" +); + +// Clean up all of these references at shutdown, so that they don't appear as +// a memory leak in test logs. +Services.obs.addObserver( + { + observe() { + for (let key of Object.keys(MailServices)) { + delete MailServices[key]; + } + Services.obs.removeObserver(this, "xpcom-shutdown"); + }, + }, + "xpcom-shutdown" +); -- cgit v1.2.3