forked from mirrors/gecko-dev
MozReview-Commit-ID: zQVeEHhIax --HG-- extra : rebase_source : bebcd31cfbd638c51ff21c7e2b62bcc536b026da
78 lines
2.8 KiB
JavaScript
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);
|
|
}
|
|
});
|
|
|
|
});
|
|
|