fune/browser/modules/test/browser_SitePermissions.js
Dão Gottwald e3ce2d647d Bug 1331172 - Current permission state should use the past tense. r=Paolo
MozReview-Commit-ID: 7XqHa0xrfsh

--HG--
extra : rebase_source : 244519d23c6e95847e304fbda24bdd6228fb6df1
2017-01-16 20:33:00 +01:00

80 lines
2.7 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
Cu.import("resource:///modules/SitePermissions.jsm", this);
// This asserts that SitePermissions.set can not save ALLOW permissions
// temporarily on a tab.
add_task(function* testTempAllowThrows() {
let uri = Services.io.newURI("https://example.com");
let id = "notifications";
yield BrowserTestUtils.withNewTab(uri.spec, function(browser) {
Assert.throws(function() {
SitePermissions.set(uri, id, SitePermissions.ALLOW, SitePermissions.SCOPE_TEMPORARY, browser);
}, "'Block' is the only permission we can save temporarily on a tab");
});
});
// This tests the SitePermissions.getAllPermissionDetailsForBrowser function.
add_task(function* testGetAllPermissionDetailsForBrowser() {
let uri = Services.io.newURI("https://example.com");
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, uri.spec);
SitePermissions.set(uri, "camera", SitePermissions.ALLOW);
SitePermissions.set(uri, "cookie", SitePermissions.ALLOW_COOKIES_FOR_SESSION);
SitePermissions.set(uri, "popup", SitePermissions.BLOCK);
SitePermissions.set(uri, "geo", SitePermissions.ALLOW, SitePermissions.SCOPE_SESSION);
let permissions = SitePermissions.getAllPermissionDetailsForBrowser(tab.linkedBrowser);
let camera = permissions.find(({id}) => id === "camera");
Assert.deepEqual(camera, {
id: "camera",
label: "Use the Camera",
state: SitePermissions.ALLOW,
scope: SitePermissions.SCOPE_PERSISTENT,
});
// Check that removed permissions (State.UNKNOWN) are skipped.
SitePermissions.remove(uri, "camera");
permissions = SitePermissions.getAllPermissionDetailsForBrowser(tab.linkedBrowser);
camera = permissions.find(({id}) => id === "camera");
Assert.equal(camera, undefined);
let cookie = permissions.find(({id}) => id === "cookie");
Assert.deepEqual(cookie, {
id: "cookie",
label: "Set Cookies",
state: SitePermissions.ALLOW_COOKIES_FOR_SESSION,
scope: SitePermissions.SCOPE_PERSISTENT,
});
let popup = permissions.find(({id}) => id === "popup");
Assert.deepEqual(popup, {
id: "popup",
label: "Open Pop-up Windows",
state: SitePermissions.BLOCK,
scope: SitePermissions.SCOPE_PERSISTENT,
});
let geo = permissions.find(({id}) => id === "geo");
Assert.deepEqual(geo, {
id: "geo",
label: "Access Your Location",
state: SitePermissions.ALLOW,
scope: SitePermissions.SCOPE_SESSION,
});
SitePermissions.remove(uri, "cookie");
SitePermissions.remove(uri, "popup");
SitePermissions.remove(uri, "geo");
yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
});