fune/browser/modules/test/browser_SitePermissions_tab_urls.js
Johann Hofmann 95370d69a3 Bug 1206232 - Add temporary permission states to SitePermissions.jsm. r=jdm,Paolo
MozReview-Commit-ID: zQVeEHhIax

--HG--
extra : rebase_source : bebcd31cfbd638c51ff21c7e2b62bcc536b026da
2016-09-22 23:09:30 +02:00

78 lines
2.8 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 tests the key used to store the URI -> permission map on a tab.
add_task(function* testTemporaryPermissionTabURLs() {
// Prevent showing a dialog for https://name:password@example.com
SpecialPowers.pushPrefEnv({set: [
["network.http.phishy-userpass-length", 2048],
]});
// This usually takes about 60 seconds on 32bit Linux debug,
// due to the combinatory nature of the test that is hard to fix.
requestLongerTimeout(2);
let same = [ "https://example.com", "https://example.com/sub/path", "https://example.com:443" ].map(Services.io.newURI);
let different = [ "https://example.com", "https://name:password@example.com", "https://test1.example.com", "http://example.com", "http://example.org" ].map(Services.io.newURI);
let id = "microphone";
yield BrowserTestUtils.withNewTab("about:blank", function*(browser) {
for (let uri of same) {
let loaded = BrowserTestUtils.browserLoaded(browser, false, uri.spec);
browser.loadURI(uri.spec);
yield loaded;
SitePermissions.set(uri, id, SitePermissions.BLOCK, SitePermissions.SCOPE_TEMPORARY, browser);
for (let uri2 of same) {
let loaded2 = BrowserTestUtils.browserLoaded(browser, false, uri2.spec);
browser.loadURI(uri2.spec);
yield loaded2;
Assert.deepEqual(SitePermissions.get(uri2, id, browser), {
state: SitePermissions.BLOCK,
scope: SitePermissions.SCOPE_TEMPORARY,
}, `${uri.spec} should share tab permissions with ${uri2.spec}`);
}
SitePermissions.clearTemporaryPermissions(browser);
}
for (let uri of different) {
let loaded = BrowserTestUtils.browserLoaded(browser, false, uri.spec);
browser.loadURI(uri.spec);
yield loaded;
SitePermissions.set(uri, id, SitePermissions.BLOCK, SitePermissions.SCOPE_TEMPORARY, browser);
Assert.deepEqual(SitePermissions.get(uri, id, browser), {
state: SitePermissions.BLOCK,
scope: SitePermissions.SCOPE_TEMPORARY,
});
for (let uri2 of different) {
loaded = BrowserTestUtils.browserLoaded(browser, false, uri2.spec);
browser.loadURI(uri2.spec);
yield loaded;
if (uri2 != uri) {
Assert.deepEqual(SitePermissions.get(uri2, id, browser), {
state: SitePermissions.UNKNOWN,
scope: SitePermissions.SCOPE_PERSISTENT,
}, `${uri.spec} should not share tab permissions with ${uri2.spec}`);
}
}
SitePermissions.clearTemporaryPermissions(browser);
}
});
});