fune/netwerk/test/browser/browser_bug968273.js
Iulian Moraru 8d350d3cf6 Backed out 4 changesets (bug 1835983, bug 1719271) for causing multiple failures. CLOSED TREE
Backed out changeset cc4918cd9802 (bug 1719271)
Backed out changeset 53a1814554bf (bug 1835983)
Backed out changeset c5eed965602e (bug 1835983)
Backed out changeset 1b8e7959184a (bug 1835983)
2024-06-06 23:53:14 +03:00

70 lines
1.9 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
function OpenCacheEntry(key, flags, lci) {
return new Promise(resolve => {
key = Services.io.newURI(key);
function CacheListener() {}
CacheListener.prototype = {
QueryInterface: ChromeUtils.generateQI(["nsICacheEntryOpenCallback"]),
onCacheEntryCheck() {
return Ci.nsICacheEntryOpenCallback.ENTRY_WANTED;
},
onCacheEntryAvailable(entry) {
resolve(entry);
},
run() {
let storage = Services.cache2.diskCacheStorage(lci);
storage.asyncOpenURI(key, "", flags, this);
},
};
new CacheListener().run();
});
}
async function do_test_cache_persistent(https) {
let scheme = https ? "https" : "http";
let url =
scheme + "://example.com/browser/netwerk/test/browser/file_bug968273.html";
let redirectUrl =
scheme +
"://example.com/browser/netwerk/test/browser/bug968273_redirect.html";
await BrowserTestUtils.openNewForegroundTab(gBrowser, url, true);
let loadContextInfo = Services.loadContextInfo.custom(false, {
partitionKey: `(${scheme},example.com)`,
});
let entry = await OpenCacheEntry(
redirectUrl,
Ci.nsICacheStorage.OPEN_NORMALLY,
loadContextInfo
);
Assert.ok(
entry.persistent == https,
https
? "Permanent redirects over HTTPS can be persistent"
: "Permanent redirects over HTTP cannot be persistent"
);
gBrowser.removeCurrentTab();
Services.cache2.clear();
}
add_task(async function setupTestingPref() {
await SpecialPowers.pushPrefEnv({
set: [["network.cache.persist_permanent_redirects_http", false]],
});
});
add_task(async function test_cache_persistent() {
await do_test_cache_persistent(true);
await do_test_cache_persistent(false);
});