summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/rules/test/browser_rules_edit-property-remove_03.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/client/inspector/rules/test/browser_rules_edit-property-remove_03.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/devtools/client/inspector/rules/test/browser_rules_edit-property-remove_03.js b/devtools/client/inspector/rules/test/browser_rules_edit-property-remove_03.js
new file mode 100644
index 0000000000..d5bc376dd4
--- /dev/null
+++ b/devtools/client/inspector/rules/test/browser_rules_edit-property-remove_03.js
@@ -0,0 +1,84 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Tests removing a property by clearing the property name and pressing shift
+// and tab keys, and checks if the focus is moved to the appropriate editable
+// field.
+
+const TEST_URI = `
+ <style type='text/css'>
+ #testid {
+ background-color: #00F;
+ color: #00F;
+ }
+ </style>
+ <div id='testid'>Styled Node</div>
+`;
+
+add_task(async function () {
+ await addTab("data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI));
+ const { inspector, view } = await openRuleView();
+ await selectNode("#testid", inspector);
+
+ info("Getting the second property in the rule");
+ const rule = getRuleViewRuleEditor(view, 1).rule;
+ let prop = rule.textProps[1];
+
+ info("Clearing the property value and pressing shift-tab");
+ let editor = await focusEditableField(view, prop.editor.valueSpan);
+ const onValueDone = view.once("ruleview-changed");
+ editor.input.value = "";
+ EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, view.styleWindow);
+ await onValueDone;
+
+ let newValue = await getRulePropertyValue(0, 0, "color");
+ is(newValue, "", "color should have been unset.");
+ is(
+ prop.editor.valueSpan.textContent,
+ "",
+ "'' property value is correctly set."
+ );
+
+ info("Pressing shift-tab again to focus the previous property value");
+ const onValueFocused = view.once("ruleview-changed");
+ EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, view.styleWindow);
+ await onValueFocused;
+
+ info("Getting the first property in the rule");
+ prop = rule.textProps[0];
+
+ editor = inplaceEditor(view.styleDocument.activeElement);
+ is(
+ inplaceEditor(prop.editor.valueSpan),
+ editor,
+ "Focus should have moved to the previous property value"
+ );
+
+ info("Pressing shift-tab again to focus the property name");
+ const onNameFocused = view.once("ruleview-changed");
+ EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, view.styleWindow);
+ await onNameFocused;
+
+ info("Removing the name and pressing shift-tab to focus the selector");
+ const onNameDeleted = view.once("ruleview-changed");
+ EventUtils.synthesizeKey("VK_DELETE", {}, view.styleWindow);
+ EventUtils.synthesizeKey("VK_TAB", { shiftKey: true }, view.styleWindow);
+ await onNameDeleted;
+
+ newValue = await getRulePropertyValue(0, 0, "background-color");
+ is(newValue, "", "background-color should have been unset.");
+
+ editor = inplaceEditor(view.styleDocument.activeElement);
+ is(
+ inplaceEditor(rule.editor.selectorText),
+ editor,
+ "Focus should have moved to the selector text."
+ );
+ is(rule.textProps.length, 0, "All properties should have been removed.");
+ ok(
+ !rule.editor.propertyList.hasChildNodes(),
+ "Should not have any properties."
+ );
+});