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:
nick.kreeger%park.edu 2007-08-25 01:24:23 +00:00
Родитель 34e29c661e
Коммит 9cb7b88ebd
10 изменённых файлов: 187 добавлений и 151 удалений

Просмотреть файл

@ -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;
//