<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin" type="text/css"?> <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?> <window title="Show Caret Test" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> <iframe id="f1" width="100" height="100" onload="frameLoaded()" src="data:text/html,%3Cbody%20style='height:%208000px'%3E%3Cp%3EHello%3C/p%3EGoodbye%3C/body%3E"/> <!-- <body style='height: 8000px'><p>Hello</p><span id='s'>Goodbye<span></body> --> <iframe id="f2" type="content" showcaret="true" width="100" height="100" onload="frameLoaded()" src="data:text/html,%3Cbody%20style%3D%27height%3A%208000px%27%3E%3Cp%3EHello%3C%2Fp%3E%3Cspan%20id%3D%27s%27%3EGoodbye%3Cspan%3E%3C%2Fbody%3E"/> <script> <![CDATA[ var framesLoaded = 0; var otherWindow = null; function frameLoaded() { if (++framesLoaded == 2) SimpleTest.waitForFocus(runTest); } SimpleTest.waitForExplicitFinish(); function runTest() { var sel1 = frames[0].getSelection(); sel1.collapse(frames[0].document.body, 0); var sel2 = frames[1].getSelection(); sel2.collapse(frames[1].document.body, 0); window.frames[0].focus(); document.commandDispatcher.getControllerForCommand("cmd_moveBottom").doCommand("cmd_moveBottom"); var listener = function() { if (!(frames[0].scrollY > 0)) { window.content.removeEventListener("scroll", listener, false); } } window.frames[0].addEventListener("scroll", listener, false); var sel1 = frames[0].getSelection(); sel1.collapse(frames[0].document.body, 0); var sel2 = frames[1].getSelection(); sel2.collapse(frames[1].document.body, 0); window.frames[0].focus(); document.commandDispatcher.getControllerForCommand("cmd_moveBottom").doCommand("cmd_moveBottom"); is(sel1.focusNode, frames[0].document.body, "focusNode for non-showcaret"); is(sel1.focusOffset, 0, "focusOffset for non-showcaret"); window.frames[1].focus(); document.commandDispatcher.getControllerForCommand("cmd_moveBottom").doCommand("cmd_moveBottom"); ok(frames[1].scrollY < frames[1].document.getElementById('s').getBoundingClientRect().top, "scrollY for showcaret"); isnot(sel2.focusNode, frames[1].document.body, "focusNode for showcaret"); ok(sel2.anchorOffset > 0, "focusOffset for showcaret"); otherWindow = window.open("window_showcaret.xul", "_blank", "chrome,width=400,height=200"); otherWindow.addEventListener("focus", otherWindowFocused, false); } function otherWindowFocused() { otherWindow.removeEventListener("focus", otherWindowFocused, false); // enable caret browsing temporarily to test caret movement var prefs = Components.classes["@mozilla.org/preferences-service;1"]. getService(Components.interfaces.nsIPrefBranch); prefs.setBoolPref("accessibility.browsewithcaret", true); var hbox = otherWindow.document.documentElement.firstChild; hbox.focus(); is(otherWindow.document.activeElement, hbox, "hbox in other window is focused"); document.commandDispatcher.getControllerForCommand("cmd_lineNext").doCommand("cmd_lineNext"); is(otherWindow.document.activeElement, hbox, "hbox still focused in other window after down movement"); prefs.setBoolPref("accessibility.browsewithcaret", false); otherWindow.close(); SimpleTest.finish(); } ]]> </script> <body xmlns="http://www.w3.org/1999/xhtml"> <p id="display"> </p> <div id="content" style="display: none"> </div> <pre id="test"> </pre> </body> </window>