Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"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"
);
}