Bug 1413780 - Change permission name from canvas/extractData to canvas.
MozReview-Commit-ID: 40mesFLeRWU
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -6602,17 +6602,17 @@ var CanvasPermissionPromptHelper = {
if (gBrowser.selectedBrowser !== browser) {
// Must belong to some other window.
return;
}
let message = gNavigatorBundle.getFormattedString("canvas.siteprompt", [ uri.asciiHost ]);
function setCanvasPermission(aURI, aPerm, aPersistent) {
- Services.perms.add(aURI, "canvas/extractData", aPerm,
+ Services.perms.add(aURI, "canvas", aPerm,
aPersistent ? Ci.nsIPermissionManager.EXPIRE_NEVER
: Ci.nsIPermissionManager.EXPIRE_SESSION);
}
let mainAction = {
label: gNavigatorBundle.getString("canvas.allow"),
accessKey: gNavigatorBundle.getString("canvas.allow.accesskey"),
callback(state) {
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -810,17 +810,17 @@
<image data-permission-id="microphone" class="blocked-permission-icon microphone-icon" role="button"
tooltiptext="&urlbar.microphoneBlocked.tooltip;"/>
<image data-permission-id="screen" class="blocked-permission-icon screen-icon" role="button"
tooltiptext="&urlbar.screenBlocked.tooltip;"/>
<image data-permission-id="persistent-storage" class="blocked-permission-icon persistent-storage-icon" role="button"
tooltiptext="&urlbar.persistentStorageBlocked.tooltip;"/>
<image data-permission-id="popup" class="blocked-permission-icon popup-icon" role="button"
tooltiptext="&urlbar.popupBlocked.tooltip;"/>
- <image data-permission-id="canvas/extractData" class="blocked-permission-icon canvas/extractData-icon" role="button"
+ <image data-permission-id="canvas" class="blocked-permission-icon canvas-icon" role="button"
tooltiptext="&urlbar.canvasBlocked.tooltip;"/>
</box>
<box id="notification-popup-box"
hidden="true"
onmouseover="document.getElementById('identity-box').classList.add('no-hover');"
onmouseout="document.getElementById('identity-box').classList.remove('no-hover');"
align="center">
<image id="default-notification-icon" class="notification-anchor-icon" role="button"
--- a/browser/base/content/test/permissions/browser_canvas_fingerprinting_resistance.js
+++ b/browser/base/content/test/permissions/browser_canvas_fingerprinting_resistance.js
@@ -3,17 +3,17 @@
* required for canvas data extraction.
* This tests whether the site permission prompt for canvas data extraction
* works properly.
*/
"use strict";
const kUrl = "https://example.com/";
const kPrincipal = Services.scriptSecurityManager.createCodebasePrincipal(Services.io.newURI(kUrl), {});
-const kPermission = "canvas/extractData";
+const kPermission = "canvas";
function initTab() {
let contentWindow = content.wrappedJSObject;
let drawCanvas = (fillStyle, id) => {
let contentDocument = contentWindow.document;
let width = 64, height = 64;
let canvas = contentDocument.createElement("canvas");
--- a/browser/modules/SitePermissions.jsm
+++ b/browser/modules/SitePermissions.jsm
@@ -175,17 +175,17 @@ this.SitePermissions = {
// 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") &&
+ if ((permission.type == "canvas") &&
!Services.prefs.getBoolPref("privacy.resistFingerprinting")) {
continue;
}
let scope = this.SCOPE_PERSISTENT;
if (permission.expireType == Services.perms.EXPIRE_SESSION) {
scope = this.SCOPE_SESSION;
}
@@ -270,17 +270,17 @@ this.SitePermissions = {
*
* @return {Array<String>} an array of all permission IDs.
*/
listPermissions() {
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");
+ permissions = permissions.filter(permission => permission !== "canvas");
}
return permissions;
},
/**
* Returns an array of permission states to be exposed to the user for a
* permission with the given ID.
@@ -641,18 +641,17 @@ var gPermissionObject = {
"persistent-storage": {
exactHostMatch: true
},
"shortcuts": {
states: [ SitePermissions.ALLOW, SitePermissions.BLOCK ],
},
- "canvas/extractData": {
- labelID: "canvas"
+ "canvas": {
},
};
// Delete this entry while being pre-off
// or the persistent-storage permission would appear in Page info's Permission section
if (!Services.prefs.getBoolPref("browser.storageManager.enabled")) {
delete gPermissionObject["persistent-storage"];
}
--- a/browser/modules/test/unit/test_SitePermissions.js
+++ b/browser/modules/test/unit/test_SitePermissions.js
@@ -16,17 +16,17 @@ add_task(async function testPermissionsL
// The persistent-storage permission is still only pref-on on Nightly
// so we add it only when it's pref-on.
// Should remove this checking and add it as default after it is fully pref-on.
expectedPermissions.push("persistent-storage");
}
if (RESIST_FINGERPRINTING_ENABLED) {
// Canvas permission should be hidden unless privacy.resistFingerprinting
// is true.
- expectedPermissions.push("canvas/extractData");
+ expectedPermissions.push("canvas");
}
Assert.deepEqual(SitePermissions.listPermissions().sort(), expectedPermissions.sort(),
"Correct list of all permissions");
});
add_task(async function testGetAllByURI() {
// check that it returns an empty array on an invalid URI
// like a file URI, which doesn't support site permissions
@@ -112,17 +112,17 @@ add_task(async function testExactHostMat
// The persistent-storage permission is still only pref-on on Nightly
// so we add it only when it's pref-on.
// Should remove this checking and add it as default after it is fully pref-on.
exactHostMatched.push("persistent-storage");
}
if (RESIST_FINGERPRINTING_ENABLED) {
// Canvas permission should be hidden unless privacy.resistFingerprinting
// is true.
- exactHostMatched.push("canvas/extractData");
+ exactHostMatched.push("canvas");
}
let nonExactHostMatched = ["image", "cookie", "popup", "install", "shortcuts"];
let permissions = SitePermissions.listPermissions();
for (let permission of permissions) {
SitePermissions.set(uri, permission, SitePermissions.ALLOW);
if (exactHostMatched.includes(permission)) {
@@ -198,24 +198,24 @@ add_task(function* testDefaultPrefs() {
scope: SitePermissions.SCOPE_PERSISTENT,
});
});
add_task(async function testCanvasPermission() {
let resistFingerprinting = Services.prefs.getBoolPref("privacy.resistFingerprinting", false);
let uri = Services.io.newURI("https://example.com");
- SitePermissions.set(uri, "canvas/extractData", SitePermissions.ALLOW);
+ SitePermissions.set(uri, "canvas", SitePermissions.ALLOW);
// Canvas permission is hidden when privacy.resistFingerprinting is false.
Services.prefs.setBoolPref("privacy.resistFingerprinting", false);
- Assert.equal(SitePermissions.listPermissions().indexOf("canvas/extractData"), -1);
- Assert.equal(SitePermissions.getAllByURI(uri).filter(permission => permission.id === "canvas/extractData").length, 0);
+ Assert.equal(SitePermissions.listPermissions().indexOf("canvas"), -1);
+ Assert.equal(SitePermissions.getAllByURI(uri).filter(permission => permission.id === "canvas").length, 0);
// Canvas permission is visible when privacy.resistFingerprinting is true.
Services.prefs.setBoolPref("privacy.resistFingerprinting", true);
- Assert.notEqual(SitePermissions.listPermissions().indexOf("canvas/extractData"), -1);
- Assert.notEqual(SitePermissions.getAllByURI(uri).filter(permission => permission.id === "canvas/extractData").length, 0);
+ Assert.notEqual(SitePermissions.listPermissions().indexOf("canvas"), -1);
+ Assert.notEqual(SitePermissions.getAllByURI(uri).filter(permission => permission.id === "canvas").length, 0);
- SitePermissions.remove(uri, "canvas/extractData");
+ SitePermissions.remove(uri, "canvas");
Services.prefs.setBoolPref("privacy.resistFingerprinting", resistFingerprinting);
});
--- a/browser/themes/shared/notification-icons.inc.css
+++ b/browser/themes/shared/notification-icons.inc.css
@@ -110,21 +110,21 @@
}
.screen-icon.blocked-permission-icon {
list-style-image: url(chrome://browser/skin/notification-icons/screen-blocked.svg);
}
#canvas-notification-icon,
.popup-notification-icon[popupid="canvas-permissions-prompt"],
-.canvas\/extractData-icon {
+.canvas-icon {
list-style-image: url(chrome://browser/skin/notification-icons/canvas.svg);
}
-.canvas\/extractData-icon.blocked-permission-icon {
+.canvas-icon.blocked-permission-icon {
list-style-image: url(chrome://browser/skin/notification-icons/canvas-blocked.svg);
}
#webRTC-preview:not([hidden]) {
display: -moz-stack;
border-radius: 4px;
border: 1px solid GrayText;
overflow: hidden;
--- a/dom/canvas/CanvasUtils.cpp
+++ b/dom/canvas/CanvasUtils.cpp
@@ -31,17 +31,17 @@
#include "mozIThirdPartyUtil.h"
#include "nsContentUtils.h"
#include "nsUnicharUtils.h"
#include "nsPrintfCString.h"
#include "nsIConsoleService.h"
#include "jsapi.h"
#define TOPIC_CANVAS_PERMISSIONS_PROMPT "canvas-permissions-prompt"
-#define PERMISSION_CANVAS_EXTRACT_DATA "canvas/extractData"
+#define PERMISSION_CANVAS_EXTRACT_DATA "canvas"
using namespace mozilla::gfx;
namespace mozilla {
namespace CanvasUtils {
bool IsImageExtractionAllowed(nsIDocument *aDocument, JSContext *aCx)
{