Bug 659913 part.2 Implement AddObservers and RemoveObservers r=roc

This commit is contained in:
Masayuki Nakano 2011-05-29 08:39:27 +09:00
parent 5e271dcc08
commit 8e93a5852c
2 changed files with 47 additions and 0 deletions

View File

@ -193,6 +193,17 @@ public:
static nsresult AddWeakObserver(nsIObserver* aObserver, const char* aPref);
static nsresult RemoveObserver(nsIObserver* aObserver, const char* aPref);
/**
* Adds/Removes two or more observers for the root pref branch.
* Pass to aPrefs an array of const char* whose last item is NULL.
*/
static nsresult AddStrongObservers(nsIObserver* aObserver,
const char** aPrefs);
static nsresult AddWeakObservers(nsIObserver* aObserver,
const char** aPrefs);
static nsresult RemoveObservers(nsIObserver* aObserver,
const char** aPrefs);
protected:
nsresult NotifyServiceObservers(const char *aSubject);
nsresult UseDefaultPrefFile();

View File

@ -1197,4 +1197,40 @@ Preferences::RemoveObserver(nsIObserver* aObserver,
return sPreferences->mRootBranch->RemoveObserver(aPref, aObserver);
}
// static
nsresult
Preferences::AddStrongObservers(nsIObserver* aObserver,
const char** aPrefs)
{
for (PRUint32 i = 0; aPrefs[i]; i++) {
nsresult rv = AddStrongObserver(aObserver, aPrefs[i]);
NS_ENSURE_SUCCESS(rv, rv);
}
return NS_OK;
}
// static
nsresult
Preferences::AddWeakObservers(nsIObserver* aObserver,
const char** aPrefs)
{
for (PRUint32 i = 0; aPrefs[i]; i++) {
nsresult rv = AddWeakObserver(aObserver, aPrefs[i]);
NS_ENSURE_SUCCESS(rv, rv);
}
return NS_OK;
}
// static
nsresult
Preferences::RemoveObservers(nsIObserver* aObserver,
const char** aPrefs)
{
for (PRUint32 i = 0; aPrefs[i]; i++) {
nsresult rv = RemoveObserver(aObserver, aPrefs[i]);
NS_ENSURE_SUCCESS(rv, rv);
}
return NS_OK;
}
} // namespace mozilla