Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

"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);
}
}