Bug 1413780 - Hide canvas permission from site information panel when privacy.resistFingerprinting is false.
MozReview-Commit-ID: JlCICwM4dVA
--- a/browser/modules/SitePermissions.jsm
+++ b/browser/modules/SitePermissions.jsm
@@ -173,16 +173,23 @@ this.SitePermissions = {
let permission = permissions.getNext();
// filter out unknown permissions
if (gPermissionObject[permission.type]) {
// XXX Bug 1303108 - Control Center should only show non-default permissions
if (permission.type == "install") {
continue;
}
+
+ // Hide canvas permission when privacy.resistFingerprinting is false.
+ if ((permission.type == "canvas/extractData") &&
+ !Services.prefs.getBoolPref("privacy.resistFingerprinting")) {
+ continue;
+ }
+
let scope = this.SCOPE_PERSISTENT;
if (permission.expireType == Services.perms.EXPIRE_SESSION) {
scope = this.SCOPE_SESSION;
}
result.push({
id: permission.type,
scope,
state: permission.capability,
@@ -259,17 +266,24 @@ this.SitePermissions = {
},
/**
* Gets an array of all permission IDs.
*
* @return {Array<String>} an array of all permission IDs.
*/
listPermissions() {
- return Object.keys(gPermissionObject);
+ 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/extractData");
+ }
+
+ return permissions;
},
/**
* Returns an array of permission states to be exposed to the user for a
* permission with the given ID.
*
* @param {string} permissionID
* The ID to get permission states for.