michael@0: function test() { michael@0: waitForExplicitFinish(); michael@0: michael@0: const kTestURI = michael@0: "data:text/html," + michael@0: "" + michael@0: "" + michael@0: "" + michael@0: ""; michael@0: michael@0: let tab = gBrowser.addTab(); michael@0: gBrowser.selectedTab = tab; michael@0: michael@0: // Set the focus to the contents. michael@0: tab.linkedBrowser.focus(); michael@0: // Load on the tab michael@0: tab.linkedBrowser.addEventListener("load", onLoadTab, true); michael@0: tab.linkedBrowser.loadURI(kTestURI); michael@0: michael@0: function onLoadTab() { michael@0: tab.linkedBrowser.removeEventListener("load", onLoadTab, true); michael@0: setTimeout(doTest, 0); michael@0: } michael@0: michael@0: function doTest() { michael@0: let fm = Components.classes["@mozilla.org/focus-manager;1"]. michael@0: getService(Components.interfaces.nsIFocusManager); michael@0: let eventTarget = michael@0: tab.linkedBrowser.contentDocument.getElementById("eventTarget"); michael@0: michael@0: for (var button = 0; button < 3; button++) { michael@0: // Set focus to a chrome element before synthesizing a mouse down event. michael@0: document.getElementById("urlbar").focus(); michael@0: michael@0: is(fm.focusedElement, document.getElementById("urlbar").inputField, michael@0: "Failed to move focus to search bar: button=" + michael@0: button); michael@0: michael@0: EventUtils.synthesizeMouse(eventTarget, 10, 10, { "button": button }, michael@0: tab.linkedBrowser.contentWindow); michael@0: michael@0: let e = tab.linkedBrowser.contentDocument.activeElement; michael@0: is(e.id, "willBeFocused", michael@0: "The input element isn't active element: button=" + button); michael@0: michael@0: is(fm.focusedElement, e, michael@0: "The active element isn't focused element in App level: button=" + michael@0: button); michael@0: } michael@0: michael@0: gBrowser.removeTab(tab); michael@0: finish(); michael@0: } michael@0: }