Bug 1304003: Rewrite browser_console_click_focus.js. r=bgrins

MozReview-Commit-ID: AVePUxOa8wp
This commit is contained in:
Lin Clark 2016-09-27 10:09:51 -07:00
parent 274a766dda
commit 700269e5cd
2 changed files with 43 additions and 4 deletions

View File

@ -7,12 +7,51 @@
"use strict";
const TEST_URI = "data:text/html;charset=utf-8,Test input focus";
const TEST_URI =
`data:text/html;charset=utf-8,Test input focused
<script>
console.log("console message 1");
</script>`;
add_task(function* () {
let hud = yield openNewTabAndConsole(TEST_URI);
hud.jsterm.clearOutput();
let inputNode = hud.jsterm.inputNode;
ok(inputNode.getAttribute("focused"), "input node is focused");
ok(inputNode.getAttribute("focused"), "input node is focused after output is cleared");
ContentTask.spawn(gBrowser.selectedBrowser, {}, function* () {
content.wrappedJSObject.console.log("console message 2");
});
let msg = yield waitFor(() => findMessage(hud, "console message 2"));
let outputItem = msg.querySelector(".message-body");
inputNode = hud.jsterm.inputNode;
ok(inputNode.getAttribute("focused"), "input node is focused, first");
yield waitForBlurredInput(inputNode);
EventUtils.sendMouseEvent({type: "click"}, hud.outputNode);
ok(inputNode.getAttribute("focused"), "input node is focused, second time");
yield waitForBlurredInput(inputNode);
info("Setting a text selection and making sure a click does not re-focus");
let selection = hud.iframeWindow.getSelection();
selection.selectAllChildren(outputItem);
EventUtils.sendMouseEvent({type: "click"}, hud.outputNode);
ok(!inputNode.getAttribute("focused"),
"input node focused after text is selected");
});
function waitForBlurredInput(inputNode) {
return new Promise(resolve => {
let lostFocus = () => {
ok(!inputNode.getAttribute("focused"), "input node is not focused");
resolve();
};
inputNode.addEventListener("blur", lostFocus, { once: true });
document.getElementById("urlbar").click();
});
}

View File

@ -91,7 +91,7 @@ function waitForMessages({ hud, messages }) {
function* waitFor(condition, message = "waitFor", interval = 100, maxTries = 50) {
return new Promise(resolve => {
BrowserTestUtils.waitForCondition(condition, message, interval, maxTries)
.then(resolve(condition()));
.then(() => resolve(condition()));
});
}
@ -110,5 +110,5 @@ function findMessage(hud, text, selector = ".message") {
hud.ui.experimentalOutputNode.querySelectorAll(selector),
(el) => el.textContent.includes(text)
);
return elements.pop();
return elements.length > 0 ? elements.pop() : false;
}