forked from mirrors/gecko-dev
54 lines
1.9 KiB
JavaScript
54 lines
1.9 KiB
JavaScript
"use strict";
|
|
|
|
// This test requires an XMLHttpRequest constructor which isn't
|
|
// associated with a window.
|
|
const {XMLHttpRequest} = Cu.Sandbox(window, {wantGlobalProperties: ["XMLHttpRequest"]});
|
|
|
|
var {WebRequest} = ChromeUtils.import("resource://gre/modules/WebRequest.jsm", {});
|
|
var {PromiseUtils} = ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm", {});
|
|
|
|
add_task(async function test_ancestors_exist() {
|
|
let deferred = PromiseUtils.defer();
|
|
function onBeforeRequest(details) {
|
|
info(`onBeforeRequest ${details.url}`);
|
|
ok(typeof details.frameAncestors === "object", `ancestors exists [${typeof details.frameAncestors}]`);
|
|
deferred.resolve();
|
|
}
|
|
|
|
WebRequest.onBeforeRequest.addListener(onBeforeRequest, {urls: new MatchPatternSet(["http://mochi.test/test/*"])}, ["blocking"]);
|
|
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://mochi.test:8888/test/");
|
|
await deferred.promise;
|
|
BrowserTestUtils.removeTab(tab);
|
|
|
|
WebRequest.onBeforeRequest.removeListener(onBeforeRequest);
|
|
});
|
|
|
|
add_task(async function test_ancestors_null() {
|
|
let deferred = PromiseUtils.defer();
|
|
function onBeforeRequest(details) {
|
|
info(`onBeforeRequest ${details.url}`);
|
|
ok(details.frameAncestors === undefined, "ancestors do not exist");
|
|
deferred.resolve();
|
|
}
|
|
|
|
WebRequest.onBeforeRequest.addListener(onBeforeRequest, null, ["blocking"]);
|
|
|
|
function fetch(url) {
|
|
return new Promise((resolve, reject) => {
|
|
let xhr = new XMLHttpRequest();
|
|
xhr.mozBackgroundRequest = true;
|
|
xhr.open("GET", url);
|
|
xhr.onload = () => { resolve(xhr.responseText); };
|
|
xhr.onerror = () => { reject(xhr.status); };
|
|
// use a different contextId to avoid auth cache.
|
|
xhr.setOriginAttributes({userContextId: 1});
|
|
xhr.send();
|
|
});
|
|
}
|
|
|
|
await fetch("http://mochi.test:8888/test/");
|
|
await deferred.promise;
|
|
|
|
WebRequest.onBeforeRequest.removeListener(onBeforeRequest);
|
|
});
|