66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
"use strict";
|
|
|
|
const URL = "http://example.net";
|
|
const URL_SUBDOMAIN = "http://subdomain.example.net";
|
|
const URL2 = "http://foo.bar";
|
|
|
|
/**
|
|
* Helper to wrap the OpenCallback in a Promise.
|
|
*/
|
|
function OpenCallbackPromise(behavior, workingMetadata, workingData, url) {
|
|
return new Promise(resolve => {
|
|
asyncOpenCacheEntry(
|
|
url,
|
|
"disk",
|
|
Ci.nsICacheStorage.OPEN_NORMALLY,
|
|
null,
|
|
new OpenCallback(behavior, workingMetadata, workingData, resolve)
|
|
);
|
|
});
|
|
}
|
|
|
|
async function run_test() {
|
|
do_get_profile();
|
|
do_test_pending();
|
|
|
|
try {
|
|
info(`Create first entry for ${URL}/a`);
|
|
await OpenCallbackPromise(NEW, "e1m", "e1d", URL + "/a");
|
|
|
|
info(`Verify first entry for ${URL}/a`);
|
|
await OpenCallbackPromise(NORMAL, "e1m", "e1d", URL + "/a");
|
|
|
|
info(`Create entry for ${URL_SUBDOMAIN}/a`);
|
|
await OpenCallbackPromise(NEW, "es1m", "es1d", URL_SUBDOMAIN + "/a");
|
|
|
|
info(`Verify entry for ${URL_SUBDOMAIN}/a`);
|
|
await OpenCallbackPromise(NORMAL, "es1m", "es1d", URL_SUBDOMAIN + "/a");
|
|
|
|
info(`Create entry for ${URL2}/a`);
|
|
await OpenCallbackPromise(NEW, "f1m", "f1d", URL2 + "/a");
|
|
|
|
info(`Verify entry for ${URL2}/a`);
|
|
await OpenCallbackPromise(NORMAL, "f1m", "f1d", URL2 + "/a");
|
|
|
|
info(`Clear base domain associated with ${URL}`);
|
|
const url = Services.io.newURI(URL);
|
|
const principal = Services.scriptSecurityManager.createContentPrincipal(
|
|
url,
|
|
{}
|
|
);
|
|
Services.cache2.clearBaseDomain(principal.baseDomain);
|
|
|
|
info(`${URL}/a entry should be new after clearing`);
|
|
await OpenCallbackPromise(NEW, "e1m", "e1d", URL + "/a");
|
|
|
|
info(`${URL_SUBDOMAIN}/a entry should be new after clearing`);
|
|
await OpenCallbackPromise(NEW, "es1m", "es1d", URL_SUBDOMAIN + "/a");
|
|
|
|
info(`${URL2}/a entry should still exist`);
|
|
await OpenCallbackPromise(NORMAL, "f1m", "f1d", URL2 + "/a");
|
|
|
|
finish_cache2_test();
|
|
} catch (e) {
|
|
do_throw(e);
|
|
}
|
|
}
|