/* 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 ); }); }