/* 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(async function () { info("Toolbox height should be small enough to force scrollbars to appear"); await new Promise(done => { const options = { set: [["devtools.toolbox.footer.height", 200]] }; SpecialPowers.pushPrefEnv(options, done); }); await addTab("data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI)); const { inspector, view } = await openRuleView(); await selectNode(".testclass", inspector); info("Check we have an overflow on the ruleview container."); const container = view.element; const 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."); const ruleEditor = getRuleViewRuleEditor(view, 1); const editor = await focusEditableField(view, ruleEditor.selectorText); is( inplaceEditor(ruleEditor.selectorText), editor, "The selector editor is focused." ); info("Click on the scrollbar element."); await 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"); const newValue = ".testclass.a.b.c.d.e.f"; const onRuleViewChanged = once(view, "ruleview-changed"); info("Enter new value and commit."); editor.input.value = newValue; EventUtils.synthesizeKey("KEY_Enter"); await onRuleViewChanged; ok(getRuleViewRule(view, newValue), "Rule with '" + newValue + " 'exists."); }); async function clickOnRuleviewScrollbar(view) { const container = view.element.parentNode; const onScroll = once(container, "scroll"); const 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 ); await onScroll; ok(true, "The rule view container scrolled after clicking on the scrollbar."); }