/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Testing ruleview inplace-editor is not blurred when clicking on the ruleview // container scrollbar. const TEST_URI = `
Styled Node
`; add_task(function* () { info("Toolbox height should be small enough to force scrollbars to appear"); yield new Promise(done => { let options = {"set": [ ["devtools.toolbox.footer.height", 200], ]}; SpecialPowers.pushPrefEnv(options, done); }); yield addTab("data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI)); let {inspector, view} = yield openRuleView(); yield selectNode(".testclass", inspector); info("Check we have an overflow on the ruleview container."); let container = view.element; let hasScrollbar = container.offsetHeight < container.scrollHeight; ok(hasScrollbar, "The rule view container should have a vertical scrollbar."); info("Focusing an existing selector name in the rule-view."); let ruleEditor = getRuleViewRuleEditor(view, 1); let editor = yield focusEditableField(view, ruleEditor.selectorText); is(inplaceEditor(ruleEditor.selectorText), editor, "The selector editor is focused."); info("Click on the scrollbar element."); yield clickOnRuleviewScrollbar(view); is(editor.input, view.styleDocument.activeElement, "The editor input should still be focused."); info("Check a new value can still be committed in the editable field"); let newValue = ".testclass.a.b.c.d.e.f"; let onRuleViewChanged = once(view, "ruleview-changed"); info("Enter new value and commit."); editor.input.value = newValue; EventUtils.synthesizeKey("VK_RETURN", {}); yield onRuleViewChanged; ok(getRuleViewRule(view, newValue), "Rule with '" + newValue + " 'exists."); }); function* clickOnRuleviewScrollbar(view) { let container = view.element.parentNode; let onScroll = once(container, "scroll"); let rect = container.getBoundingClientRect(); // click 5 pixels before the bottom-right corner should hit the scrollbar EventUtils.synthesizeMouse(container, rect.width - 5, rect.height - 5, {}, view.styleWindow); yield onScroll; ok(true, "The rule view container scrolled after clicking on the scrollbar."); }