62 lines
2.1 KiB
JavaScript
62 lines
2.1 KiB
JavaScript
const TEST_URL =
|
|
"https://example.com/browser/dom/tests/browser/page_evict_with_non_cacheable.html";
|
|
|
|
const TEST_SCRIPT_URL =
|
|
"https://example.com/browser/dom/tests/browser/cacheable_non_cacheable_server.sjs";
|
|
|
|
add_task(async function () {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [["dom.script_loader.experimental.navigation_cache", true]],
|
|
});
|
|
registerCleanupFunction(() => SpecialPowers.popPrefEnv());
|
|
|
|
// Set the server to return a cacheable script.
|
|
const response1 = await fetch(TEST_SCRIPT_URL + "?use-cacheable");
|
|
is(await response1.text(), "ok", "Server state should be set");
|
|
|
|
ChromeUtils.clearResourceCache();
|
|
Services.cache2.clear();
|
|
|
|
const tab = await BrowserTestUtils.openNewForegroundTab({
|
|
gBrowser,
|
|
url: TEST_URL,
|
|
});
|
|
|
|
// The server should return a script that sets cacheable attribute to
|
|
// true.
|
|
let cacheable = await SpecialPowers.spawn(tab.linkedBrowser, [], () => {
|
|
return content.document.body.getAttribute("cacheable");
|
|
});
|
|
is(cacheable, "true");
|
|
|
|
// Reloading the page should use the cached script.
|
|
await BrowserTestUtils.reloadTab(tab);
|
|
cacheable = await SpecialPowers.spawn(tab.linkedBrowser, [], () => {
|
|
return content.document.body.getAttribute("cacheable");
|
|
});
|
|
is(cacheable, "true");
|
|
|
|
// Set the server to return a non-cacheable script.
|
|
const response2 = await fetch(TEST_SCRIPT_URL + "?use-non-cacheable");
|
|
is(await response2.text(), "ok", "Server state should be set");
|
|
|
|
// Force-reload should fetch the script from the server
|
|
await BrowserTestUtils.reloadTab(tab, { bypassCache: true });
|
|
|
|
// The server should return a script that sets cacheable attribute to
|
|
// false.
|
|
cacheable = await SpecialPowers.spawn(tab.linkedBrowser, [], () => {
|
|
return content.document.body.getAttribute("cacheable");
|
|
});
|
|
is(cacheable, "false");
|
|
|
|
// Reloading the page shouldn't use the cached script.
|
|
await BrowserTestUtils.reloadTab(tab);
|
|
cacheable = await SpecialPowers.spawn(tab.linkedBrowser, [], () => {
|
|
return content.document.body.getAttribute("cacheable");
|
|
});
|
|
is(cacheable, "false");
|
|
|
|
BrowserTestUtils.removeTab(tab);
|
|
});
|