diff options
Diffstat (limited to 'dom/events/test/test_bug617528.xul')
-rw-r--r-- | dom/events/test/test_bug617528.xul | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/dom/events/test/test_bug617528.xul b/dom/events/test/test_bug617528.xul new file mode 100644 index 0000000000..83038b36be --- /dev/null +++ b/dom/events/test/test_bug617528.xul @@ -0,0 +1,95 @@ +<?xml version="1.0"?> +<?xml-stylesheet type="text/css" href="chrome://global/skin"?> +<?xml-stylesheet type="text/css" + href="chrome://mochikit/content/tests/SimpleTest/test.css"?> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=617528 +--> +<window title="Mozilla Bug 617528" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + + <script type="application/javascript" + src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> + + <body xmlns="http://www.w3.org/1999/xhtml"> + <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=617528" + target="_blank">Mozilla Bug 617528</a> + </body> + + <script type="application/javascript"><![CDATA[ + var _window; + var browser; + + function start() { + _window = window.open("window_bug617528.xul", "_new", "chrome"); + _window.addEventListener("load", onLoad, false); + } + + function onLoad() { + _window.removeEventListener("load", onLoad, false); + + browser = _window.document.getElementById("browser"); + browser.addEventListener("pageshow", onPageShow, false); + + var uri='data:text/html,\ +<html>\ + <body>\ + <div oncontextmenu="event.preventDefault()">\ + <input id="node" type="text" value="Click here"></input>\ + </div>\ + </body>\ +</html>'; + browser.loadURI(uri); + } + + function onPageShow() { + browser.removeEventListener("pageshow", onPageShow, true); + SimpleTest.executeSoon(doTest); + } + + function onContextMenu1(event) { + is(event.defaultPrevented, true, + "expected event.defaultPrevented to be true (1)"); + is(event.target.localName, "input", + "expected event.target.localName to be 'input' (1)"); + is(event.originalTarget.localName, "div", + "expected event.originalTarget.localName to be 'div' (1)"); + } + + function onContextMenu2(event) { + is(event.defaultPrevented, false, + "expected event.defaultPrevented to be false (2)"); + is(event.target.localName, "input", + "expected event.target.localName to be 'input' (2)"); + is(event.originalTarget.localName, "div", + "expected event.originalTarget.localName to be 'div' (2)"); + } + + function doTest() { + var win = browser.contentWindow; + win.focus(); + var node = win.document.getElementById("node"); + var rect = node.getBoundingClientRect(); + var left = rect.left + rect.width / 2; + var top = rect.top + rect.height / 2; + + var wu = win.QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIDOMWindowUtils); + + browser.addEventListener("contextmenu", onContextMenu1, false); + wu.sendMouseEvent("contextmenu", left, top, 2, 1, 0); + browser.removeEventListener("contextmenu", onContextMenu1, false); + + browser.addEventListener("contextmenu", onContextMenu2, false); + var shiftMask = Components.interfaces.nsIDOMEvent.SHIFT_MASK; + wu.sendMouseEvent("contextmenu", left, top, 2, 1, shiftMask); + browser.removeEventListener("contextmenu", onContextMenu2, false); + + _window.close(); + SimpleTest.finish(); + } + + addLoadEvent(start); + SimpleTest.waitForExplicitFinish(); + ]]></script> +</window> |