Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
// Tests that adding properties to rules work and reselecting the element still
// show them.
const TEST_URI = URL_ROOT + "doc_content_stylesheet.html";
add_task(async function () {
await addTab(TEST_URI);
const { inspector, view } = await openRuleView();
await selectNode("#target", inspector);
info("Setting a font-weight property on all rules");
await setPropertyOnAllRules(view);
info("Reselecting the element");
await selectNode("body", inspector);
await selectNode("#target", inspector);
checkPropertyOnAllRules(view);
});
async function setPropertyOnAllRules(view) {
// Set the inline style rule first independently because it needs to wait for specific
// events and the DOM mutation that it causes refreshes the rules view, so we need to
// get the list of rules again later.
info("Adding font-weight:bold in the inline style rule");
await addProperty(view, 0, "font-weight", "bold");
// Now set the other rules after having retrieved the list.
// We only want to do this for editable rules (e.g. not for element attributes style)
const allRules = getAllEditableRules(view);
is(allRules.length, 6, "We have the expected number of rules");
for (let i = 1; i < allRules.length; i++) {
info(`Adding font-weight:bold in rule ${i}`);
await addProperty(view, i, "font-weight", "bold");
}
}
function getAllEditableRules(view) {
return [...view.elementStyle.rules].filter(rule => rule.editor.isEditable);
}
function checkPropertyOnAllRules(view) {
const allRules = getAllEditableRules(view);
is(allRules.length, 6, "We have the expected number of rules");
for (const rule of allRules) {
const lastProperty = rule.textProps.at(-1);
is(lastProperty.name, "font-weight", "Last property name is font-weight");
is(lastProperty.value, "bold", "Last property value is bold");
}
}