Bug 1521598 - Part 1: Create a lazy preference getter for privacy.resistFingerprinting in SitePermissions; r=johannh

Differential Revision: https://phabricator.services.mozilla.com/D17362

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Ehsan Akhgari 2019-01-23 15:57:09 +00:00
Родитель 2ed2cfee12
Коммит 4680510d84
1 изменённых файлов: 29 добавлений и 7 удалений

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

@ -220,6 +220,7 @@ var SitePermissions = {
SCOPE_POLICY: "{SitePermissions.SCOPE_POLICY}",
SCOPE_GLOBAL: "{SitePermissions.SCOPE_GLOBAL}",
_permissionsArray: null,
_defaultPrefBranch: Services.prefs.getBranch("permissions.default."),
/**
@ -250,8 +251,7 @@ var SitePermissions = {
}
// Hide canvas permission when privacy.resistFingerprinting is false.
if ((permission.type == "canvas") &&
!Services.prefs.getBoolPref("privacy.resistFingerprinting")) {
if ((permission.type == "canvas") && !this.resistFingerprinting) {
continue;
}
@ -348,14 +348,33 @@ var SitePermissions = {
* @return {Array<String>} an array of all permission IDs.
*/
listPermissions() {
let permissions = Object.keys(gPermissionObject);
if (this._permissionsArray === null) {
let permissions = Object.keys(gPermissionObject);
// Hide canvas permission when privacy.resistFingerprinting is false.
if (!Services.prefs.getBoolPref("privacy.resistFingerprinting")) {
permissions = permissions.filter(permission => permission !== "canvas");
// Hide canvas permission when privacy.resistFingerprinting is false.
if (!this.resistFingerprinting) {
permissions = permissions.filter(permission => permission !== "canvas");
}
this._permissionsArray = permissions;
}
return permissions;
return this._permissionsArray;
},
/**
* Called when the privacy.resistFingerprinting preference changes its value.
*
* @param {string} data
* The last argument passed to the preference change observer
* @param {string} previous
* The previous value of the preference
* @param {string} latest
* The latest value of the preference
*/
onResistFingerprintingChanged(data, previous, latest) {
// Ensure that listPermissions() will reconstruct its return value the next
// time it's called.
this._permissionsArray = null;
},
/**
@ -810,3 +829,6 @@ if (!Services.prefs.getBoolPref("dom.webmidi.enabled")) {
XPCOMUtils.defineLazyPreferenceGetter(SitePermissions, "temporaryPermissionExpireTime",
"privacy.temporary_permission_expire_time_ms", 3600 * 1000);
XPCOMUtils.defineLazyPreferenceGetter(SitePermissions, "resistFingerprinting",
"privacy.resistFingerprinting", false,
SitePermissions.onResistFingerprintingChanged.bind(SitePermissions));