65 lines
2.9 KiB
JavaScript
65 lines
2.9 KiB
JavaScript
var rootDir = getRootDirectory(gTestPath);
|
|
const gTestRoot = rootDir.replace("chrome://mochitests/content/", "http://127.0.0.1:8888/");
|
|
|
|
add_task(async function() {
|
|
is(navigator.plugins.length, 0,
|
|
"plugins should not be available to chrome-privilege pages");
|
|
ok(!("application/x-test" in navigator.mimeTypes),
|
|
"plugins should not be available to chrome-privilege pages");
|
|
|
|
await BrowserTestUtils.withNewTab({ gBrowser, url: "about:blank" }, async function(browser) {
|
|
// about:blank triggered from a toplevel load should not inherit permissions
|
|
await ContentTask.spawn(browser, null, async function() {
|
|
is(content.window.navigator.plugins.length, 0,
|
|
"plugins should not be available to null-principal about:blank");
|
|
ok(!("application/x-test" in content.window.navigator.mimeTypes),
|
|
"plugins should not be available to null-principal about:blank");
|
|
});
|
|
|
|
let promise = BrowserTestUtils.browserLoaded(browser);
|
|
browser.loadURI(gTestRoot + "plugin_test.html");
|
|
await promise;
|
|
|
|
await ContentTask.spawn(browser, null, async function() {
|
|
ok(content.window.navigator.plugins.length > 0,
|
|
"plugins should be available to HTTP-loaded pages");
|
|
ok("application/x-test" in content.window.navigator.mimeTypes,
|
|
"plugins should be available to HTTP-loaded pages");
|
|
|
|
let subwindow = content.document.getElementById("subf").contentWindow;
|
|
|
|
ok("application/x-test" in subwindow.navigator.mimeTypes,
|
|
"plugins should be available to an about:blank subframe loaded from a site");
|
|
});
|
|
|
|
// navigate from the HTTP page to an about:blank page which ought to
|
|
// inherit permissions
|
|
promise = BrowserTestUtils.browserLoaded(browser);
|
|
await ContentTask.spawn(browser, null, async function() {
|
|
content.document.getElementById("aboutlink").click();
|
|
});
|
|
await promise;
|
|
|
|
await ContentTask.spawn(browser, null, async function() {
|
|
is(content.window.location.href, "about:blank", "sanity-check about:blank load");
|
|
ok("application/x-test" in content.window.navigator.mimeTypes,
|
|
"plugins should be available when a site triggers an about:blank load");
|
|
});
|
|
|
|
// navigate to the file: URI, which shouldn't allow plugins. This might
|
|
// be wrapped in jar:, but that shouldn't matter for this test
|
|
promise = BrowserTestUtils.browserLoaded(browser);
|
|
let converteduri = Cc["@mozilla.org/chrome/chrome-registry;1"].getService(Ci.nsIChromeRegistry).convertChromeURL(Services.io.newURI(rootDir + "plugin_test.html"));
|
|
browser.loadURI(converteduri.spec);
|
|
await promise;
|
|
|
|
await ContentTask.spawn(browser, null, async function() {
|
|
ok(!("application/x-test" in content.window.navigator.mimeTypes),
|
|
"plugins should not be available to file: URI content");
|
|
});
|
|
});
|
|
|
|
// As much as it would be nice, this doesn't actually check ftp:// because
|
|
// we don't have a synthetic server.
|
|
});
|