зеркало из https://github.com/mozilla/gecko-dev.git
127 строки
3.9 KiB
JavaScript
127 строки
3.9 KiB
JavaScript
"use strict";
|
|
|
|
/**
|
|
* Open a dummy page, then open about:cache and verify the opened page shows up in the cache.
|
|
*/
|
|
add_task(async function() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [["privacy.partition.network_state", false]],
|
|
});
|
|
|
|
const kRoot = getRootDirectory(gTestPath).replace(
|
|
"chrome://mochitests/content/",
|
|
"https://example.com/"
|
|
);
|
|
const kTestPage = kRoot + "dummy.html";
|
|
// Open the dummy page to get it cached.
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(
|
|
gBrowser,
|
|
kTestPage,
|
|
true
|
|
);
|
|
BrowserTestUtils.removeTab(tab);
|
|
|
|
tab = await BrowserTestUtils.openNewForegroundTab(
|
|
gBrowser,
|
|
"about:cache",
|
|
true
|
|
);
|
|
let expectedPageCheck = function(uri) {
|
|
info("Saw load for " + uri);
|
|
// Can't easily use searchParms and new URL() because it's an about: URI...
|
|
return uri.startsWith("about:cache?") && uri.includes("storage=disk");
|
|
};
|
|
let diskPageLoaded = BrowserTestUtils.browserLoaded(
|
|
tab.linkedBrowser,
|
|
false,
|
|
expectedPageCheck
|
|
);
|
|
await SpecialPowers.spawn(tab.linkedBrowser, [], function() {
|
|
ok(
|
|
!content.document.nodePrincipal.isSystemPrincipal,
|
|
"about:cache should not have system principal"
|
|
);
|
|
let principal = content.document.nodePrincipal;
|
|
let channel = content.docShell.currentDocumentChannel;
|
|
ok(!channel.loadInfo.loadingPrincipal, "Loading principal should be null.");
|
|
is(
|
|
principal.spec,
|
|
content.document.location.href,
|
|
"Principal matches location"
|
|
);
|
|
let links = [...content.document.querySelectorAll("a[href*=disk]")];
|
|
is(links.length, 1, "Should have 1 link to the disk entries");
|
|
links[0].click();
|
|
});
|
|
await diskPageLoaded;
|
|
info("about:cache disk subpage loaded");
|
|
|
|
expectedPageCheck = function(uri) {
|
|
info("Saw load for " + uri);
|
|
return uri.startsWith("about:cache-entry") && uri.includes("dummy.html");
|
|
};
|
|
let triggeringURISpec = tab.linkedBrowser.currentURI.spec;
|
|
let entryLoaded = BrowserTestUtils.browserLoaded(
|
|
tab.linkedBrowser,
|
|
false,
|
|
expectedPageCheck
|
|
);
|
|
await SpecialPowers.spawn(tab.linkedBrowser, [kTestPage], function(
|
|
kTestPage
|
|
) {
|
|
ok(
|
|
!content.document.nodePrincipal.isSystemPrincipal,
|
|
"about:cache with query params should still not have system principal"
|
|
);
|
|
let principal = content.document.nodePrincipal;
|
|
is(
|
|
principal.spec,
|
|
content.document.location.href,
|
|
"Principal matches location"
|
|
);
|
|
let channel = content.docShell.currentDocumentChannel;
|
|
principal = channel.loadInfo.triggeringPrincipal;
|
|
is(
|
|
principal.spec,
|
|
"about:cache",
|
|
"Triggering principal matches previous location"
|
|
);
|
|
ok(!channel.loadInfo.loadingPrincipal, "Loading principal should be null.");
|
|
let links = [
|
|
...content.document.querySelectorAll("a[href*='" + kTestPage + "']"),
|
|
];
|
|
is(links.length, 1, "Should have 1 link to the entry for " + kTestPage);
|
|
links[0].click();
|
|
});
|
|
await entryLoaded;
|
|
info("about:cache entry loaded");
|
|
|
|
await SpecialPowers.spawn(tab.linkedBrowser, [triggeringURISpec], function(
|
|
triggeringURISpec
|
|
) {
|
|
ok(
|
|
!content.document.nodePrincipal.isSystemPrincipal,
|
|
"about:cache-entry should also not have system principal"
|
|
);
|
|
let principal = content.document.nodePrincipal;
|
|
is(
|
|
principal.spec,
|
|
content.document.location.href,
|
|
"Principal matches location"
|
|
);
|
|
let channel = content.docShell.currentDocumentChannel;
|
|
principal = channel.loadInfo.triggeringPrincipal;
|
|
is(
|
|
principal.spec,
|
|
triggeringURISpec,
|
|
"Triggering principal matches previous location"
|
|
);
|
|
ok(!channel.loadInfo.loadingPrincipal, "Loading principal should be null.");
|
|
ok(
|
|
content.document.querySelectorAll("th").length,
|
|
"Should have several table headers with data."
|
|
);
|
|
});
|
|
BrowserTestUtils.removeTab(tab);
|
|
});
|