diff --git a/xpinstall/src/nsInstallTrigger.cpp b/xpinstall/src/nsInstallTrigger.cpp index d175e703ed7f..8177ea8dae83 100644 --- a/xpinstall/src/nsInstallTrigger.cpp +++ b/xpinstall/src/nsInstallTrigger.cpp @@ -27,8 +27,10 @@ #include "nsISupports.h" #include "nsIScriptGlobalObject.h" -#include "pratom.h" -#include "prefapi.h" +#include "nsIPref.h" + +#include "nsRepository.h" +#include "nsIServiceManager.h" #include "nsSpecialSystemDirectory.h" @@ -37,6 +39,7 @@ static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID); static NS_DEFINE_IID(kIScriptObjectOwnerIID, NS_ISCRIPTOBJECTOWNER_IID); static NS_DEFINE_IID(kIInstallTrigger_IID, NS_IDOMINSTALLTRIGGERGLOBAL_IID); +static NS_DEFINE_IID(kIInstallTrigger_CID, NS_SoftwareUpdateInstallTrigger_CID); @@ -121,11 +124,36 @@ nsInstallTrigger::SetScriptObject(void *aScriptObject) return NS_OK; } +static NS_DEFINE_IID(kPrefsIID, NS_IPREF_IID); +static NS_DEFINE_IID(kPrefsCID, NS_PREF_CID); NS_IMETHODIMP nsInstallTrigger::UpdateEnabled(PRBool* aReturn) { - PREF_GetBoolPref( (const char*) AUTOUPDATE_ENABLE_PREF, aReturn); + nsIPref * prefs; + + nsresult rv = nsComponentManager::CreateInstance(kPrefsIID, + nsnull, + kPrefsCID, + (void**) &prefs); + + + if ( NS_SUCCEEDED(rv) ) + { + rv = prefs->GetBoolPref( (const char*) AUTOUPDATE_ENABLE_PREF, aReturn); + + if (NS_FAILED(rv)) + { + *aReturn = PR_FALSE; + } + + NS_RELEASE(prefs); + } + else + { + *aReturn = PR_FALSE; /* no prefs manager. set to false */ + } + return NS_OK; } @@ -260,101 +288,71 @@ nsInstallTrigger::CreateTempFileFromURL(const nsString& aURL, nsString& tempFile ///////////////////////////////////////////////////////////////////////// // ///////////////////////////////////////////////////////////////////////// -static PRInt32 gInstallTriggerInstanceCnt = 0; -static PRInt32 gInstallTriggerLock = 0; + + nsInstallTriggerFactory::nsInstallTriggerFactory(void) { - mRefCnt=0; - PR_AtomicIncrement(&gInstallTriggerInstanceCnt); + NS_INIT_REFCNT(); } nsInstallTriggerFactory::~nsInstallTriggerFactory(void) { - PR_AtomicDecrement(&gInstallTriggerInstanceCnt); + NS_ASSERTION(mRefCnt == 0, "non-zero refcnt at destruction"); } -NS_IMETHODIMP -nsInstallTriggerFactory::QueryInterface(REFNSIID aIID,void** aInstancePtr) +NS_IMETHODIMP +nsInstallTriggerFactory::QueryInterface(const nsIID &aIID, void **aResult) { - if (aInstancePtr == NULL) - { + if (! aResult) return NS_ERROR_NULL_POINTER; - } // Always NULL result, in case of failure - *aInstancePtr = NULL; + *aResult = nsnull; - if ( aIID.Equals(kISupportsIID) ) - { - *aInstancePtr = (void*) this; - } - else if ( aIID.Equals(kIFactoryIID) ) - { - *aInstancePtr = (void*) this; + if (aIID.Equals(kISupportsIID)) { + *aResult = NS_STATIC_CAST(nsISupports*, this); + AddRef(); + return NS_OK; + } else if (aIID.Equals(kIFactoryIID)) { + *aResult = NS_STATIC_CAST(nsIFactory*, this); + AddRef(); + return NS_OK; } - if (aInstancePtr == NULL) - { - return NS_ERROR_NO_INTERFACE; - } - - AddRef(); - return NS_OK; + return NS_NOINTERFACE; } - - -NS_IMETHODIMP_(nsrefcnt) -nsInstallTriggerFactory::AddRef(void) -{ - return ++mRefCnt; -} - - -NS_IMETHODIMP_(nsrefcnt) -nsInstallTriggerFactory::Release(void) -{ - if (--mRefCnt ==0) - { - delete this; - return 0; // Don't access mRefCnt after deleting! - } - - return mRefCnt; -} +NS_IMPL_ADDREF(nsInstallTriggerFactory); +NS_IMPL_RELEASE(nsInstallTriggerFactory); NS_IMETHODIMP nsInstallTriggerFactory::CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult) { - if (aResult == NULL) - { + if (! aResult) return NS_ERROR_NULL_POINTER; - } - *aResult = NULL; + *aResult = nsnull; + + nsresult rv; - /* do I have to use iSupports? */ nsInstallTrigger *inst = new nsInstallTrigger(); - - if (inst == NULL) + + if (! inst) return NS_ERROR_OUT_OF_MEMORY; - nsresult result = inst->QueryInterface(aIID, aResult); - - if (NS_FAILED(result)) - delete inst; - - return result; + if (NS_FAILED(rv = inst->QueryInterface(aIID, aResult))) + { + // We didn't get the right interface. + NS_ERROR("didn't support the interface you wanted"); + } + return rv; } + NS_IMETHODIMP nsInstallTriggerFactory::LockFactory(PRBool aLock) { - if (aLock) - PR_AtomicIncrement(&gInstallTriggerLock); - else - PR_AtomicDecrement(&gInstallTriggerLock); - + // Not implemented in simplest case. return NS_OK; } diff --git a/xpinstall/src/nsInstallVersion.cpp b/xpinstall/src/nsInstallVersion.cpp index e51e18e6624f..a66f5f365819 100644 --- a/xpinstall/src/nsInstallVersion.cpp +++ b/xpinstall/src/nsInstallVersion.cpp @@ -27,7 +27,6 @@ #include "nsISupports.h" #include "nsIScriptGlobalObject.h" -#include "pratom.h" #include "prprf.h" static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); @@ -334,69 +333,40 @@ nsInstallVersion::StringToVersionNumbers(const nsString& version, PRInt32 *aMajo ///////////////////////////////////////////////////////////////////////// // ///////////////////////////////////////////////////////////////////////// -static PRInt32 gInstallVersionInstanceCnt = 0; -static PRInt32 gInstallVersionLock = 0; nsInstallVersionFactory::nsInstallVersionFactory(void) { - mRefCnt=0; - PR_AtomicIncrement(&gInstallVersionInstanceCnt); + NS_INIT_REFCNT(); } nsInstallVersionFactory::~nsInstallVersionFactory(void) { - PR_AtomicDecrement(&gInstallVersionInstanceCnt); + NS_ASSERTION(mRefCnt == 0, "non-zero refcnt at destruction"); } -NS_IMETHODIMP -nsInstallVersionFactory::QueryInterface(REFNSIID aIID,void** aInstancePtr) +NS_IMETHODIMP +nsInstallVersionFactory::QueryInterface(const nsIID &aIID, void **aResult) { - if (aInstancePtr == NULL) - { + if (! aResult) return NS_ERROR_NULL_POINTER; - } // Always NULL result, in case of failure - *aInstancePtr = NULL; + *aResult = nsnull; - if ( aIID.Equals(kISupportsIID) ) - { - *aInstancePtr = (void*) this; + if (aIID.Equals(kISupportsIID)) { + *aResult = NS_STATIC_CAST(nsISupports*, this); + AddRef(); + return NS_OK; + } else if (aIID.Equals(kIFactoryIID)) { + *aResult = NS_STATIC_CAST(nsIFactory*, this); + AddRef(); + return NS_OK; } - else if ( aIID.Equals(kIFactoryIID) ) - { - *aInstancePtr = (void*) this; - } - - if (aInstancePtr == NULL) - { - return NS_ERROR_NO_INTERFACE; - } - - AddRef(); - return NS_OK; + return NS_NOINTERFACE; } - - -NS_IMETHODIMP_(nsrefcnt) -nsInstallVersionFactory::AddRef(void) -{ - return ++mRefCnt; -} - - -NS_IMETHODIMP_(nsrefcnt) -nsInstallVersionFactory::Release(void) -{ - if (--mRefCnt ==0) - { - delete this; - return 0; // Don't access mRefCnt after deleting! - } - - return mRefCnt; -} +NS_IMPL_ADDREF(nsInstallVersionFactory); +NS_IMPL_RELEASE(nsInstallVersionFactory); NS_IMETHODIMP nsInstallVersionFactory::CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult) @@ -425,10 +395,5 @@ nsInstallVersionFactory::CreateInstance(nsISupports *aOuter, REFNSIID aIID, void NS_IMETHODIMP nsInstallVersionFactory::LockFactory(PRBool aLock) { - if (aLock) - PR_AtomicIncrement(&gInstallVersionLock); - else - PR_AtomicDecrement(&gInstallVersionLock); - - return NS_OK; + return NS_OK; }