зеркало из https://github.com/mozilla/pjs.git
Fixing bug 392043, nsIMsgSendListener callbacks don't work. This checkin will remove nsMsgDeliveryListener.h/cpp since the class should not be public and is only used by nsMsgSend.
This commit is contained in:
Родитель
34e29c661e
Коммит
9cb7b88ebd
|
@ -242,6 +242,8 @@ interface nsIMsgSend : nsISupports
|
|||
[noscript] void notifyListenerOnStopSending(in string aMsgID, in nsresult aStatus, in wstring aMsg, in nsIFile returnFile);
|
||||
[noscript] void deliverAsMailExit(in nsIURI aUrl, in nsresult aExitCode);
|
||||
[noscript] void deliverAsNewsExit(in nsIURI aUrl, in nsresult aExitCode);
|
||||
|
||||
[noscript] void sendDeliveryCallback(in nsIURI aUrl, in boolean inIsNewsDelivery, in nsresult aExitCode);
|
||||
|
||||
/* methods for copy listener ... */
|
||||
[noscript] void notifyListenerOnStartCopy();
|
||||
|
|
|
@ -101,7 +101,6 @@ CPPSRCS = \
|
|||
nsSmtpService.cpp \
|
||||
nsMsgCopy.cpp \
|
||||
nsMsgSendLater.cpp \
|
||||
nsMsgDeliveryListener.cpp \
|
||||
nsMsgEncoders.cpp \
|
||||
nsMsgCompUtils.cpp \
|
||||
nsMsgAttachment.cpp \
|
||||
|
|
|
@ -916,7 +916,8 @@ NS_IMETHODIMP nsMsgCompose::RemoveMsgSendListener( nsIMsgSendListener *aMsgSendL
|
|||
return mExternalSendListeners.RemoveObject( aMsgSendListener );
|
||||
}
|
||||
|
||||
nsresult nsMsgCompose::_SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity, const char *accountKey, PRBool entityConversionDone)
|
||||
nsresult nsMsgCompose::_SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *identity,
|
||||
const char *accountKey, PRBool entityConversionDone)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
|
@ -995,7 +996,8 @@ nsresult nsMsgCompose::_SendMsg(MSG_DeliverMode deliverMode, nsIMsgIdentity *ide
|
|||
if (deliverMode == nsIMsgCompDeliverMode::AutoSaveAsDraft)
|
||||
deliverMode = nsIMsgCompDeliverMode::SaveAsDraft;
|
||||
|
||||
composeSendListener->SetMsgCompose(this);
|
||||
nsRefPtr<nsIMsgCompose> msgCompose(this);
|
||||
composeSendListener->SetMsgCompose(msgCompose);
|
||||
composeSendListener->SetDeliverMode(deliverMode);
|
||||
|
||||
if (mProgress)
|
||||
|
@ -3087,39 +3089,31 @@ NS_IMETHODIMP nsMsgComposeSendListener::SetDeliverMode(MSG_DeliverMode deliverMo
|
|||
nsresult
|
||||
nsMsgComposeSendListener::OnStartSending(const char *aMsgID, PRUint32 aMsgSize)
|
||||
{
|
||||
#ifdef NS_DEBUG
|
||||
printf("nsMsgComposeSendListener::OnStartSending()\n");
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendlistener = do_QueryReferent(mWeakComposeObj);
|
||||
if (composeSendlistener)
|
||||
composeSendlistener->OnStartSending(aMsgID, aMsgSize);
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendListener = do_QueryReferent(mWeakComposeObj, &rv);
|
||||
if (NS_SUCCEEDED(rv) && composeSendListener)
|
||||
composeSendListener->OnStartSending(aMsgID, aMsgSize);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsMsgComposeSendListener::OnProgress(const char *aMsgID, PRUint32 aProgress, PRUint32 aProgressMax)
|
||||
{
|
||||
#ifdef NS_DEBUG
|
||||
printf("nsMsgComposeSendListener::OnProgress()\n");
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendlistener = do_QueryReferent(mWeakComposeObj);
|
||||
if (composeSendlistener)
|
||||
composeSendlistener->OnProgress(aMsgID, aProgress, aProgressMax);
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendListener = do_QueryReferent(mWeakComposeObj, &rv);
|
||||
if (NS_SUCCEEDED(rv) && composeSendListener)
|
||||
composeSendListener->OnProgress(aMsgID, aProgress, aProgressMax);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsMsgComposeSendListener::OnStatus(const char *aMsgID, const PRUnichar *aMsg)
|
||||
{
|
||||
#ifdef NS_DEBUG
|
||||
printf("nsMsgComposeSendListener::OnStatus()\n");
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendlistener = do_QueryReferent(mWeakComposeObj);
|
||||
if (composeSendlistener)
|
||||
composeSendlistener->OnStatus(aMsgID, aMsg);
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendListener = do_QueryReferent(mWeakComposeObj, &rv);
|
||||
if (NS_SUCCEEDED(rv) && composeSendListener)
|
||||
composeSendListener->OnStatus(aMsgID, aMsg);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -3130,29 +3124,27 @@ nsresult nsMsgComposeSendListener::OnSendNotPerformed(const char *aMsgID, nsresu
|
|||
// for closing the windows. However we would need to do the other operations as below.
|
||||
|
||||
nsresult rv = NS_OK;
|
||||
nsCOMPtr<nsIMsgCompose> msgCompose = do_QueryReferent(mWeakComposeObj, &rv);
|
||||
if (msgCompose)
|
||||
msgCompose->NotifyStateListeners(nsIMsgComposeNotificationType::ComposeProcessDone, aStatus);
|
||||
|
||||
nsCOMPtr<nsIMsgCompose>compose = do_QueryReferent(mWeakComposeObj);
|
||||
if (compose)
|
||||
compose->NotifyStateListeners(nsIMsgComposeNotificationType::ComposeProcessDone, aStatus);
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendListener = do_QueryReferent(mWeakComposeObj, &rv);
|
||||
if (NS_SUCCEEDED(rv) && composeSendListener)
|
||||
composeSendListener->OnSendNotPerformed(aMsgID, aStatus);
|
||||
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendlistener = do_QueryReferent(mWeakComposeObj);
|
||||
if (composeSendlistener)
|
||||
composeSendlistener->OnSendNotPerformed(aMsgID, aStatus);
|
||||
|
||||
return rv ;
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
nsresult nsMsgComposeSendListener::OnStopSending(const char *aMsgID, nsresult aStatus, const PRUnichar *aMsg,
|
||||
nsIFile *returnFile)
|
||||
nsresult nsMsgComposeSendListener::OnStopSending(const char *aMsgID, nsresult aStatus,
|
||||
const PRUnichar *aMsg, nsIFile *returnFile)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
nsCOMPtr<nsIMsgCompose>compose = do_QueryReferent(mWeakComposeObj);
|
||||
if (compose)
|
||||
nsCOMPtr<nsIMsgCompose> msgCompose = do_QueryReferent(mWeakComposeObj, &rv);
|
||||
if (msgCompose)
|
||||
{
|
||||
nsCOMPtr<nsIMsgProgress> progress;
|
||||
compose->GetProgress(getter_AddRefs(progress));
|
||||
msgCompose->GetProgress(getter_AddRefs(progress));
|
||||
|
||||
if (NS_SUCCEEDED(aStatus))
|
||||
{
|
||||
|
@ -3160,10 +3152,17 @@ nsresult nsMsgComposeSendListener::OnStopSending(const char *aMsgID, nsresult aS
|
|||
printf("nsMsgComposeSendListener: Success on the message send operation!\n");
|
||||
#endif
|
||||
nsCOMPtr<nsIMsgCompFields> compFields;
|
||||
compose->GetCompFields(getter_AddRefs(compFields));
|
||||
msgCompose->GetCompFields(getter_AddRefs(compFields));
|
||||
|
||||
// only process the reply flags if we successfully sent the message
|
||||
compose->ProcessReplyFlags();
|
||||
msgCompose->ProcessReplyFlags();
|
||||
|
||||
// See if there is a composer window
|
||||
PRBool hasDomWindow = PR_TRUE;
|
||||
nsCOMPtr<nsIDOMWindowInternal> domWindow;
|
||||
rv = msgCompose->GetDomWindow(getter_AddRefs(domWindow));
|
||||
if (NS_FAILED(rv) || !domWindow)
|
||||
hasDomWindow = PR_FALSE;
|
||||
|
||||
// Close the window ONLY if we are not going to do a save operation
|
||||
nsAutoString fieldsFCC;
|
||||
|
@ -3173,40 +3172,42 @@ nsresult nsMsgComposeSendListener::OnStopSending(const char *aMsgID, nsresult aS
|
|||
{
|
||||
if (fieldsFCC.LowerCaseEqualsLiteral("nocopy://"))
|
||||
{
|
||||
compose->NotifyStateListeners(nsIMsgComposeNotificationType::ComposeProcessDone, NS_OK);
|
||||
msgCompose->NotifyStateListeners(nsIMsgComposeNotificationType::ComposeProcessDone, NS_OK);
|
||||
if (progress)
|
||||
{
|
||||
progress->UnregisterListener(this);
|
||||
progress->CloseProgressDialog(PR_FALSE);
|
||||
}
|
||||
compose->CloseWindow(PR_TRUE);
|
||||
if (hasDomWindow)
|
||||
msgCompose->CloseWindow(PR_TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
compose->NotifyStateListeners(nsIMsgComposeNotificationType::ComposeProcessDone, NS_OK);
|
||||
msgCompose->NotifyStateListeners(nsIMsgComposeNotificationType::ComposeProcessDone, NS_OK);
|
||||
if (progress)
|
||||
{
|
||||
progress->UnregisterListener(this);
|
||||
progress->CloseProgressDialog(PR_FALSE);
|
||||
}
|
||||
compose->CloseWindow(PR_TRUE); // if we fail on the simple GetFcc call, close the window to be safe and avoid
|
||||
// windows hanging around to prevent the app from exiting.
|
||||
if (hasDomWindow)
|
||||
msgCompose->CloseWindow(PR_TRUE); // if we fail on the simple GetFcc call, close the window to be safe and avoid
|
||||
// windows hanging around to prevent the app from exiting.
|
||||
}
|
||||
|
||||
// Remove the current draft msg when sending draft is done.
|
||||
PRBool deleteDraft;
|
||||
compose->GetDeleteDraft(&deleteDraft);
|
||||
msgCompose->GetDeleteDraft(&deleteDraft);
|
||||
if (deleteDraft)
|
||||
RemoveCurrentDraftMessage(compose, PR_FALSE);
|
||||
RemoveCurrentDraftMessage(msgCompose, PR_FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef NS_DEBUG
|
||||
printf("nsMsgComposeSendListener: the message send operation failed!\n");
|
||||
#endif
|
||||
compose->NotifyStateListeners(nsIMsgComposeNotificationType::ComposeProcessDone, aStatus);
|
||||
msgCompose->NotifyStateListeners(nsIMsgComposeNotificationType::ComposeProcessDone, aStatus);
|
||||
if (progress)
|
||||
{
|
||||
progress->CloseProgressDialog(PR_TRUE);
|
||||
|
@ -3216,9 +3217,9 @@ nsresult nsMsgComposeSendListener::OnStopSending(const char *aMsgID, nsresult aS
|
|||
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendlistener = do_QueryReferent(mWeakComposeObj);
|
||||
if (composeSendlistener)
|
||||
composeSendlistener->OnStopSending(aMsgID, aStatus, aMsg, returnFile);
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendListener = do_QueryReferent(mWeakComposeObj, &rv);
|
||||
if (NS_SUCCEEDED(rv) && composeSendListener)
|
||||
composeSendListener->OnStopSending(aMsgID, aStatus, aMsg, returnFile);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
@ -3226,9 +3227,10 @@ nsresult nsMsgComposeSendListener::OnStopSending(const char *aMsgID, nsresult aS
|
|||
nsresult
|
||||
nsMsgComposeSendListener::OnGetDraftFolderURI(const char *aFolderURI)
|
||||
{
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendlistener = do_QueryReferent(mWeakComposeObj);
|
||||
if (composeSendlistener)
|
||||
composeSendlistener->OnGetDraftFolderURI(aFolderURI);
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIMsgSendListener> composeSendListener = do_QueryReferent(mWeakComposeObj, &rv);
|
||||
if (NS_SUCCEEDED(rv) && composeSendListener)
|
||||
composeSendListener->OnGetDraftFolderURI(aFolderURI);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -3257,28 +3259,29 @@ nsresult
|
|||
nsMsgComposeSendListener::OnStopCopy(nsresult aStatus)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
nsCOMPtr<nsIMsgCompose>compose = do_QueryReferent(mWeakComposeObj);
|
||||
if (compose)
|
||||
nsCOMPtr<nsIMsgCompose> msgCompose = do_QueryReferent(mWeakComposeObj, &rv);
|
||||
if (msgCompose)
|
||||
{
|
||||
if (mDeliverMode == nsIMsgSend::nsMsgQueueForLater ||
|
||||
mDeliverMode == nsIMsgSend::nsMsgSaveAsDraft)
|
||||
compose->RememberQueuedDisposition();
|
||||
mDeliverMode == nsIMsgSend::nsMsgSaveAsDraft)
|
||||
{
|
||||
msgCompose->RememberQueuedDisposition();
|
||||
}
|
||||
|
||||
// Ok, if we are here, we are done with the send/copy operation so
|
||||
// we have to do something with the window....SHOW if failed, Close
|
||||
// if succeeded
|
||||
|
||||
nsCOMPtr<nsIMsgProgress> progress;
|
||||
compose->GetProgress(getter_AddRefs(progress));
|
||||
msgCompose->GetProgress(getter_AddRefs(progress));
|
||||
if (progress)
|
||||
{
|
||||
//Unregister ourself from msg compose progress
|
||||
// Unregister ourself from msg compose progress
|
||||
progress->UnregisterListener(this);
|
||||
progress->CloseProgressDialog(NS_FAILED(aStatus));
|
||||
}
|
||||
|
||||
compose->NotifyStateListeners(nsIMsgComposeNotificationType::ComposeProcessDone, aStatus);
|
||||
msgCompose->NotifyStateListeners(nsIMsgComposeNotificationType::ComposeProcessDone, aStatus);
|
||||
|
||||
if (NS_SUCCEEDED(aStatus))
|
||||
{
|
||||
|
@ -3290,19 +3293,20 @@ nsMsgComposeSendListener::OnStopCopy(nsresult aStatus)
|
|||
if (mDeliverMode == nsIMsgSend::nsMsgSaveAsDraft ||
|
||||
mDeliverMode == nsIMsgSend::nsMsgSaveAsTemplate)
|
||||
{
|
||||
compose->NotifyStateListeners(nsIMsgComposeNotificationType::SaveInFolderDone, aStatus);
|
||||
msgCompose->NotifyStateListeners(nsIMsgComposeNotificationType::SaveInFolderDone, aStatus);
|
||||
// Remove the current draft msg when saving as draft/template is done.
|
||||
compose->SetDeleteDraft(PR_TRUE);
|
||||
RemoveCurrentDraftMessage(compose, PR_TRUE);
|
||||
msgCompose->SetDeleteDraft(PR_TRUE);
|
||||
RemoveCurrentDraftMessage(msgCompose, PR_TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Remove (possible) draft if we're in send later mode
|
||||
if(mDeliverMode == nsIMsgSend::nsMsgQueueForLater) {
|
||||
compose->SetDeleteDraft(PR_TRUE);
|
||||
RemoveCurrentDraftMessage(compose, PR_TRUE);
|
||||
if (mDeliverMode == nsIMsgSend::nsMsgQueueForLater)
|
||||
{
|
||||
msgCompose->SetDeleteDraft(PR_TRUE);
|
||||
RemoveCurrentDraftMessage(msgCompose, PR_TRUE);
|
||||
}
|
||||
compose->CloseWindow(PR_TRUE);
|
||||
msgCompose->CloseWindow(PR_TRUE);
|
||||
}
|
||||
}
|
||||
#ifdef NS_DEBUG
|
||||
|
@ -3317,7 +3321,7 @@ nsMsgComposeSendListener::OnStopCopy(nsresult aStatus)
|
|||
nsresult
|
||||
nsMsgComposeSendListener::GetMsgFolder(nsIMsgCompose *compObj, nsIMsgFolder **msgFolder)
|
||||
{
|
||||
nsresult rv;
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIMsgFolder> aMsgFolder;
|
||||
nsCString folderUri;
|
||||
|
||||
|
@ -3340,7 +3344,7 @@ nsMsgComposeSendListener::GetMsgFolder(nsIMsgCompose *compObj, nsIMsgFolder **ms
|
|||
nsresult
|
||||
nsMsgComposeSendListener::RemoveCurrentDraftMessage(nsIMsgCompose *compObj, PRBool calledByCopy)
|
||||
{
|
||||
nsresult rv;
|
||||
nsresult rv;
|
||||
nsCOMPtr <nsIMsgCompFields> compFields = nsnull;
|
||||
|
||||
rv = compObj->GetCompFields(getter_AddRefs(compFields));
|
||||
|
@ -3488,19 +3492,19 @@ NS_IMETHODIMP nsMsgComposeSendListener::OnStateChange(nsIWebProgress *aWebProgre
|
|||
{
|
||||
if (aStateFlags == nsIWebProgressListener::STATE_STOP)
|
||||
{
|
||||
nsCOMPtr<nsIMsgCompose>compose = do_QueryReferent(mWeakComposeObj);
|
||||
if (compose)
|
||||
nsCOMPtr<nsIMsgCompose> msgCompose = do_QueryReferent(mWeakComposeObj);
|
||||
if (msgCompose)
|
||||
{
|
||||
nsCOMPtr<nsIMsgProgress> progress;
|
||||
compose->GetProgress(getter_AddRefs(progress));
|
||||
msgCompose->GetProgress(getter_AddRefs(progress));
|
||||
|
||||
//Time to stop any pending operation...
|
||||
// Time to stop any pending operation...
|
||||
if (progress)
|
||||
{
|
||||
//Unregister ourself from msg compose progress
|
||||
// Unregister ourself from msg compose progress
|
||||
progress->UnregisterListener(this);
|
||||
|
||||
PRBool bCanceled = PR_FALSE;
|
||||
PRBool bCanceled = PR_FALSE;
|
||||
progress->GetProcessCanceledByUser(&bCanceled);
|
||||
if (bCanceled)
|
||||
{
|
||||
|
@ -3517,9 +3521,9 @@ NS_IMETHODIMP nsMsgComposeSendListener::OnStateChange(nsIWebProgress *aWebProgre
|
|||
}
|
||||
|
||||
nsCOMPtr<nsIMsgSend> msgSend;
|
||||
compose->GetMessageSend(getter_AddRefs(msgSend));
|
||||
msgCompose->GetMessageSend(getter_AddRefs(msgSend));
|
||||
if (msgSend)
|
||||
msgSend->Abort();
|
||||
msgSend->Abort();
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
#include "nsMsgCompUtils.h"
|
||||
#include "nsIMsgMessageService.h"
|
||||
#include "nsMsgUtils.h"
|
||||
#include "nsMsgDeliveryListener.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsMsgMimeCID.h"
|
||||
#include "nsMsgCompCID.h"
|
||||
|
|
|
@ -51,7 +51,6 @@
|
|||
#include "nsIPrefService.h"
|
||||
#include "nsIPrefBranch.h"
|
||||
#include "nsIMsgMailNewsUrl.h"
|
||||
#include "nsMsgDeliveryListener.h"
|
||||
#include "nsMsgEncoders.h"
|
||||
#include "nsMsgCompUtils.h"
|
||||
#include "nsMsgI18N.h"
|
||||
|
@ -225,6 +224,62 @@ static nsresult StripOutGroupNames(char * addresses)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
// This private class just provides us an external URL listener, with callback functionality.
|
||||
|
||||
class MsgDeliveryListener : public nsIUrlListener
|
||||
{
|
||||
public:
|
||||
MsgDeliveryListener(nsIMsgSend *aMsgSend, PRBool inIsNewsDelivery);
|
||||
virtual ~MsgDeliveryListener();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIURLLISTENER
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIMsgSend> mMsgSend;
|
||||
PRBool mIsNewsDelivery;
|
||||
};
|
||||
|
||||
NS_IMPL_ISUPPORTS1(MsgDeliveryListener, nsIUrlListener);
|
||||
|
||||
MsgDeliveryListener::MsgDeliveryListener(nsIMsgSend *aMsgSend, PRBool inIsNewsDelivery)
|
||||
{
|
||||
mMsgSend = aMsgSend;
|
||||
mIsNewsDelivery = inIsNewsDelivery;
|
||||
}
|
||||
|
||||
MsgDeliveryListener::~MsgDeliveryListener()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP MsgDeliveryListener::OnStartRunningUrl(nsIURI *url)
|
||||
{
|
||||
if (mMsgSend)
|
||||
mMsgSend->NotifyListenerOnStartSending(nsnull, nsnull);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP MsgDeliveryListener::OnStopRunningUrl(nsIURI *url, nsresult aExitCode)
|
||||
{
|
||||
if (url)
|
||||
{
|
||||
nsCOMPtr<nsIMsgMailNewsUrl> mailUrl = do_QueryInterface(url);
|
||||
if (mailUrl)
|
||||
mailUrl->UnRegisterListener(this);
|
||||
}
|
||||
|
||||
if (mMsgSend)
|
||||
{
|
||||
mMsgSend->NotifyListenerOnStopSending(nsnull, aExitCode, nsnull, nsnull);
|
||||
mMsgSend->SendDeliveryCallback(url, mIsNewsDelivery, aExitCode);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
/* the following macro actually implement addref, release and query interface for our component. */
|
||||
NS_IMPL_THREADSAFE_ISUPPORTS1(nsMsgComposeAndSend, nsIMsgSend)
|
||||
|
||||
|
@ -3336,58 +3391,49 @@ nsMsgComposeAndSend::Init(
|
|||
return HackAttachments(attachments, preloaded_attachments);
|
||||
}
|
||||
|
||||
nsresult
|
||||
SendDeliveryCallback(nsIURI *aUrl, nsresult aExitCode, nsMsgDeliveryType deliveryType, nsISupports *tagData)
|
||||
NS_IMETHODIMP nsMsgComposeAndSend::SendDeliveryCallback(nsIURI *aUrl, PRBool inIsNewsDelivery, nsresult aExitCode)
|
||||
{
|
||||
if (tagData)
|
||||
if (inIsNewsDelivery)
|
||||
{
|
||||
nsCOMPtr<nsIMsgSend> msgSend = do_QueryInterface(tagData);
|
||||
if (!msgSend)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
if (deliveryType == nsMailDelivery)
|
||||
{
|
||||
if (NS_FAILED(aExitCode))
|
||||
switch (aExitCode)
|
||||
{
|
||||
case NS_ERROR_UNKNOWN_HOST:
|
||||
case NS_ERROR_UNKNOWN_PROXY_HOST:
|
||||
aExitCode = NS_ERROR_SMTP_SEND_FAILED_UNKNOWN_SERVER;
|
||||
break;
|
||||
case NS_ERROR_CONNECTION_REFUSED:
|
||||
case NS_ERROR_PROXY_CONNECTION_REFUSED:
|
||||
aExitCode = NS_ERROR_SMTP_SEND_FAILED_REFUSED;
|
||||
break;
|
||||
case NS_ERROR_NET_INTERRUPT:
|
||||
aExitCode = NS_ERROR_SMTP_SEND_FAILED_INTERRUPTED;
|
||||
break;
|
||||
case NS_ERROR_NET_TIMEOUT:
|
||||
case NS_ERROR_NET_RESET:
|
||||
aExitCode = NS_ERROR_SMTP_SEND_FAILED_TIMEOUT;
|
||||
break;
|
||||
case NS_ERROR_SMTP_PASSWORD_UNDEFINED:
|
||||
// nothing to do, just keep the code
|
||||
break;
|
||||
default:
|
||||
if (aExitCode != NS_ERROR_ABORT && !NS_IS_MSG_ERROR(aExitCode))
|
||||
aExitCode = NS_ERROR_SMTP_SEND_FAILED_UNKNOWN_REASON;
|
||||
break;
|
||||
}
|
||||
msgSend->DeliverAsMailExit(aUrl, aExitCode);
|
||||
}
|
||||
|
||||
else if (deliveryType == nsNewsDelivery)
|
||||
{
|
||||
if (NS_FAILED(aExitCode))
|
||||
if (aExitCode != NS_ERROR_ABORT && !NS_IS_MSG_ERROR(aExitCode))
|
||||
aExitCode = NS_ERROR_POST_FAILED;
|
||||
|
||||
msgSend->DeliverAsNewsExit(aUrl, aExitCode);
|
||||
}
|
||||
|
||||
msgSend->SetRunningRequest(nsnull);
|
||||
if (NS_FAILED(aExitCode))
|
||||
if (aExitCode != NS_ERROR_ABORT && !NS_IS_MSG_ERROR(aExitCode))
|
||||
aExitCode = NS_ERROR_POST_FAILED;
|
||||
|
||||
DeliverAsNewsExit(aUrl, aExitCode);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if (NS_FAILED(aExitCode))
|
||||
{
|
||||
switch (aExitCode)
|
||||
{
|
||||
case NS_ERROR_UNKNOWN_HOST:
|
||||
case NS_ERROR_UNKNOWN_PROXY_HOST:
|
||||
aExitCode = NS_ERROR_SMTP_SEND_FAILED_UNKNOWN_SERVER;
|
||||
break;
|
||||
case NS_ERROR_CONNECTION_REFUSED:
|
||||
case NS_ERROR_PROXY_CONNECTION_REFUSED:
|
||||
aExitCode = NS_ERROR_SMTP_SEND_FAILED_REFUSED;
|
||||
break;
|
||||
case NS_ERROR_NET_INTERRUPT:
|
||||
aExitCode = NS_ERROR_SMTP_SEND_FAILED_INTERRUPTED;
|
||||
break;
|
||||
case NS_ERROR_NET_TIMEOUT:
|
||||
case NS_ERROR_NET_RESET:
|
||||
aExitCode = NS_ERROR_SMTP_SEND_FAILED_TIMEOUT;
|
||||
break;
|
||||
case NS_ERROR_SMTP_PASSWORD_UNDEFINED:
|
||||
// nothing to do, just keep the code
|
||||
break;
|
||||
default:
|
||||
if (aExitCode != NS_ERROR_ABORT && !NS_IS_MSG_ERROR(aExitCode))
|
||||
aExitCode = NS_ERROR_SMTP_SEND_FAILED_UNKNOWN_REASON;
|
||||
break;
|
||||
}
|
||||
}
|
||||
DeliverAsMailExit(aUrl, aExitCode);
|
||||
}
|
||||
|
||||
return aExitCode;
|
||||
}
|
||||
|
||||
|
@ -3514,7 +3560,7 @@ nsMsgComposeAndSend::DeliverFileAsMail()
|
|||
NotifyListenerOnStopSending(nsnull, NS_ERROR_OUT_OF_MEMORY, nsnull, nsnull);
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
|
||||
PRBool collectOutgoingAddresses = PR_TRUE;
|
||||
nsCOMPtr<nsIPrefBranch> pPrefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID));
|
||||
if (pPrefBranch)
|
||||
|
@ -3603,14 +3649,10 @@ nsMsgComposeAndSend::DeliverFileAsMail()
|
|||
nsCOMPtr<nsISmtpService> smtpService(do_GetService(NS_SMTPSERVICE_CONTRACTID, &rv));
|
||||
if (NS_SUCCEEDED(rv) && smtpService)
|
||||
{
|
||||
nsMsgDeliveryListener * aListener = new nsMsgDeliveryListener(SendDeliveryCallback, nsMailDelivery, this);
|
||||
nsCOMPtr<nsIUrlListener> uriListener = do_QueryInterface(aListener);
|
||||
if (!uriListener)
|
||||
MsgDeliveryListener *deliveryListener = new MsgDeliveryListener(this, PR_FALSE);
|
||||
if (!deliveryListener)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
// Note: Don't do a SetMsgComposeAndSendObject since we are in the same thread, and
|
||||
// using callbacks for notification
|
||||
|
||||
// we used to get the prompt from the compose window and we'd pass that in
|
||||
// to the smtp protocol as the prompt to use. But when you send a message,
|
||||
// we dismiss the compose window.....so you are parenting off of a window that
|
||||
|
@ -3631,7 +3673,7 @@ nsMsgComposeAndSend::DeliverFileAsMail()
|
|||
msgStatus = do_QueryInterface(mStatusFeedback);
|
||||
|
||||
rv = smtpService->SendMailMessage(mTempFile, buf, mUserIdentity,
|
||||
mSmtpPassword.get(), uriListener, msgStatus,
|
||||
mSmtpPassword.get(), deliveryListener, msgStatus,
|
||||
callbacks, nsnull, getter_AddRefs(mRunningRequest));
|
||||
}
|
||||
|
||||
|
@ -3656,14 +3698,10 @@ nsMsgComposeAndSend::DeliverFileAsNews()
|
|||
|
||||
if (NS_SUCCEEDED(rv) && nntpService)
|
||||
{
|
||||
nsMsgDeliveryListener * aListener = new nsMsgDeliveryListener(SendDeliveryCallback, nsNewsDelivery, this);
|
||||
nsCOMPtr<nsIUrlListener> uriListener = do_QueryInterface(aListener);
|
||||
if (!uriListener)
|
||||
MsgDeliveryListener *deliveryListener = new MsgDeliveryListener(this, PR_TRUE);
|
||||
if (!deliveryListener)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
// Note: Don't do a SetMsgComposeAndSendObject since we are in the same thread, and
|
||||
// using callbacks for notification
|
||||
|
||||
// Tell the user we are posting the message!
|
||||
nsString msg;
|
||||
mComposeBundle->GetStringFromID(NS_MSG_POSTING_MESSAGE, getter_Copies(msg));
|
||||
|
@ -3681,7 +3719,7 @@ nsMsgComposeAndSend::DeliverFileAsNews()
|
|||
msgWindow = nsnull;
|
||||
|
||||
rv = nntpService->PostMessage(mTempFile, mCompFields->GetNewsgroups(), mAccountKey.get(),
|
||||
uriListener, msgWindow, nsnull);
|
||||
deliveryListener, msgWindow, nsnull);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
}
|
||||
|
||||
|
|
|
@ -182,7 +182,6 @@
|
|||
//
|
||||
class nsMsgSendPart;
|
||||
class nsMsgCopy;
|
||||
class nsMsgDeliveryListener;
|
||||
class nsIPrompt;
|
||||
class nsIInterfaceRequestor;
|
||||
|
||||
|
|
|
@ -44,7 +44,6 @@
|
|||
#include "nsIFile.h"
|
||||
#include "nsISmtpService.h"
|
||||
#include "nsIMsgMailNewsUrl.h"
|
||||
#include "nsMsgDeliveryListener.h"
|
||||
#include "nsIMsgIncomingServer.h"
|
||||
#include "nsICopyMessageListener.h"
|
||||
#include "nsIMsgMessageService.h"
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include "nsIMsgFolder.h"
|
||||
#include "nsIMsgSendListener.h"
|
||||
#include "nsIMsgSendLaterListener.h"
|
||||
#include "nsMsgDeliveryListener.h"
|
||||
#include "nsIMsgSendLater.h"
|
||||
#include "nsIMsgWindow.h"
|
||||
|
||||
|
@ -55,7 +54,6 @@
|
|||
// to listen for message send completion and eventually notify the caller
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
class nsMsgSendLater;
|
||||
class nsMsgDeliveryListener;
|
||||
|
||||
class SendOperationListener : public nsIMsgSendListener,
|
||||
public nsIMsgCopyServiceListener
|
||||
|
@ -127,8 +125,6 @@ private:
|
|||
nsIMsgSendLaterListener **mListenerArray;
|
||||
PRInt32 mListenerArrayCount;
|
||||
|
||||
nsMsgSendUnsentMessagesCallback mCompleteCallback;
|
||||
|
||||
nsCOMPtr<nsIMsgDBHdr> mMessage;
|
||||
|
||||
//
|
||||
|
|
Загрузка…
Ссылка в новой задаче