diff options
Diffstat (limited to 'comm/mailnews/local/src/Pop3Service.jsm')
-rw-r--r-- | comm/mailnews/local/src/Pop3Service.jsm | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/comm/mailnews/local/src/Pop3Service.jsm b/comm/mailnews/local/src/Pop3Service.jsm new file mode 100644 index 0000000000..0270489fcd --- /dev/null +++ b/comm/mailnews/local/src/Pop3Service.jsm @@ -0,0 +1,77 @@ +/* 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 EXPORTED_SYMBOLS = ["Pop3Service"]; + +var { Pop3Client } = ChromeUtils.import("resource:///modules/Pop3Client.jsm"); + +/** + * @implements {nsIPop3Service} + */ +class Pop3Service { + QueryInterface = ChromeUtils.generateQI(["nsIPop3Service"]); + + constructor() { + this._listeners = new Set(); + } + + GetNewMail(msgWindow, urlListener, inbox, server) { + return this._getMail(true, msgWindow, urlListener, inbox, server); + } + + CheckForNewMail(msgWindow, urlListener, inbox, server) { + return this._getMail(false, msgWindow, urlListener, inbox, server); + } + + verifyLogon(server, urlListener, msgWindow) { + let client = new Pop3Client(server); + client.urlListener = urlListener; + client.connect(); + client.onOpen = () => { + client.verifyLogon(msgWindow); + }; + return client.runningUri; + } + + addListener(listener) { + this._listeners.add(listener); + } + + removeListener(listener) { + this._listeners.remove(listener); + } + + notifyDownloadStarted(folder) { + for (let listener of this._listeners) { + listener.onDownloadStarted(folder); + } + } + + notifyDownloadProgress(folder, numMessages, numTotalMessages) { + for (let listener of this._listeners) { + listener.onDownloadProgress(folder, numMessages, numTotalMessages); + } + } + + notifyDownloadCompleted(folder, numMessages) { + for (let listener of this._listeners) { + listener.onDownloadCompleted(folder, numMessages); + } + } + + _getMail(downloadNewMail, msgWindow, urlListener, inbox, server) { + let client = new Pop3Client(server); + client.runningUri.msgWindow = msgWindow; + client.urlListener = urlListener; + client.connect(); + client.onOpen = () => { + client.getMail(downloadNewMail, msgWindow, inbox); + }; + return client.runningUri; + } +} + +Pop3Service.prototype.classID = Components.ID( + "{1e8f21c3-32c3-4114-9ea4-3d74006fb351}" +); |