Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"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(
[
"<!DOCTYPE html>",
"<html>",
"<head>",
"<title>Bug 740541</title>",
],
stylesheets.map(function (sheet) {
return (
'<link rel="stylesheet" type="text/css" href="' + sheet + '">'
);
}),
["</head>", "<body>"],
framedDocuments.map(function (doc) {
return '<iframe src="' + doc + '"></iframe>';
}),
["</body>", "</html>"]
)
.join("\n")
)
);
}
const DOCUMENT_WITH_INLINE_STYLE =
"data:text/html;charset=UTF-8," +
encodeURIComponent(
[
"<!DOCTYPE html>",
"<html>",
" <head>",
" <title>Bug 740541</title>",
' <style type="text/css">',
" .something {",
" }",
" </style>",
" </head>",
" <body>",
" </body>",
" </html>",
].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"
);
}
});