Bug 1473631: Part 5 - Replace pref observers with callbacks in RFPService. r=njn

MozReview-Commit-ID: 6rzZNyY8cun

--HG--
extra : rebase_source : 651ba7e475548ab28a678662fbf287faf2dec0aa
This commit is contained in:
Kris Maglione 2018-07-05 13:49:22 -07:00
Родитель a16a23e56f
Коммит 9604944ae4
2 изменённых файлов: 38 добавлений и 45 удалений

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

@ -711,6 +711,14 @@ nsRFPService::GetSpoofedUserAgent(nsACString &userAgent)
return rv;
}
static const char* gCallbackPrefs[] = {
RESIST_FINGERPRINTING_PREF,
RFP_TIMER_PREF,
RFP_TIMER_VALUE_PREF,
RFP_JITTER_VALUE_PREF,
nullptr,
};
nsresult
nsRFPService::Init()
{
@ -729,20 +737,8 @@ nsRFPService::Init()
NS_ENSURE_SUCCESS(rv, rv);
#endif
nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
NS_ENSURE_TRUE(prefs, NS_ERROR_NOT_AVAILABLE);
rv = prefs->AddObserver(RESIST_FINGERPRINTING_PREF, this, false);
NS_ENSURE_SUCCESS(rv, rv);
rv = prefs->AddObserver(RFP_TIMER_PREF, this, false);
NS_ENSURE_SUCCESS(rv, rv);
rv = prefs->AddObserver(RFP_TIMER_VALUE_PREF, this, false);
NS_ENSURE_SUCCESS(rv, rv);
rv = prefs->AddObserver(RFP_JITTER_VALUE_PREF, this, false);
NS_ENSURE_SUCCESS(rv, rv);
Preferences::RegisterCallbacks(PREF_CHANGE_METHOD(nsRFPService::PrefChanged),
gCallbackPrefs, this);
Preferences::AddAtomicBoolVarCache(&sPrivacyTimerPrecisionReduction,
RFP_TIMER_PREF,
@ -855,16 +851,9 @@ nsRFPService::StartShutdown()
if (obs) {
obs->RemoveObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID);
nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
if (prefs) {
prefs->RemoveObserver(RESIST_FINGERPRINTING_PREF, this);
prefs->RemoveObserver(RFP_TIMER_PREF, this);
prefs->RemoveObserver(RFP_TIMER_VALUE_PREF, this);
prefs->RemoveObserver(RFP_JITTER_VALUE_PREF, this);
}
}
Preferences::UnregisterCallbacks(PREF_CHANGE_METHOD(nsRFPService::PrefChanged),
gCallbackPrefs, this);
}
/* static */
@ -1094,32 +1083,34 @@ nsRFPService::GetSpoofedKeyCode(const nsIDocument* aDoc,
return false;
}
void
nsRFPService::PrefChanged(const char* aPref)
{
nsDependentCString pref(aPref);
if (pref.EqualsLiteral(RFP_TIMER_PREF) ||
pref.EqualsLiteral(RFP_TIMER_VALUE_PREF) ||
pref.EqualsLiteral(RFP_JITTER_VALUE_PREF)) {
UpdateTimers();
}
else if (pref.EqualsLiteral(RESIST_FINGERPRINTING_PREF)) {
UpdateRFPPref();
#if defined(XP_WIN)
if (!XRE_IsE10sParentProcess()) {
// Windows does not follow POSIX. Updates to the TZ environment variable
// are not reflected immediately on that platform as they are on UNIX
// systems without this call.
_tzset();
}
#endif
}
}
NS_IMETHODIMP
nsRFPService::Observe(nsISupports* aObject, const char* aTopic,
const char16_t* aMessage)
{
if (!strcmp(NS_PREFBRANCH_PREFCHANGE_TOPIC_ID, aTopic)) {
NS_ConvertUTF16toUTF8 pref(aMessage);
if (pref.EqualsLiteral(RFP_TIMER_PREF) ||
pref.EqualsLiteral(RFP_TIMER_VALUE_PREF) ||
pref.EqualsLiteral(RFP_JITTER_VALUE_PREF)) {
UpdateTimers();
}
else if (pref.EqualsLiteral(RESIST_FINGERPRINTING_PREF)) {
UpdateRFPPref();
#if defined(XP_WIN)
if (!XRE_IsE10sParentProcess()) {
// Windows does not follow POSIX. Updates to the TZ environment variable
// are not reflected immediately on that platform as they are on UNIX
// systems without this call.
_tzset();
}
#endif
}
}
if (!strcmp(NS_XPCOM_SHUTDOWN_OBSERVER_ID, aTopic)) {
StartShutdown();
}

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

@ -263,6 +263,8 @@ private:
void UpdateRFPPref();
void StartShutdown();
void PrefChanged(const char* aPref);
static void MaybeCreateSpoofingKeyCodes(const KeyboardLangs aLang,
const KeyboardRegions aRegion);
static void MaybeCreateSpoofingKeyCodesForEnUS();