diff options
Diffstat (limited to 'layout/base/tests/chrome/test_bug420499.xul')
-rw-r--r-- | layout/base/tests/chrome/test_bug420499.xul | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/layout/base/tests/chrome/test_bug420499.xul b/layout/base/tests/chrome/test_bug420499.xul new file mode 100644 index 000000000..fb20c417a --- /dev/null +++ b/layout/base/tests/chrome/test_bug420499.xul @@ -0,0 +1,129 @@ +<?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"?> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=420499 +--> +<window title="Mozilla Bug 420499" onload="setTimeout(focusInput, 500);" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> + <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> + + + + <menu id="menu" label="Menu"> + <menupopup id="file-popup"> + <!-- <textbox id="some-text" maxlength="10" value="some text"/> --> + <menu label="submenu"> + <menupopup id="file-popup-inner"> + + <menuitem label="Item1"/> + <menuitem label="Item2"/> + <textbox id="some-text" maxlength="10" value="some more text"/> + </menupopup> + </menu> + <menuitem label="Item3"/> + <menuitem label="Item4"/> + </menupopup> + </menu> + + <popupset> + <popup id="contextmenu"> + <menuitem label="Cut"/> + <menuitem label="Copy"/> + <menuitem label="Paste"/> + </popup> + <tooltip id="tooltip" orient="vertical"> + <description value="This is a tooltip"/> + </tooltip> + </popupset> + + <!-- test results are displayed in the html:body --> + <body xmlns="http://www.w3.org/1999/xhtml" bgcolor="white"> + + <p id="par1">Paragraph 1</p> + <p id="par2">Paragraph 2</p> + <p id="par3">Paragraph 3</p> + <p id="par4">Paragraph 4</p> + <p id="par5">Paragraph 5</p> + + <input type="text" id="text-input" maxlength="10" value="some more text"/> <br /> + + <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=420499" + target="_blank">Mozilla Bug 420499</a> + </body> + + <!-- test code goes here --> + <script type="application/javascript"><![CDATA[ + + /** Test for Bug 420499 **/ + SimpleTest.waitForExplicitFinish(); + + function getSelectionController() { + return document.docShell + .QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsISelectionDisplay) + .QueryInterface(Components.interfaces.nsISelectionController); + } + + function isCaretVisible() { + window.QueryInterface(Components.interfaces.nsIInterfaceRequestor); + var docShell = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIWebNavigation) + .QueryInterface(Components.interfaces.nsIDocShell); + var selCon = docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsISelectionDisplay) + .QueryInterface(Components.interfaces.nsISelectionController); + return selCon.caretVisible; + } + + function focusInput() { + ok(!isCaretVisible(), "Caret shouldn't be visible"); + $("text-input").focus(); + ok(isCaretVisible(), "Caret should be visible when input focused"); + window.addEventListener("popupshown", popupMenuShownHandler, false); + $("menu").open = true; + } + + function popupMenuShownHandler() { + window.removeEventListener("popupshown", popupMenuShownHandler, false); + ok(!isCaretVisible(), "Caret shouldn't be visible when menu open"); + window.addEventListener("popuphidden", ensureParagraphFocused, false); + $("menu").open = false; + } + + function ensureParagraphFocused() { + window.removeEventListener("popuphidden", ensureParagraphFocused, false); + ok(isCaretVisible(), "Caret should have returned to previous focus"); + window.addEventListener("popupshown", popupMenuShownHandler2, false); + $("contextmenu").openPopup($('text-input'), "topleft" , -1 , -1 , true, true); + } + + function popupMenuShownHandler2() { + window.removeEventListener("popupshown", popupMenuShownHandler2, false); + ok(isCaretVisible(), "Caret should be visible when context menu open"); + window.addEventListener("popuphidden", ensureParagraphFocused2, false); + document.getElementById("contextmenu").hidePopup(); + } + + function ensureParagraphFocused2() { + window.removeEventListener("popuphidden", ensureParagraphFocused2, false); + ok(isCaretVisible(), "Caret should still be visible"); + window.addEventListener("popupshown", tooltipShownHandler, false); + $("tooltip").openPopup($('text-input'), "topleft" , -1 , -1 , false, true); + } + + function tooltipShownHandler() { + window.removeEventListener("popupshown", tooltipShownHandler, false); + ok(isCaretVisible(), "Caret should be visible when tooltip is visible"); + window.addEventListener("popuphidden", ensureParagraphFocused3, false); + document.getElementById("tooltip").hidePopup(); + } + + function ensureParagraphFocused3() { + window.removeEventListener("popuphidden", ensureParagraphFocused2, false); + ok(isCaretVisible(), "Caret should still be visible"); + SimpleTest.finish(); + } + ]]></script> +</window> |