summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/compose/public/nsIMsgSendListener.idl
blob: 0bca8cceb0bba61ec03416afcfe1788824971c7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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/. */

#include "nsISupports.idl"

interface nsIFile;
interface nsITransportSecurityInfo;

[scriptable, uuid(D34DC178-5E78-45E8-8658-A8F52D9CCF5F)]
interface nsIMsgSendListener : nsISupports {

    /**
     * Notify the observer that the message has started to be delivered. This method is
     * called only once, at the beginning of a message send operation.
     *
     * @return The return value is currently ignored.  In the future it may be
     * used to cancel the URL load..
     */
    void onStartSending(in string aMsgID, in uint32_t aMsgSize);

    /**
     * Notify the observer that progress as occurred for the message send
     */
    void onProgress(in string aMsgID, in uint32_t aProgress, in uint32_t aProgressMax);

    /**
     * Notify the observer with a status message for the message send
     */
    void onStatus(in string aMsgID, in wstring aMsg);

    /**
     * Notify the observer that the message has been sent.  This method is
     * called once when the networking library has finished processing the
     * message.
     *
     * This method is called regardless of whether the the operation was successful.
     * aMsgID   The message id for the mail message
     * status   Status code for the message send.
     * msg      A text string describing the error.
     * returnFileSpec The returned file spec for save to file operations.
     */
    void onStopSending(in string aMsgID, in nsresult aStatus, in wstring aMsg,
                       in nsIFile aReturnFile);

    /**
     * Notify the observer with the message id and the folder uri before the draft
     * is copied.
     */
    void onGetDraftFolderURI(in string aMsgID, in AUTF8String aFolderURI);

    /**
     * Notify the observer when the user aborts the send without actually doing the send
     * eg : by closing the compose window without Send.
     */
    void onSendNotPerformed(in string aMsgID, in nsresult aStatus);

    /**
     * Notify that an NSS security error has occurred during the send
     * (e.g. Bad Certificate or SSL version failure).
     * This callback is invoked before onStopSending(), in case a listener
     * needs the securityInfo - most likely to get at a failed certificate,
     * allowing the user to add an exception.
     * onStopSending() will still be called after this, so a listener
     * which doesn't need special NSS handling can just leave this callback as
     * an empty function and leave the handling to onStopSending().
     *
     * @param {string} msgID      - The message ID.
     * @param {nsresult} status   - The error code (it will be in the NSS error
     *                              code range).
     * @param {nsITransportSecurityInfo} secInfo
     *                            - Security info for the failed operation.
     * @param {ACString} location - The location of the failed operation
     *                              ("<host>:<port>")
     */
    void onTransportSecurityError(in string msgID, in nsresult status, in nsITransportSecurityInfo secInfo, in ACString location);

};