/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Test that sheets inside iframes are shown in the editor. add_task(async function () { function makeStylesheet(selector) { return ( "data:text/css;charset=UTF-8," + encodeURIComponent(selector + " { }") ); } function makeDocument(stylesheets, framedDocuments) { stylesheets = stylesheets || []; framedDocuments = framedDocuments || []; return ( "data:text/html;charset=UTF-8," + encodeURIComponent( Array.prototype.concat .call( [ "", "", "", "Bug 740541", ], stylesheets.map(function (sheet) { return ( '' ); }), ["", ""], framedDocuments.map(function (doc) { return ''; }), ["", ""] ) .join("\n") ) ); } const DOCUMENT_WITH_INLINE_STYLE = "data:text/html;charset=UTF-8," + encodeURIComponent( [ "", "", " ", " Bug 740541", ' ", " ", " ", " ", " ", ].join("\n") ); const FOUR = TEST_BASE_HTTP + "four.html"; const SIMPLE = TEST_BASE_HTTP + "simple.css"; const SIMPLE_DOCUMENT = TEST_BASE_HTTP + "simple.html"; const TESTCASE_URI = makeDocument( [makeStylesheet(".a")], [ makeDocument([], [FOUR, DOCUMENT_WITH_INLINE_STYLE]), makeDocument( [makeStylesheet(".b"), SIMPLE], [makeDocument([makeStylesheet(".c")], [])] ), makeDocument([SIMPLE], []), SIMPLE_DOCUMENT, ] ); const EXPECTED_STYLE_SHEET_COUNT = 12; const { ui } = await openStyleEditorForURL(TESTCASE_URI); is( ui.editors.length, EXPECTED_STYLE_SHEET_COUNT, "Got the expected number of style sheets." ); // Verify that stylesheets are removed when their related target is destroyed if (isFissionEnabled() || isEveryFrameTargetEnabled()) { info("Remove all iframes"); await SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => { const iframes = content.document.querySelectorAll("iframe"); for (const iframe of iframes) { iframe.remove(); } }); await waitFor( () => ui.editors.length == 1, "Wait until all iframe stylesheets are removed and we only have the top document one" ); } });