Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

/* 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/. */
"use strict";
// This test makes sure that the style editor does not store any
// content CSS files in the permanent cache when opened from a private window tab.
const TEST_URL = `http://${TEST_HOST}/browser/devtools/client/styleeditor/test/test_private.html`;
add_task(async function () {
info("Opening a new private window");
const win = await BrowserTestUtils.openNewBrowserWindow({ private: true });
info("Clearing the browser cache");
Services.cache2.clear();
const { toolbox, ui } = await openStyleEditorForURL(TEST_URL, win);
is(ui.editors.length, 1, "The style editor contains one sheet.");
const editor = ui.editors[0];
is(
editor.friendlyName,
"test_private.css",
"The style editor contains the expected stylesheet"
);
await editor.getSourceEditor();
await checkDiskCacheFor(editor.friendlyName);
await toolbox.destroy();
const onUnload = new Promise(done => {
win.addEventListener("unload", function listener(event) {
if (event.target == win.document) {
win.removeEventListener("unload", listener);
done();
}
});
});
win.close();
await onUnload;
});
function checkDiskCacheFor(fileName) {
let foundPrivateData = false;
return new Promise(resolve => {
Visitor.prototype = {
onCacheStorageInfo(num) {
info("disk storage contains " + num + " entries");
},
onCacheEntryInfo(uri) {
const urispec = uri.asciiSpec;
info(urispec);
foundPrivateData = foundPrivateData || urispec.includes(fileName);
},
onCacheEntryVisitCompleted() {
is(foundPrivateData, false, "web content present in disk cache");
resolve();
},
};
function Visitor() {}
const storage = Services.cache2.diskCacheStorage(
Services.loadContextInfo.default
);
storage.asyncVisitStorage(
new Visitor(),
/* Do walk entries */
true
);
});
}