diff options
Diffstat (limited to 'devtools/client/inspector/test/browser_inspector_search-sidebar.js')
-rw-r--r-- | devtools/client/inspector/test/browser_inspector_search-sidebar.js | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/devtools/client/inspector/test/browser_inspector_search-sidebar.js b/devtools/client/inspector/test/browser_inspector_search-sidebar.js new file mode 100644 index 0000000000..06370a6788 --- /dev/null +++ b/devtools/client/inspector/test/browser_inspector_search-sidebar.js @@ -0,0 +1,91 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +"use strict"; + +// Test that depending where the user last clicked in the inspector, the right search +// field is focused when ctrl+F is pressed. + +add_task(async function () { + const { inspector } = await openInspectorForURL( + "data:text/html;charset=utf-8,Search!" + ); + + info("Check that by default, the inspector search field gets focused"); + pressCtrlF(); + isInInspectorSearchBox(inspector); + + info("Click somewhere in the rule-view"); + moveFocusInRuleView(inspector); + + info("Check that the rule-view search field gets focused"); + pressCtrlF(); + isInRuleViewSearchBox(inspector); + + info("Click in the inspector again"); + await clickContainer("head", inspector); + + info( + "Check that now we're back in the inspector, its search field gets focused" + ); + pressCtrlF(); + isInInspectorSearchBox(inspector); + + info("Switch to the computed view, and click somewhere inside it"); + selectComputedView(inspector); + clickInComputedView(inspector); + + info("Check that the computed-view search field gets focused"); + pressCtrlF(); + isInComputedViewSearchBox(inspector); + + info("Click in the inspector yet again"); + await clickContainer("body", inspector); + + info( + "We're back in the inspector again, check the inspector search field focuses" + ); + pressCtrlF(); + isInInspectorSearchBox(inspector); +}); + +function pressCtrlF() { + EventUtils.synthesizeKey("f", { accelKey: true }); +} + +function moveFocusInRuleView(inspector) { + // Only focus an element in the view so this has no unintended effects. + // Put the focus on the `element` closing bracket, which should always be visible + // and is focusable as it's a button. + inspector.panelDoc + .querySelector("#sidebar-panel-ruleview .ruleview-ruleclose") + .focus(); +} + +function clickInComputedView(inspector) { + const el = inspector.panelDoc.querySelector("#sidebar-panel-computedview"); + EventUtils.synthesizeMouseAtCenter(el, {}, inspector.panelDoc.defaultView); +} + +function isInInspectorSearchBox(inspector) { + // Focus ends up in an anonymous child of the XUL textbox. + ok( + inspector.panelDoc.activeElement.closest("#inspector-searchbox"), + "The inspector search field is focused when ctrl+F is pressed" + ); +} + +function isInRuleViewSearchBox(inspector) { + is( + inspector.panelDoc.activeElement, + inspector.getPanel("ruleview").view.searchField, + "The rule-view search field is focused when ctrl+F is pressed" + ); +} + +function isInComputedViewSearchBox(inspector) { + is( + inspector.panelDoc.activeElement, + inspector.getPanel("computedview").computedView.searchField, + "The computed-view search field is focused when ctrl+F is pressed" + ); +} |