146 lines
4 KiB
JavaScript
146 lines
4 KiB
JavaScript
/* eslint-disable no-shadow */
|
|
var name = "pb-window-cache";
|
|
|
|
function testMatch(browser) {
|
|
return SpecialPowers.spawn(browser, [name], function () {
|
|
return new Promise((resolve, reject) => {
|
|
content.caches
|
|
.match("http://foo.com")
|
|
.then(function () {
|
|
ok(true, "caches.match() should be successful");
|
|
resolve();
|
|
})
|
|
.catch(function () {
|
|
ok(false, "caches.match() should not throw error");
|
|
reject();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function testHas(browser) {
|
|
return SpecialPowers.spawn(browser, [name], function (name) {
|
|
return new Promise(function (resolve, reject) {
|
|
content.caches
|
|
.has(name)
|
|
.then(function () {
|
|
ok(true, "caches.has() should be successful");
|
|
resolve();
|
|
})
|
|
.catch(function () {
|
|
ok(false, "caches.has() should not throw error");
|
|
reject();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function testOpen(browser) {
|
|
return SpecialPowers.spawn(browser, [name], function (name) {
|
|
return new Promise(function (resolve, reject) {
|
|
content.caches
|
|
.open(name)
|
|
.then(function () {
|
|
ok(true, "caches.open() should be successful");
|
|
resolve();
|
|
})
|
|
.catch(function () {
|
|
ok(false, "caches.open() should not throw error");
|
|
reject();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function testDelete(browser) {
|
|
return SpecialPowers.spawn(browser, [name], function (name) {
|
|
return new Promise(function (resolve, reject) {
|
|
content.caches
|
|
.delete(name)
|
|
.then(function () {
|
|
ok(true, "caches.delete() should be successful");
|
|
resolve();
|
|
})
|
|
.catch(function () {
|
|
ok(false, "caches.delete should not throw error");
|
|
reject();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function testKeys(browser) {
|
|
return SpecialPowers.spawn(browser, [name], function () {
|
|
return new Promise(function (resolve, reject) {
|
|
content.caches
|
|
.keys()
|
|
.then(function () {
|
|
ok(true, "caches.keys() should be successful");
|
|
resolve();
|
|
})
|
|
.catch(function () {
|
|
ok(false, "caches.keys should not throw error");
|
|
reject();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function testOpen_worker(browser) {
|
|
return SpecialPowers.spawn(browser, [], function () {
|
|
let workerFunctionString = function () {
|
|
caches.open("pb-worker-cache").then(
|
|
function (cacheObject) {
|
|
postMessage(cacheObject.toString());
|
|
},
|
|
function (reason) {
|
|
postMessage(reason.name);
|
|
}
|
|
);
|
|
}.toString();
|
|
let workerBlobURL = content.URL.createObjectURL(
|
|
new Blob(["(", workerFunctionString, ")()"], {
|
|
type: "application/javascript",
|
|
})
|
|
);
|
|
let worker = new content.Worker(workerBlobURL);
|
|
content.URL.revokeObjectURL(workerBlobURL);
|
|
return new Promise(function (resolve, reject) {
|
|
worker.addEventListener("message", function (e) {
|
|
let isGood = e.data != "SecurityError";
|
|
ok(isGood, "caches.open() should be successful from worker");
|
|
isGood ? resolve() : reject();
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function test() {
|
|
let privateWin, privateTab;
|
|
waitForExplicitFinish();
|
|
SpecialPowers.pushPrefEnv({
|
|
set: [["dom.caches.testing.enabled", true]],
|
|
})
|
|
.then(() => {
|
|
return BrowserTestUtils.openNewBrowserWindow({ private: true });
|
|
})
|
|
.then(pw => {
|
|
privateWin = pw;
|
|
privateTab = BrowserTestUtils.addTab(pw.gBrowser, "http://example.com/");
|
|
return BrowserTestUtils.browserLoaded(privateTab.linkedBrowser);
|
|
})
|
|
.then(() => {
|
|
return Promise.all([
|
|
testMatch(privateTab.linkedBrowser),
|
|
testHas(privateTab.linkedBrowser),
|
|
testOpen(privateTab.linkedBrowser),
|
|
testDelete(privateTab.linkedBrowser),
|
|
testKeys(privateTab.linkedBrowser),
|
|
testOpen_worker(privateTab.linkedBrowser),
|
|
]);
|
|
})
|
|
.then(() => {
|
|
return BrowserTestUtils.closeWindow(privateWin);
|
|
})
|
|
.then(finish);
|
|
}
|