From 203e19b10b3b3da8474af037655f75851b7d4f54 Mon Sep 17 00:00:00 2001 From: "bugzilla%standard8.plus.com" Date: Fri, 22 Feb 2008 17:23:58 +0000 Subject: [PATCH] Bug 419038 Replace nsISupportsArray usage for nsMsgCompose State Listeners. r/sr=Neil git-svn-id: svn://10.0.0.236/trunk@246311 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/mailnews/compose/src/nsMsgCompose.cpp | 92 +++++++------------ mozilla/mailnews/compose/src/nsMsgCompose.h | 4 +- 2 files changed, 34 insertions(+), 62 deletions(-) diff --git a/mozilla/mailnews/compose/src/nsMsgCompose.cpp b/mozilla/mailnews/compose/src/nsMsgCompose.cpp index 808833ec17f..dafcaca5fce 100644 --- a/mozilla/mailnews/compose/src/nsMsgCompose.cpp +++ b/mozilla/mailnews/compose/src/nsMsgCompose.cpp @@ -868,44 +868,24 @@ nsresult nsMsgCompose::SetDocumentCharset(const char *charset) return NS_OK; } -nsresult nsMsgCompose::RegisterStateListener(nsIMsgComposeStateListener *stateListener) +NS_IMETHODIMP +nsMsgCompose::RegisterStateListener(nsIMsgComposeStateListener *aStateListener) { - nsresult rv = NS_OK; + NS_ENSURE_ARG_POINTER(aStateListener); - if (!stateListener) - return NS_ERROR_NULL_POINTER; - - if (!mStateListeners) - { - rv = NS_NewISupportsArray(getter_AddRefs(mStateListeners)); - if (NS_FAILED(rv)) return rv; - } - nsCOMPtr iSupports = do_QueryInterface(stateListener, &rv); - if (NS_FAILED(rv)) return rv; - - // note that this return value is really a PRBool, so be sure to use - // NS_SUCCEEDED or NS_FAILED to check it. - return mStateListeners->AppendElement(iSupports); + return mStateListeners.AppendElement(aStateListener) ? NS_OK : NS_ERROR_FAILURE; } -nsresult nsMsgCompose::UnregisterStateListener(nsIMsgComposeStateListener *stateListener) +NS_IMETHODIMP +nsMsgCompose::UnregisterStateListener(nsIMsgComposeStateListener *aStateListener) { - if (!stateListener) - return NS_ERROR_NULL_POINTER; + NS_ENSURE_ARG_POINTER(aStateListener); - nsresult rv = NS_OK; + PRInt32 index = mStateListeners.IndexOf(aStateListener); + if (index == -1) + return NS_ERROR_FAILURE; - // otherwise, see if it exists in our list - if (!mStateListeners) - return (nsresult)PR_FALSE; // yeah, this sucks, but I'm emulating the behaviour of - // nsISupportsArray::RemoveElement() - - nsCOMPtr iSupports = do_QueryInterface(stateListener, &rv); - if (NS_FAILED(rv)) return rv; - - // note that this return value is really a PRBool, so be sure to use - // NS_SUCCEEDED or NS_FAILED to check it. - return mStateListeners->RemoveElement(iSupports); + return mStateListeners.RemoveElement(aStateListener) ? NS_OK : NS_ERROR_FAILURE; } // Added to allow easier use of the nsIMsgSendListener @@ -4162,42 +4142,34 @@ nsresult nsMsgCompose::NotifyStateListeners(PRInt32 aNotificationType, nsresult if (aNotificationType == nsIMsgComposeNotificationType::SaveInFolderDone) ResetUrisForEmbeddedObjects(); - if (!mStateListeners) - return NS_OK; // maybe there just aren't any. + nsTObserverArray >::ForwardIterator iter(mStateListeners); + nsCOMPtr thisListener; - PRUint32 numListeners; - nsresult rv = mStateListeners->Count(&numListeners); - if (NS_FAILED(rv)) return rv; - - PRUint32 i; - for (i = 0; i < numListeners;i++) + while (iter.HasMore()) { - nsCOMPtr thisListener = - do_QueryElementAt(mStateListeners, i); - if (thisListener) + thisListener = iter.GetNext(); + + switch (aNotificationType) { - switch (aNotificationType) - { - case nsIMsgComposeNotificationType::ComposeFieldsReady: - thisListener->NotifyComposeFieldsReady(); - break; + case nsIMsgComposeNotificationType::ComposeFieldsReady: + thisListener->NotifyComposeFieldsReady(); + break; - case nsIMsgComposeNotificationType::ComposeProcessDone: - thisListener->ComposeProcessDone(aResult); - break; + case nsIMsgComposeNotificationType::ComposeProcessDone: + thisListener->ComposeProcessDone(aResult); + break; - case nsIMsgComposeNotificationType::SaveInFolderDone: - thisListener->SaveInFolderDone(m_folderName.get()); - break; + case nsIMsgComposeNotificationType::SaveInFolderDone: + thisListener->SaveInFolderDone(m_folderName.get()); + break; - case nsIMsgComposeNotificationType::ComposeBodyReady: - thisListener->NotifyComposeBodyReady(); - break; + case nsIMsgComposeNotificationType::ComposeBodyReady: + thisListener->NotifyComposeBodyReady(); + break; - default: - NS_NOTREACHED("Unknown notification"); - break; - } + default: + NS_NOTREACHED("Unknown notification"); + break; } } diff --git a/mozilla/mailnews/compose/src/nsMsgCompose.h b/mozilla/mailnews/compose/src/nsMsgCompose.h index 150015cd5ce..fd324000ce7 100644 --- a/mozilla/mailnews/compose/src/nsMsgCompose.h +++ b/mozilla/mailnews/compose/src/nsMsgCompose.h @@ -153,7 +153,6 @@ private: nsCOMPtr mQuote; PRBool mQuotingToFollow; // Quoting indicator MSG_ComposeType mType; // Message type - nsCOMPtr mStateListeners; // contents are nsISupports PRBool mCharsetOverride; PRBool mDeleteDraft; nsMsgDispositionState mDraftDisposition; @@ -161,7 +160,8 @@ private: nsCString mSmtpPassword; - nsTObserverArray > mExternalSendListeners; + nsTObserverArray > mStateListeners; + nsTObserverArray > mExternalSendListeners; PRBool mInsertingQuotedContent;