46 lines
1.9 KiB
JavaScript
46 lines
1.9 KiB
JavaScript
add_task(function* test() {
|
|
const kTestURI =
|
|
"data:text/html," +
|
|
"<script type=\"text/javascript\">" +
|
|
" function onMouseDown(aEvent) {" +
|
|
" document.getElementById('willBeFocused').focus();" +
|
|
" aEvent.preventDefault();" +
|
|
" }" +
|
|
"</script>" +
|
|
"<body id=\"body\">" +
|
|
"<button onmousedown=\"onMouseDown(event);\" style=\"width: 100px; height: 100px;\">click here</button>" +
|
|
"<input id=\"willBeFocused\"></body>";
|
|
|
|
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, kTestURI);
|
|
|
|
let fm = Components.classes["@mozilla.org/focus-manager;1"].
|
|
getService(Components.interfaces.nsIFocusManager);
|
|
|
|
for (var button = 0; button < 3; button++) {
|
|
// Set focus to a chrome element before synthesizing a mouse down event.
|
|
document.getElementById("urlbar").focus();
|
|
|
|
is(fm.focusedElement, document.getElementById("urlbar").inputField,
|
|
"Failed to move focus to search bar: button=" + button);
|
|
|
|
// Synthesize mouse down event on browser object over the button, such that
|
|
// the event propagates through both processes.
|
|
EventUtils.synthesizeMouse(tab.linkedBrowser, 20, 20, { "button": button }, null);
|
|
|
|
isnot(fm.focusedElement, document.getElementById("urlbar").inputField,
|
|
"Failed to move focus away from search bar: button=" + button);
|
|
|
|
yield ContentTask.spawn(tab.linkedBrowser, button, function (button) {
|
|
let fm = Components.classes["@mozilla.org/focus-manager;1"].
|
|
getService(Components.interfaces.nsIFocusManager);
|
|
|
|
Assert.equal(content.document.activeElement.id, "willBeFocused",
|
|
"The input element isn't active element: button=" + button);
|
|
Assert.equal(fm.focusedElement, content.document.activeElement,
|
|
"The active element isn't focused element in App level: button=" + button);
|
|
});
|
|
}
|
|
|
|
gBrowser.removeTab(tab);
|
|
});
|