From b85f2bc72c0ceb2da84fbb0dee2e0fdc5aa08737 Mon Sep 17 00:00:00 2001 From: "scott%scott-macgregor.org" Date: Sat, 28 Jul 2007 16:31:47 +0000 Subject: [PATCH] Bug #387709 --> make the addresss book datasource a cycle collector participant. This fixes a shut down leak of the address book data source. NPOTB for the firefox freeze. r=standard8 git-svn-id: svn://10.0.0.236/trunk@231130 18797224-902f-48f8-a5cc-f745e15eee43 --- .../addrbook/src/nsAbRDFDataSource.cpp | 369 +++++++--------- .../mailnews/addrbook/src/nsAbRDFDataSource.h | 61 +-- .../addrbook/src/nsDirectoryDataSource.cpp | 394 +++++++++--------- .../addrbook/src/nsDirectoryDataSource.h | 108 ++--- 4 files changed, 444 insertions(+), 488 deletions(-) diff --git a/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.cpp b/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.cpp index 200bf18282b..69714ae70c0 100644 --- a/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.cpp +++ b/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.cpp @@ -63,21 +63,18 @@ typedef struct _nsAbRDFNotification { nsIRDFResource *property; nsIRDFNode *object; } nsAbRDFNotification; - nsresult nsAbRDFDataSource::createNode(const PRUnichar *str, nsIRDFNode **node) { - *node = nsnull; - nsresult rv; - nsCOMPtr rdf(do_GetService("@mozilla.org/rdf/rdf-service;1", &rv)); - NS_ENSURE_SUCCESS(rv, rv); // always check this before proceeding - nsCOMPtr value; - rv = rdf->GetLiteral(str, getter_AddRefs(value)); - if (NS_SUCCEEDED(rv)) - { - NS_IF_ADDREF(*node = value); - } - return rv; + *node = nsnull; + nsresult rv; + nsCOMPtr rdf(do_GetService("@mozilla.org/rdf/rdf-service;1", &rv)); + NS_ENSURE_SUCCESS(rv, rv); // always check this before proceeding + nsCOMPtr value; + rv = rdf->GetLiteral(str, getter_AddRefs(value)); + if (NS_SUCCEEDED(rv)) + NS_IF_ADDREF(*node = value); + return rv; } nsresult nsAbRDFDataSource::createBlobNode(PRUint8 *value, PRUint32 &length, nsIRDFNode **node, nsIRDFService *rdfService) @@ -93,36 +90,30 @@ nsresult nsAbRDFDataSource::createBlobNode(PRUint8 *value, PRUint32 &length, nsI return rv; } -PRBool nsAbRDFDataSource::changeEnumFunc(nsISupports *aElement, void *aData) +PRBool nsAbRDFDataSource::changeEnumFunc(nsIRDFObserver *aObserver, void *aData) { nsAbRDFNotification* note = (nsAbRDFNotification *)aData; - nsIRDFObserver* observer = (nsIRDFObserver *)aElement; - - observer->OnChange(note->datasource, + aObserver->OnChange(note->datasource, note->subject, note->property, nsnull, note->object); return PR_TRUE; } -PRBool nsAbRDFDataSource::assertEnumFunc(nsISupports *aElement, void *aData) +PRBool nsAbRDFDataSource::assertEnumFunc(nsIRDFObserver *aObserver, void *aData) { nsAbRDFNotification *note = (nsAbRDFNotification *)aData; - nsIRDFObserver* observer = (nsIRDFObserver *)aElement; - - observer->OnAssert(note->datasource, + aObserver->OnAssert(note->datasource, note->subject, note->property, note->object); return PR_TRUE; } -PRBool nsAbRDFDataSource::unassertEnumFunc(nsISupports *aElement, void *aData) +PRBool nsAbRDFDataSource::unassertEnumFunc(nsIRDFObserver *aObserver, void *aData) { nsAbRDFNotification* note = (nsAbRDFNotification *)aData; - nsIRDFObserver* observer = (nsIRDFObserver *)aElement; - - observer->OnUnassert(note->datasource, + aObserver->OnUnassert(note->datasource, note->subject, note->property, note->object); @@ -130,166 +121,162 @@ PRBool nsAbRDFDataSource::unassertEnumFunc(nsISupports *aElement, void *aData) } nsresult nsAbRDFDataSource::CreateProxyObserver (nsIRDFObserver* observer, - nsIRDFObserver** proxyObserver) + nsIRDFObserver** proxyObserver) { - nsresult rv; + nsresult rv; - // Proxy the observer on the UI thread - /* - * TODO - * Currenly using NS_PROXY_ASYNC, however - * this can flood the event queue if - * rate of events on the observer is - * greater that the time to process the - * events. - * This causes the UI to pause. - */ - rv = NS_GetProxyForObject ( + // Proxy the observer on the UI thread + /* + * TODO + * Currenly using NS_PROXY_ASYNC, however + * this can flood the event queue if + * rate of events on the observer is + * greater that the time to process the + * events. + * This causes the UI to pause. + */ + rv = NS_GetProxyForObject ( NS_PROXY_TO_MAIN_THREAD, - NS_GET_IID(nsIRDFObserver), - observer, - NS_PROXY_ASYNC | NS_PROXY_ALWAYS, - (void** )proxyObserver); + NS_GET_IID(nsIRDFObserver), + observer, + NS_PROXY_ASYNC | NS_PROXY_ALWAYS, + (void** )proxyObserver); - return rv; + return rv; } nsresult nsAbRDFDataSource::CreateProxyObservers () { - nsresult rv = NS_OK; + nsresult rv = NS_OK; - PRUint32 nObservers; - mObservers->Count (&nObservers); + PRUint32 nObservers = mObservers.Count(); - if (!mProxyObservers) - { - rv = NS_NewISupportsArray(getter_AddRefs(mProxyObservers)); - NS_ENSURE_SUCCESS(rv, rv); - } + PRUint32 nProxyObservers = mProxyObservers.Count(); - PRUint32 nProxyObservers; - mProxyObservers->Count (&nProxyObservers); + /* + * For all the outstanding observers that + * have not been proxied + */ + for (PRUint32 i = nProxyObservers; i < nObservers; i++) + { + nsIRDFObserver * observer = mObservers.ObjectAt(i); - /* - * For all the outstanding observers that - * have not been proxied - */ - for (PRUint32 i = nProxyObservers; i < nObservers; i++) - { - nsCOMPtr supports; - rv = mObservers->GetElementAt (i, getter_AddRefs (supports)); - NS_ENSURE_SUCCESS(rv, rv); + // Create the proxy + nsCOMPtr proxyObserver; + rv = CreateProxyObserver (observer, getter_AddRefs (proxyObserver)); + NS_ENSURE_SUCCESS(rv, rv); + mProxyObservers.AppendObject(proxyObserver); + } - nsCOMPtr observer (do_QueryInterface (supports, &rv)); - NS_ENSURE_SUCCESS(rv, rv); - - // Create the proxy - nsCOMPtr proxyObserver; - rv = CreateProxyObserver (observer, getter_AddRefs (proxyObserver)); - NS_ENSURE_SUCCESS(rv, rv); - - mProxyObservers->AppendElement(proxyObserver); - } - - return rv; + return rv; } nsresult nsAbRDFDataSource::NotifyObservers(nsIRDFResource *subject, - nsIRDFResource *property, - nsIRDFNode *object, - PRBool assert, - PRBool change) + nsIRDFResource *property, + nsIRDFNode *object, + PRBool assert, + PRBool change) { - NS_ASSERTION(!(change && assert), + NS_ASSERTION(!(change && assert), "Can't change and assert at the same time!\n"); - if(!mLock) - { - NS_ERROR("Error in AutoLock resource in nsAbRDFDataSource::NotifyObservers()"); - return NS_ERROR_OUT_OF_MEMORY; - } + if(!mLock) + { + NS_ERROR("Error in AutoLock resource in nsAbRDFDataSource::NotifyObservers()"); + return NS_ERROR_OUT_OF_MEMORY; + } - nsresult rv; + nsresult rv; - nsAutoLock lockGuard (mLock); + nsAutoLock lockGuard (mLock); - if (!mObservers) - return NS_OK; + /* + * TODO + * Is the main thread always guaranteed to be + * the UI thread? + * + * Note that this also binds the data source + * to the UI which is supposedly the only + * place where it is used, but what about + * RDF datasources that are not UI specific + * but are used in the UI? + */ + nsCOMArray * observers; + if (NS_IsMainThread()) + { + /* + * Since this is the UI Thread use the + * observers list directly for performance + */ + observers = &mObservers; + } + else + { + /* + * This is a different thread to the UI + * thread need to use proxies to the + * observers + * + * Create the proxies + */ + rv = CreateProxyObservers(); + NS_ENSURE_SUCCESS (rv, rv); + observers = &mProxyObservers; + } + nsAbRDFNotification note = { this, subject, property, object }; + if (change) + observers->EnumerateForwards(changeEnumFunc, ¬e); + else if (assert) + observers->EnumerateForwards(assertEnumFunc, ¬e); + else + observers->EnumerateForwards(unassertEnumFunc, ¬e); - /* - * TODO - * Is the main thread always guaranteed to be - * the UI thread? - * - * Note that this also binds the data source - * to the UI which is supposedly the only - * place where it is used, but what about - * RDF datasources that are not UI specific - * but are used in the UI? - */ - nsCOMPtr observers; - if (NS_IsMainThread()) - { - /* - * Since this is the UI Thread use the - * observers list directly for performance - */ - observers = mObservers; - } - else - { - /* - * This is a different thread to the UI - * thread need to use proxies to the - * observers - * - * Create the proxies - */ - rv = CreateProxyObservers (); - NS_ENSURE_SUCCESS (rv, rv); - - observers = mProxyObservers; - } - - nsAbRDFNotification note = { this, subject, property, object }; - if (change) - observers->EnumerateForwards(changeEnumFunc, ¬e); - else if (assert) - observers->EnumerateForwards(assertEnumFunc, ¬e); - else - observers->EnumerateForwards(unassertEnumFunc, ¬e); - - return NS_OK; + return NS_OK; } nsresult nsAbRDFDataSource::NotifyPropertyChanged(nsIRDFResource *resource, - nsIRDFResource *propertyResource, - const PRUnichar *oldValue, - const PRUnichar *newValue) + nsIRDFResource *propertyResource, + const PRUnichar *oldValue, + const PRUnichar *newValue) { - nsCOMPtr newValueNode; - createNode(newValue, getter_AddRefs(newValueNode)); - NotifyObservers(resource, propertyResource, newValueNode, PR_FALSE, PR_TRUE); - return NS_OK; + nsCOMPtr newValueNode; + createNode(newValue, getter_AddRefs(newValueNode)); + NotifyObservers(resource, propertyResource, newValueNode, PR_FALSE, PR_TRUE); + return NS_OK; } nsAbRDFDataSource::nsAbRDFDataSource(): - mObservers(nsnull), - mProxyObservers(nsnull), mLock(nsnull) { - mLock = PR_NewLock (); + mLock = PR_NewLock (); } nsAbRDFDataSource::~nsAbRDFDataSource (void) { - if(mLock) - PR_DestroyLock (mLock); + if(mLock) + PR_DestroyLock (mLock); } -NS_IMPL_THREADSAFE_ISUPPORTS1(nsAbRDFDataSource, nsIRDFDataSource) +NS_IMPL_CYCLE_COLLECTION_CLASS(nsAbRDFDataSource) +NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsAbRDFDataSource) + NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMARRAY(mObservers) + NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMARRAY(mProxyObservers) +NS_IMPL_CYCLE_COLLECTION_UNLINK_END +NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsAbRDFDataSource) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMARRAY(mObservers) + NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMARRAY(mProxyObservers) +NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END + +NS_IMPL_CYCLE_COLLECTING_ADDREF_AMBIGUOUS(nsAbRDFDataSource, nsIRDFDataSource) +NS_IMPL_CYCLE_COLLECTING_RELEASE_AMBIGUOUS(nsAbRDFDataSource, nsIRDFDataSource) + +NS_INTERFACE_MAP_BEGIN(nsAbRDFDataSource) + NS_INTERFACE_MAP_ENTRY(nsIRDFDataSource) + NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIRDFDataSource) + NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(nsAbRDFDataSource) +NS_INTERFACE_MAP_END // nsIRDFDataSource methods NS_IMETHODIMP nsAbRDFDataSource::GetURI(char* *uri) @@ -324,7 +311,7 @@ NS_IMETHODIMP nsAbRDFDataSource::GetSources(nsIRDFResource* property, } NS_IMETHODIMP nsAbRDFDataSource::GetTargets(nsIRDFResource* source, - nsIRDFResource* property, + nsIRDFResource* property, PRBool tv, nsISimpleEnumerator** targets) { @@ -332,7 +319,7 @@ NS_IMETHODIMP nsAbRDFDataSource::GetTargets(nsIRDFResource* source, } NS_IMETHODIMP nsAbRDFDataSource::Assert(nsIRDFResource* source, - nsIRDFResource* property, + nsIRDFResource* property, nsIRDFNode* target, PRBool tv) { @@ -375,85 +362,53 @@ NS_IMETHODIMP nsAbRDFDataSource::HasAssertion(nsIRDFResource* source, NS_IMETHODIMP nsAbRDFDataSource::AddObserver(nsIRDFObserver* observer) { - if(!mLock) - { - NS_ERROR("Error in AutoLock resource in nsAbRDFDataSource::AddObservers()"); - return NS_ERROR_OUT_OF_MEMORY; - } + if(!mLock) + { + NS_ERROR("Error in AutoLock resource in nsAbRDFDataSource::AddObservers()"); + return NS_ERROR_OUT_OF_MEMORY; + } - nsresult rv; + nsresult rv; - // Lock the whole method - nsAutoLock lockGuard (mLock); + // Lock the whole method + nsAutoLock lockGuard (mLock); - if (!mObservers) - { - rv = NS_NewISupportsArray(getter_AddRefs(mObservers)); - NS_ENSURE_SUCCESS(rv, rv); - } + // Do not add if already present + if (mObservers.IndexOf(observer) >= 0) + return NS_OK; - // Do not add if already present - PRInt32 i; - mObservers->GetIndexOf (observer, &i); - if (i >= 0) - return NS_OK; - - mObservers->AppendElement(observer); - - /* - * If the proxy observers has been created - * then do the work here to avoid unecessary - * delay when performing the notify from a - * different thread - */ - if (mProxyObservers) - { - nsCOMPtr proxyObserver; - rv = CreateProxyObserver (observer, - getter_AddRefs(proxyObserver)); - NS_ENSURE_SUCCESS(rv, rv); - - mProxyObservers->AppendElement (proxyObserver); - } - - return NS_OK; + mObservers.AppendObject(observer); + return NS_OK; } NS_IMETHODIMP nsAbRDFDataSource::RemoveObserver(nsIRDFObserver* observer) { - if(!mLock) - { - NS_ERROR("Error in AutoLock resource in nsAbRDFDataSource::RemoveObservers()"); - return NS_ERROR_OUT_OF_MEMORY; - } + if(!mLock) + { + NS_ERROR("Error in AutoLock resource in nsAbRDFDataSource::RemoveObservers()"); + return NS_ERROR_OUT_OF_MEMORY; + } - // Lock the whole method - nsAutoLock lockGuard (mLock); + // Lock the whole method + nsAutoLock lockGuard (mLock); + PRInt32 index = mObservers.IndexOf(observer); + if (index >= 0) + { + mObservers.RemoveObjectAt(index); + mProxyObservers.RemoveObjectAt(index); + } - if (!mObservers) - return NS_OK; - - PRInt32 i; - mObservers->GetIndexOf (observer, &i); - if (i >= 0) - { - mObservers->RemoveElementAt(i); - - if (mProxyObservers) - mProxyObservers->RemoveElementAt(i); - } - - return NS_OK; + return NS_OK; } -NS_IMETHODIMP +NS_IMETHODIMP nsAbRDFDataSource::HasArcIn(nsIRDFNode *aNode, nsIRDFResource *aArc, PRBool *result) { *result = PR_FALSE; return NS_OK; } -NS_IMETHODIMP +NS_IMETHODIMP nsAbRDFDataSource::HasArcOut(nsIRDFResource *aSource, nsIRDFResource *aArc, PRBool *result) { *result = PR_FALSE; diff --git a/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.h b/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.h index 7ed91cc2577..88a5f79a3e8 100644 --- a/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.h +++ b/mozilla/mailnews/addrbook/src/nsAbRDFDataSource.h @@ -38,12 +38,12 @@ #ifndef nsAbRDFDataSource_h__ #define nsAbRDFDataSource_h__ - #include "nsCOMPtr.h" #include "nsIRDFDataSource.h" #include "nsIRDFService.h" -#include "nsISupportsArray.h" +#include "nsCOMArray.h" #include "nsString.h" +#include "nsCycleCollectionParticipant.h" /** * The addressbook data source. @@ -51,45 +51,46 @@ class nsAbRDFDataSource : public nsIRDFDataSource { public: - NS_DECL_ISUPPORTS - NS_DECL_NSIRDFDATASOURCE + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsAbRDFDataSource, + nsIRDFDataSource) + NS_DECL_NSIRDFDATASOURCE + + nsAbRDFDataSource(); + virtual ~nsAbRDFDataSource(); - nsAbRDFDataSource(); - virtual ~nsAbRDFDataSource(); - protected: - nsresult createNode(const PRUnichar *str, nsIRDFNode **node); + nsresult createNode(const PRUnichar *str, nsIRDFNode **node); nsresult createBlobNode(PRUint8 *value, PRUint32 &length, nsIRDFNode **node, nsIRDFService *rdfService); - nsresult NotifyPropertyChanged( - nsIRDFResource *resource, - nsIRDFResource *propertyResource, - const PRUnichar *oldValue, - const PRUnichar *newValue); + nsresult NotifyPropertyChanged( + nsIRDFResource *resource, + nsIRDFResource *propertyResource, + const PRUnichar *oldValue, + const PRUnichar *newValue); - nsresult NotifyObservers( - nsIRDFResource *subject, - nsIRDFResource *property, - nsIRDFNode *object, - PRBool assert, - PRBool change); + nsresult NotifyObservers( + nsIRDFResource *subject, + nsIRDFResource *property, + nsIRDFNode *object, + PRBool assert, + PRBool change); - nsresult CreateProxyObservers (); + nsresult CreateProxyObservers (); - nsresult CreateProxyObserver ( - nsIRDFObserver* observer, - nsIRDFObserver** proxyObserver); + nsresult CreateProxyObserver ( + nsIRDFObserver* observer, + nsIRDFObserver** proxyObserver); - static PRBool assertEnumFunc(nsISupports *aElement, void *aData); - static PRBool unassertEnumFunc(nsISupports *aElement, void *aData); - static PRBool changeEnumFunc(nsISupports *aElement, void *aData); + static PRBool assertEnumFunc(nsIRDFObserver *aObserver, void *aData); + static PRBool unassertEnumFunc(nsIRDFObserver *aObserver, void *aData); + static PRBool changeEnumFunc(nsIRDFObserver *aObserver, void *aData); private: - nsCOMPtr mObservers; - nsCOMPtr mProxyObservers; - - PRLock* mLock; + nsCOMArray mObservers; + nsCOMArray mProxyObservers; + PRLock* mLock; }; #endif diff --git a/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.cpp b/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.cpp index 40fb9e8ac59..d95df51708e 100644 --- a/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.cpp +++ b/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.cpp @@ -59,7 +59,7 @@ #include "prmem.h" #include "nsServiceManagerUtils.h" #include "nsCRT.h" - + #define NC_RDF_DIRNAME "http://home.netscape.com/NC-rdf#DirName" #define NC_RDF_DIRURI "http://home.netscape.com/NC-rdf#DirUri" #define NC_RDF_ISMAILLIST "http://home.netscape.com/NC-rdf#IsMailList" @@ -95,7 +95,7 @@ nsresult nsAbDirectoryDataSource::Cleanup() rv = abSession->RemoveAddressBookListener(this); NS_ENSURE_SUCCESS(rv,rv); - + return NS_OK; } @@ -103,10 +103,10 @@ NS_IMETHODIMP nsAbDirectoryDataSource::Observe(nsISupports *aSubject, const char *aTopic, const PRUnichar *someData) { if (!strcmp(aTopic,"profile-do-change")) { - /* the nsDirPrefs code caches all the directories that it got + /* the nsDirPrefs code caches all the directories that it got * from the first profiles prefs.js * When we profile switch, we need to force it to shut down. - * we'll re-load all the directories from the second profiles prefs.js + * we'll re-load all the directories from the second profiles prefs.js * that happens in nsAbBSDirectory::GetChildNodes() * when we call DIR_GetDirectories() */ @@ -124,20 +124,20 @@ nsresult nsAbDirectoryDataSource::Init() { nsresult rv; - nsCOMPtr abSession = - do_GetService(NS_ADDRBOOKSESSION_CONTRACTID, &rv); + nsCOMPtr abSession = + do_GetService(NS_ADDRBOOKSESSION_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv,rv); - + // this listener cares about all events rv = abSession->AddAddressBookListener(this, nsIAddrBookSession::all); NS_ENSURE_SUCCESS(rv,rv); nsCOMPtr rdf = do_GetService("@mozilla.org/rdf/rdf-service;1", &rv); NS_ENSURE_SUCCESS(rv,rv); - + rv = rdf->RegisterDataSource(this, PR_FALSE); NS_ENSURE_SUCCESS(rv,rv); - + rv = rdf->GetResource(NS_LITERAL_CSTRING(NC_RDF_CHILD), getter_AddRefs(kNC_Child)); NS_ENSURE_SUCCESS(rv,rv); @@ -162,7 +162,7 @@ nsAbDirectoryDataSource::Init() rv = rdf->GetResource(NS_LITERAL_CSTRING(NC_RDF_DIRTREENAMESORT), getter_AddRefs(kNC_DirTreeNameSort)); NS_ENSURE_SUCCESS(rv,rv); rv = rdf->GetResource(NS_LITERAL_CSTRING(NC_RDF_DELETE), - getter_AddRefs(kNC_Delete)); + getter_AddRefs(kNC_Delete)); NS_ENSURE_SUCCESS(rv,rv); rv = rdf->GetResource(NS_LITERAL_CSTRING(NC_RDF_DELETECARDS), getter_AddRefs(kNC_DeleteCards)); @@ -178,14 +178,14 @@ nsAbDirectoryDataSource::Init() nsCOMPtr observerService = do_GetService("@mozilla.org/observer-service;1", &rv); NS_ENSURE_SUCCESS(rv,rv); - // since the observer (this) supports weak ref, + // since the observer (this) supports weak ref, // and we call AddObserver() with PR_TRUE for ownsWeak // we don't need to remove our observer from the from the observer service rv = observerService->AddObserver(this, "profile-do-change", PR_TRUE); NS_ENSURE_SUCCESS(rv,rv); rv = observerService->AddObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID, PR_TRUE); NS_ENSURE_SUCCESS(rv,rv); - + return NS_OK; } @@ -220,13 +220,13 @@ NS_IMETHODIMP nsAbDirectoryDataSource::GetTarget(nsIRDFResource* source, NS_IMETHODIMP nsAbDirectoryDataSource::GetTargets(nsIRDFResource* source, - nsIRDFResource* property, + nsIRDFResource* property, PRBool tv, nsISimpleEnumerator** targets) { nsresult rv = NS_RDF_NO_VALUE; NS_ENSURE_ARG_POINTER(targets); - + nsCOMPtr directory(do_QueryInterface(source, &rv)); if (NS_SUCCEEDED(rv) && directory) { @@ -250,17 +250,17 @@ NS_IMETHODIMP nsAbDirectoryDataSource::GetTargets(nsIRDFResource* source, } NS_IMETHODIMP nsAbDirectoryDataSource::Assert(nsIRDFResource* source, - nsIRDFResource* property, + nsIRDFResource* property, nsIRDFNode* target, PRBool tv) { - nsresult rv; - nsCOMPtr directory(do_QueryInterface(source, &rv)); - //We don't handle tv = PR_FALSE at the moment. - if(NS_SUCCEEDED(rv) && tv) - return DoDirectoryAssert(directory, property, target); - else - return NS_ERROR_FAILURE; + nsresult rv; + nsCOMPtr directory(do_QueryInterface(source, &rv)); + //We don't handle tv = PR_FALSE at the moment. + if(NS_SUCCEEDED(rv) && tv) + return DoDirectoryAssert(directory, property, target); + else + return NS_ERROR_FAILURE; } NS_IMETHODIMP nsAbDirectoryDataSource::HasAssertion(nsIRDFResource* source, @@ -269,16 +269,16 @@ NS_IMETHODIMP nsAbDirectoryDataSource::HasAssertion(nsIRDFResource* source, PRBool tv, PRBool* hasAssertion) { - nsresult rv; - nsCOMPtr directory(do_QueryInterface(source, &rv)); - if(NS_SUCCEEDED(rv)) - return DoDirectoryHasAssertion(directory, property, target, tv, hasAssertion); - else - *hasAssertion = PR_FALSE; - return NS_OK; + nsresult rv; + nsCOMPtr directory(do_QueryInterface(source, &rv)); + if(NS_SUCCEEDED(rv)) + return DoDirectoryHasAssertion(directory, property, target, tv, hasAssertion); + else + *hasAssertion = PR_FALSE; + return NS_OK; } -NS_IMETHODIMP +NS_IMETHODIMP nsAbDirectoryDataSource::HasArcOut(nsIRDFResource *aSource, nsIRDFResource *aArc, PRBool *result) { nsresult rv; @@ -326,7 +326,7 @@ nsAbDirectoryDataSource::getDirectoryArcLabelsOut(nsIAbDirectory *directory, nsresult rv; rv = NS_NewISupportsArray(arcs); NS_ENSURE_SUCCESS(rv, rv); - + (*arcs)->AppendElement(kNC_DirName); (*arcs)->AppendElement(kNC_Child); (*arcs)->AppendElement(kNC_DirUri); @@ -351,7 +351,7 @@ nsAbDirectoryDataSource::IsCommandEnabled(nsISupportsArray/**/* PRUint32 i, cnt; rv = aSources->Count(&cnt); for (i = 0; i < cnt; i++) { - directory = do_QueryElementAt(aSources, i, &rv); + directory = do_QueryElementAt(aSources, i, &rv); if (NS_SUCCEEDED(rv)) { // we don't care about the arguments -- directory commands are always enabled if (!((aCommand == kNC_Delete) || (aCommand == kNC_DeleteCards))) { @@ -369,86 +369,86 @@ nsAbDirectoryDataSource::DoCommand(nsISupportsArray/**/* aSource nsIRDFResource* aCommand, nsISupportsArray/**/* aArguments) { - PRUint32 i, cnt; - nsresult rv = aSources->Count(&cnt); - NS_ENSURE_SUCCESS(rv, rv); + PRUint32 i, cnt; + nsresult rv = aSources->Count(&cnt); + NS_ENSURE_SUCCESS(rv, rv); - if ((aCommand == kNC_Delete)) - rv = DoDeleteFromDirectory(aSources, aArguments); + if ((aCommand == kNC_Delete)) + rv = DoDeleteFromDirectory(aSources, aArguments); else { for (i = 0; i < cnt; i++) { nsCOMPtr directory = do_QueryElementAt(aSources, i, &rv); if (NS_SUCCEEDED(rv)) { NS_ASSERTION(aCommand == kNC_DeleteCards, "unknown command"); - if ((aCommand == kNC_DeleteCards)) + if ((aCommand == kNC_DeleteCards)) rv = DoDeleteCardsFromDirectory(directory, aArguments); } } } - //for the moment return NS_OK, because failure stops entire DoCommand process. - return NS_OK; + //for the moment return NS_OK, because failure stops entire DoCommand process. + return NS_OK; } NS_IMETHODIMP nsAbDirectoryDataSource::OnItemAdded(nsISupports *parentDirectory, nsISupports *item) { - nsresult rv; - nsCOMPtr directory; - nsCOMPtr parentResource; + nsresult rv; + nsCOMPtr directory; + nsCOMPtr parentResource; - if(NS_SUCCEEDED(parentDirectory->QueryInterface(NS_GET_IID(nsIRDFResource), getter_AddRefs(parentResource)))) - { - //If we are adding a directory - if (NS_SUCCEEDED(item->QueryInterface(NS_GET_IID(nsIAbDirectory), getter_AddRefs(directory)))) - { - nsCOMPtr itemNode(do_QueryInterface(item, &rv)); - if(NS_SUCCEEDED(rv)) - { - //Notify a directory was added. - NotifyObservers(parentResource, kNC_Child, itemNode, PR_TRUE, PR_FALSE); - } - } - } + if(NS_SUCCEEDED(parentDirectory->QueryInterface(NS_GET_IID(nsIRDFResource), getter_AddRefs(parentResource)))) + { + //If we are adding a directory + if (NS_SUCCEEDED(item->QueryInterface(NS_GET_IID(nsIAbDirectory), getter_AddRefs(directory)))) + { + nsCOMPtr itemNode(do_QueryInterface(item, &rv)); + if(NS_SUCCEEDED(rv)) + { + //Notify a directory was added. + NotifyObservers(parentResource, kNC_Child, itemNode, PR_TRUE, PR_FALSE); + } + } + } - return NS_OK; + return NS_OK; } NS_IMETHODIMP nsAbDirectoryDataSource::OnItemRemoved(nsISupports *parentDirectory, nsISupports *item) { - nsresult rv; - nsCOMPtr directory; - nsCOMPtr parentResource; + nsresult rv; + nsCOMPtr directory; + nsCOMPtr parentResource; - if(NS_SUCCEEDED(parentDirectory->QueryInterface(NS_GET_IID(nsIRDFResource), getter_AddRefs(parentResource)))) - { - //If we are removing a directory - if (NS_SUCCEEDED(item->QueryInterface(NS_GET_IID(nsIAbDirectory), getter_AddRefs(directory)))) - { - nsCOMPtr itemNode(do_QueryInterface(item, &rv)); - if(NS_SUCCEEDED(rv)) - { - //Notify a directory was deleted. - NotifyObservers(parentResource, kNC_Child, itemNode, PR_FALSE, PR_FALSE); - } - } - } - return NS_OK; + if(NS_SUCCEEDED(parentDirectory->QueryInterface(NS_GET_IID(nsIRDFResource), getter_AddRefs(parentResource)))) + { + //If we are removing a directory + if (NS_SUCCEEDED(item->QueryInterface(NS_GET_IID(nsIAbDirectory), getter_AddRefs(directory)))) + { + nsCOMPtr itemNode(do_QueryInterface(item, &rv)); + if(NS_SUCCEEDED(rv)) + { + //Notify a directory was deleted. + NotifyObservers(parentResource, kNC_Child, itemNode, PR_FALSE, PR_FALSE); + } + } + } + return NS_OK; } NS_IMETHODIMP nsAbDirectoryDataSource::OnItemPropertyChanged(nsISupports *item, const char *property, - const PRUnichar *oldValue, const PRUnichar *newValue) + const PRUnichar *oldValue, const PRUnichar *newValue) { - nsresult rv; - nsCOMPtr resource(do_QueryInterface(item, &rv)); + nsresult rv; + nsCOMPtr resource(do_QueryInterface(item, &rv)); - if(NS_SUCCEEDED(rv)) - { - if(PL_strcmp("DirName", property) == 0) - { - NotifyPropertyChanged(resource, kNC_DirName, oldValue, newValue); - } - } - return NS_OK; + if(NS_SUCCEEDED(rv)) + { + if(PL_strcmp("DirName", property) == 0) + { + NotifyPropertyChanged(resource, kNC_DirName, oldValue, newValue); + } + } + return NS_OK; } nsresult nsAbDirectoryDataSource::createDirectoryNode(nsIAbDirectory* directory, @@ -456,21 +456,21 @@ nsresult nsAbDirectoryDataSource::createDirectoryNode(nsIAbDirectory* directory, nsIRDFNode** target) { nsresult rv = NS_RDF_NO_VALUE; - + if ((kNC_DirName == property)) - rv = createDirectoryNameNode(directory, target); + rv = createDirectoryNameNode(directory, target); else if ((kNC_DirUri == property)) - rv = createDirectoryUriNode(directory, target); + rv = createDirectoryUriNode(directory, target); else if ((kNC_Child == property)) - rv = createDirectoryChildNode(directory, target); + rv = createDirectoryChildNode(directory, target); else if ((kNC_IsMailList == property)) - rv = createDirectoryIsMailListNode(directory, target); + rv = createDirectoryIsMailListNode(directory, target); else if ((kNC_IsRemote == property)) - rv = createDirectoryIsRemoteNode(directory, target); + rv = createDirectoryIsRemoteNode(directory, target); else if ((kNC_IsSecure == property)) - rv = createDirectoryIsSecureNode(directory, target); + rv = createDirectoryIsSecureNode(directory, target); else if ((kNC_IsWriteable == property)) - rv = createDirectoryIsWriteableNode(directory, target); + rv = createDirectoryIsWriteableNode(directory, target); else if ((kNC_DirTreeNameSort == property)) rv = createDirectoryTreeNameSortNode(directory, target); else if ((kNC_SupportsMailingLists == property)) @@ -509,27 +509,27 @@ nsresult nsAbDirectoryDataSource::createDirectoryChildNode(nsIAbDirectory *directory, nsIRDFNode **target) { - nsCOMPtr pAddressLists; - directory->GetAddressLists(getter_AddRefs(pAddressLists)); + nsCOMPtr pAddressLists; + directory->GetAddressLists(getter_AddRefs(pAddressLists)); - if (pAddressLists) - { - PRUint32 total = 0; - pAddressLists->Count(&total); + if (pAddressLists) + { + PRUint32 total = 0; + pAddressLists->Count(&total); - if (total) - { - PRBool isMailList = PR_FALSE; - directory->GetIsMailList(&isMailList); - if (!isMailList) + if (total) + { + PRBool isMailList = PR_FALSE; + directory->GetIsMailList(&isMailList); + if (!isMailList) { - // fetch the last element + // fetch the last element nsCOMPtr mailList = do_QueryElementAt(pAddressLists, total - 1); NS_IF_ADDREF(*target = mailList); - } + } } // if total } // if pAddressLists - + return (*target ? NS_OK : NS_RDF_NO_VALUE); } @@ -540,7 +540,7 @@ nsAbDirectoryDataSource::createDirectoryIsRemoteNode(nsIAbDirectory* directory, PRBool isRemote; nsresult rv = directory->GetIsRemote(&isRemote); NS_ENSURE_SUCCESS(rv, rv); - + NS_IF_ADDREF(*target = (isRemote ? kTrueLiteral : kFalseLiteral)); return NS_OK; } @@ -552,7 +552,7 @@ nsAbDirectoryDataSource::createDirectoryIsSecureNode(nsIAbDirectory* directory, PRBool IsSecure; nsresult rv = directory->GetIsSecure(&IsSecure); NS_ENSURE_SUCCESS(rv, rv); - + NS_IF_ADDREF(*target = (IsSecure ? kTrueLiteral : kFalseLiteral)); return NS_OK; } @@ -564,7 +564,7 @@ nsAbDirectoryDataSource::createDirectoryIsWriteableNode(nsIAbDirectory* director PRBool isWriteable; nsresult rv = directory->GetOperations(&isWriteable); NS_ENSURE_SUCCESS(rv, rv); - + NS_IF_ADDREF(*target = ((isWriteable & nsIAbDirectory::opWrite) ? kTrueLiteral : kFalseLiteral)); return NS_OK; } @@ -576,7 +576,7 @@ nsAbDirectoryDataSource::createDirectoryIsMailListNode(nsIAbDirectory* directory PRBool isMailList; nsresult rv = directory->GetIsMailList(&isMailList); NS_ENSURE_SUCCESS(rv, rv); - + NS_IF_ADDREF(*target = (isMailList ? kTrueLiteral : kFalseLiteral)); return NS_OK; } @@ -598,7 +598,7 @@ nsAbDirectoryDataSource::createDirectoryTreeNameSortNode(nsIAbDirectory* directo { nsString name; nsresult rv = directory->GetDirName(name); - NS_ENSURE_SUCCESS(rv, rv); + NS_ENSURE_SUCCESS(rv, rv); /* sort addressbooks in this order - Personal Addressbook, Collected Addresses, MDB, LDAP - * by prefixing address book names with numbers and using the xul sort service. @@ -654,7 +654,7 @@ nsAbDirectoryDataSource::createDirectoryTreeNameSortNode(nsIAbDirectory* directo else if (strcmp(uri, kCollectedAddressbookUri) == 0) sortString.AppendInt(1); // Collected addrbook else - sortString.AppendInt(2); // Normal addrbook + sortString.AppendInt(2); // Normal addrbook } else if (dirType == LDAPDirectory) sortString.AppendInt(3); // LDAP addrbook @@ -687,14 +687,14 @@ nsresult nsAbDirectoryDataSource::CreateCollationKey(const nsString &aSource, P nsresult rv; if (!mCollationKeyGenerator) { - nsCOMPtr localeSvc = do_GetService(NS_LOCALESERVICE_CONTRACTID,&rv); + nsCOMPtr localeSvc = do_GetService(NS_LOCALESERVICE_CONTRACTID,&rv); NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr locale; + nsCOMPtr locale; rv = localeSvc->GetApplicationLocale(getter_AddRefs(locale)); NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr factory = do_CreateInstance(NS_COLLATIONFACTORY_CONTRACTID, &rv); + nsCOMPtr factory = do_CreateInstance(NS_COLLATIONFACTORY_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); rv = factory->CreateCollation(locale, getter_AddRefs(mCollationKeyGenerator)); @@ -706,119 +706,119 @@ nsresult nsAbDirectoryDataSource::CreateCollationKey(const nsString &aSource, P nsresult nsAbDirectoryDataSource::DoDeleteFromDirectory(nsISupportsArray *parentDirs, nsISupportsArray *delDirs) { - PRUint32 item, itemCount; - nsresult rv = parentDirs->Count(&itemCount); - NS_ENSURE_SUCCESS(rv, rv); + PRUint32 item, itemCount; + nsresult rv = parentDirs->Count(&itemCount); + NS_ENSURE_SUCCESS(rv, rv); - for (item = 0; item < itemCount; item++) - { - nsCOMPtr parent = do_QueryElementAt(parentDirs, item, &rv); - if (NS_SUCCEEDED(rv)) - { - nsCOMPtr deletedDir(do_QueryElementAt(delDirs, item)); - if(deletedDir) - { - rv = parent->DeleteDirectory(deletedDir); - } - } - } - return rv; + for (item = 0; item < itemCount; item++) + { + nsCOMPtr parent = do_QueryElementAt(parentDirs, item, &rv); + if (NS_SUCCEEDED(rv)) + { + nsCOMPtr deletedDir(do_QueryElementAt(delDirs, item)); + if(deletedDir) + { + rv = parent->DeleteDirectory(deletedDir); + } + } + } + return rv; } nsresult nsAbDirectoryDataSource::DoDeleteCardsFromDirectory(nsIAbDirectory *directory, nsISupportsArray *arguments) { - nsresult rv = NS_OK; - PRUint32 itemCount; - rv = arguments->Count(&itemCount); - NS_ENSURE_SUCCESS(rv, rv); - - nsCOMPtr cardArray; - NS_NewISupportsArray(getter_AddRefs(cardArray)); + nsresult rv = NS_OK; + PRUint32 itemCount; + rv = arguments->Count(&itemCount); + NS_ENSURE_SUCCESS(rv, rv); - //Split up deleted items into different type arrays to be passed to the folder - //for deletion. - PRUint32 item; - for(item = 0; item < itemCount; item++) - { + nsCOMPtr cardArray; + NS_NewISupportsArray(getter_AddRefs(cardArray)); + + //Split up deleted items into different type arrays to be passed to the folder + //for deletion. + PRUint32 item; + for(item = 0; item < itemCount; item++) + { nsCOMPtr deletedCard(do_QueryElementAt(arguments, item)); - if (deletedCard) - { + if (deletedCard) + { rv = cardArray->AppendElement(deletedCard); NS_ENSURE_SUCCESS(rv, rv); - } - } - PRUint32 cnt; - rv = cardArray->Count(&cnt); - NS_ENSURE_SUCCESS(rv, rv); - if (cnt > 0) - rv = directory->DeleteCards(cardArray); - return rv; + } + } + PRUint32 cnt; + rv = cardArray->Count(&cnt); + NS_ENSURE_SUCCESS(rv, rv); + if (cnt > 0) + rv = directory->DeleteCards(cardArray); + return rv; } nsresult nsAbDirectoryDataSource::DoDirectoryAssert(nsIAbDirectory *directory, nsIRDFResource *property, nsIRDFNode *target) { - nsresult rv = NS_ERROR_FAILURE; - return rv; + nsresult rv = NS_ERROR_FAILURE; + return rv; } nsresult nsAbDirectoryDataSource::DoDirectoryHasAssertion(nsIAbDirectory *directory, nsIRDFResource *property, nsIRDFNode *target, - PRBool tv, PRBool *hasAssertion) + PRBool tv, PRBool *hasAssertion) { - nsresult rv = NS_OK; - if (!hasAssertion) - return NS_ERROR_NULL_POINTER; + nsresult rv = NS_OK; + if (!hasAssertion) + return NS_ERROR_NULL_POINTER; - //We're not keeping track of negative assertions on directory. - if (!tv) - { - *hasAssertion = PR_FALSE; - return NS_OK; - } + //We're not keeping track of negative assertions on directory. + if (!tv) + { + *hasAssertion = PR_FALSE; + return NS_OK; + } if ((kNC_Child == property)) - { - nsCOMPtr newDirectory(do_QueryInterface(target, &rv)); - if(NS_SUCCEEDED(rv)) - rv = directory->HasDirectory(newDirectory, hasAssertion); - } - else if ((kNC_IsMailList == property) || (kNC_IsRemote == property) || + { + nsCOMPtr newDirectory(do_QueryInterface(target, &rv)); + if(NS_SUCCEEDED(rv)) + rv = directory->HasDirectory(newDirectory, hasAssertion); + } + else if ((kNC_IsMailList == property) || (kNC_IsRemote == property) || (kNC_IsSecure == property) || (kNC_IsWriteable == property) || (kNC_SupportsMailingLists == property)) - { - nsCOMPtr dirResource(do_QueryInterface(directory, &rv)); - NS_ENSURE_SUCCESS(rv, rv); - rv = GetTargetHasAssertion(this, dirResource, property, tv, target, hasAssertion); - } - else - *hasAssertion = PR_FALSE; + { + nsCOMPtr dirResource(do_QueryInterface(directory, &rv)); + NS_ENSURE_SUCCESS(rv, rv); + rv = GetTargetHasAssertion(this, dirResource, property, tv, target, hasAssertion); + } + else + *hasAssertion = PR_FALSE; - return rv; + return rv; } nsresult nsAbDirectoryDataSource::GetTargetHasAssertion(nsIRDFDataSource *dataSource, nsIRDFResource* dirResource, - nsIRDFResource *property,PRBool tv, nsIRDFNode *target,PRBool* hasAssertion) + nsIRDFResource *property,PRBool tv, nsIRDFNode *target,PRBool* hasAssertion) { - nsresult rv; - if(!hasAssertion) - return NS_ERROR_NULL_POINTER; + nsresult rv; + if(!hasAssertion) + return NS_ERROR_NULL_POINTER; - nsCOMPtr currentTarget; + nsCOMPtr currentTarget; - rv = dataSource->GetTarget(dirResource, property,tv, getter_AddRefs(currentTarget)); - if(NS_SUCCEEDED(rv)) - { - nsCOMPtr value1(do_QueryInterface(target)); - nsCOMPtr value2(do_QueryInterface(currentTarget)); - if(value1 && value2) - //If the two values are equal then it has this assertion - *hasAssertion = (value1 == value2); - } - else - rv = NS_NOINTERFACE; + rv = dataSource->GetTarget(dirResource, property,tv, getter_AddRefs(currentTarget)); + if(NS_SUCCEEDED(rv)) + { + nsCOMPtr value1(do_QueryInterface(target)); + nsCOMPtr value2(do_QueryInterface(currentTarget)); + if(value1 && value2) + //If the two values are equal then it has this assertion + *hasAssertion = (value1 == value2); + } + else + rv = NS_NOINTERFACE; - return rv; + return rv; } diff --git a/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.h b/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.h index bc4b75f6c73..06c817b3f7e 100644 --- a/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.h +++ b/mozilla/mailnews/addrbook/src/nsDirectoryDataSource.h @@ -54,97 +54,97 @@ * The addressbook data source. */ class nsAbDirectoryDataSource : public nsAbRDFDataSource, - public nsIAbListener, public nsIObserver, public nsSupportsWeakReference + public nsIAbListener, public nsIObserver, public nsSupportsWeakReference { private: - PRBool mInitialized; + PRBool mInitialized; public: - NS_DECL_ISUPPORTS_INHERITED + NS_DECL_ISUPPORTS_INHERITED NS_DECL_NSIABLISTENER NS_DECL_NSIOBSERVER - nsAbDirectoryDataSource(void); - virtual ~nsAbDirectoryDataSource (void); - virtual nsresult Init(); + nsAbDirectoryDataSource(void); + virtual ~nsAbDirectoryDataSource (void); + virtual nsresult Init(); - // nsIRDFDataSource methods - NS_IMETHOD GetURI(char* *uri); + // nsIRDFDataSource methods + NS_IMETHOD GetURI(char* *uri); - NS_IMETHOD GetTarget(nsIRDFResource* source, - nsIRDFResource* property, - PRBool tv, - nsIRDFNode** target); + NS_IMETHOD GetTarget(nsIRDFResource* source, + nsIRDFResource* property, + PRBool tv, + nsIRDFNode** target); - NS_IMETHOD GetTargets(nsIRDFResource* source, - nsIRDFResource* property, - PRBool tv, - nsISimpleEnumerator** targets); + NS_IMETHOD GetTargets(nsIRDFResource* source, + nsIRDFResource* property, + PRBool tv, + nsISimpleEnumerator** targets); - NS_IMETHOD Assert(nsIRDFResource* source, - nsIRDFResource* property, - nsIRDFNode* target, - PRBool tv); + NS_IMETHOD Assert(nsIRDFResource* source, + nsIRDFResource* property, + nsIRDFNode* target, + PRBool tv); - NS_IMETHOD HasAssertion(nsIRDFResource* source, - nsIRDFResource* property, - nsIRDFNode* target, - PRBool tv, - PRBool* hasAssertion); + NS_IMETHOD HasAssertion(nsIRDFResource* source, + nsIRDFResource* property, + nsIRDFNode* target, + PRBool tv, + PRBool* hasAssertion); - NS_IMETHOD HasArcOut(nsIRDFResource *aSource, nsIRDFResource *aArc, PRBool *result); + NS_IMETHOD HasArcOut(nsIRDFResource *aSource, nsIRDFResource *aArc, PRBool *result); - NS_IMETHOD ArcLabelsOut(nsIRDFResource* source, - nsISimpleEnumerator** labels); + NS_IMETHOD ArcLabelsOut(nsIRDFResource* source, + nsISimpleEnumerator** labels); - NS_IMETHOD IsCommandEnabled(nsISupportsArray/**/* aSources, - nsIRDFResource* aCommand, - nsISupportsArray/**/* aArguments, - PRBool* aResult); + NS_IMETHOD IsCommandEnabled(nsISupportsArray/**/* aSources, + nsIRDFResource* aCommand, + nsISupportsArray/**/* aArguments, + PRBool* aResult); - NS_IMETHOD DoCommand(nsISupportsArray/**/* aSources, - nsIRDFResource* aCommand, - nsISupportsArray/**/* aArguments); + NS_IMETHOD DoCommand(nsISupportsArray/**/* aSources, + nsIRDFResource* aCommand, + nsISupportsArray/**/* aArguments); protected: - nsresult createDirectoryNode(nsIAbDirectory* directory, nsIRDFResource* property, + nsresult createDirectoryNode(nsIAbDirectory* directory, nsIRDFResource* property, nsIRDFNode** target); - nsresult createDirectoryNameNode(nsIAbDirectory *directory, + nsresult createDirectoryNameNode(nsIAbDirectory *directory, nsIRDFNode **target); - nsresult createDirectoryUriNode(nsIAbDirectory *directory, + nsresult createDirectoryUriNode(nsIAbDirectory *directory, nsIRDFNode **target); - nsresult createDirectoryChildNode(nsIAbDirectory *directory, + nsresult createDirectoryChildNode(nsIAbDirectory *directory, nsIRDFNode **target); - nsresult createDirectoryIsMailListNode(nsIAbDirectory *directory, + nsresult createDirectoryIsMailListNode(nsIAbDirectory *directory, nsIRDFNode **target); nsresult createDirectoryIsRemoteNode(nsIAbDirectory *directory, nsIRDFNode **target); nsresult createDirectoryIsSecureNode(nsIAbDirectory *directory, nsIRDFNode **target); - nsresult createDirectoryIsWriteableNode(nsIAbDirectory *directory, + nsresult createDirectoryIsWriteableNode(nsIAbDirectory *directory, nsIRDFNode **target); nsresult createDirectorySupportsMailingListsNode(nsIAbDirectory* directory, nsIRDFNode **target); nsresult createDirectoryTreeNameSortNode(nsIAbDirectory *directory, nsIRDFNode **target); - nsresult getDirectoryArcLabelsOut(nsIAbDirectory *directory, - nsISupportsArray **arcs); + nsresult getDirectoryArcLabelsOut(nsIAbDirectory *directory, + nsISupportsArray **arcs); - nsresult DoDeleteFromDirectory(nsISupportsArray *parentDirs, - nsISupportsArray *delDirs); - nsresult DoDeleteCardsFromDirectory(nsIAbDirectory *directory, - nsISupportsArray *delDirs); + nsresult DoDeleteFromDirectory(nsISupportsArray *parentDirs, + nsISupportsArray *delDirs); + nsresult DoDeleteCardsFromDirectory(nsIAbDirectory *directory, + nsISupportsArray *delDirs); - nsresult DoDirectoryAssert(nsIAbDirectory *directory, - nsIRDFResource *property, nsIRDFNode *target); - nsresult DoDirectoryHasAssertion(nsIAbDirectory *directory, - nsIRDFResource *property, nsIRDFNode *target, - PRBool tv, PRBool *hasAssertion); + nsresult DoDirectoryAssert(nsIAbDirectory *directory, + nsIRDFResource *property, nsIRDFNode *target); + nsresult DoDirectoryHasAssertion(nsIAbDirectory *directory, + nsIRDFResource *property, nsIRDFNode *target, + PRBool tv, PRBool *hasAssertion); - nsresult GetTargetHasAssertion(nsIRDFDataSource *dataSource, nsIRDFResource* dirResource, - nsIRDFResource *property,PRBool tv, nsIRDFNode *target,PRBool* hasAssertion); + nsresult GetTargetHasAssertion(nsIRDFDataSource *dataSource, nsIRDFResource* dirResource, + nsIRDFResource *property,PRBool tv, nsIRDFNode *target,PRBool* hasAssertion); nsresult CreateCollationKey(const nsString &aSource, PRUint8 **aKey, PRUint32 *aLength); nsCOMPtr kNC_Child;