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