diff options
Diffstat (limited to 'widget/tests/chrome_context_menus_win.xul')
-rw-r--r-- | widget/tests/chrome_context_menus_win.xul | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/widget/tests/chrome_context_menus_win.xul b/widget/tests/chrome_context_menus_win.xul new file mode 100644 index 000000000..9a4590747 --- /dev/null +++ b/widget/tests/chrome_context_menus_win.xul @@ -0,0 +1,101 @@ +<?xml version="1.0"?> + +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + +<?xml-stylesheet href="chrome://global/skin" type="text/css"?> + +<window id="ChromeContextMenuTest" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + width="300" + height="300" + title="Chrome Context Menu Test w/Plugin Focus"> + +<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> + +<popupset> + <menupopup id="testmenu" onpopupshown="menuDisplayed()"> + <menuitem label="One"/> + <menuitem label="Two"/> + <menuitem label="Three"/> + </menupopup> +</popupset> + +<toolbox> + <toolbar id="nav-toolbar" style="height:30px" context="testmenu"> + </toolbar> +</toolbox> + +<script type="application/javascript"><![CDATA[ + +function ok(condition, message) { + window.opener.wrappedJSObject.SimpleTest.ok(condition, message); +} + +function onTestsFinished() { + window.close(); + window.opener.wrappedJSObject.SimpleTest.finish(); +} + +function openContextMenuFor(element) { + + var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor). + getInterface(Components.interfaces.nsIDOMWindowUtils); + + var tbX = (window.mozInnerScreenX + 10) * utils.screenPixelsPerCSSPixel; + var tbY = (window.mozInnerScreenY + 10) * utils.screenPixelsPerCSSPixel; + + // See nsWidnow's SynthesizeNativeMouseEvent & SendInput on msdn + var MOUSEEVENTF_RIGHTDOWN = 0x0008; + var MOUSEEVENTF_RIGHTUP = 0x0010; + + utils.sendNativeMouseEvent(tbX, tbY, + MOUSEEVENTF_RIGHTDOWN, + 0, element); + utils.sendNativeMouseEvent(tbX, tbY, + MOUSEEVENTF_RIGHTUP, + 0, element); +} + +var tid = 0; + +function onFocus() { + var _delayedOnLoad = function() { + var plugin = document.getElementById("plugin"); + var toolbar = document.getElementById("nav-toolbar"); + + plugin.focus(); + + tid = setTimeout("menuTimeout()", 5000); + + openContextMenuFor(toolbar); + } + setTimeout(_delayedOnLoad, 3000); +} + +function menuTimeout() { + ok(false, "Right-click chrome menu did not display with focus on a plugin."); + onTestsFinished(); +} + +function menuDisplayed() { + clearTimeout(tid); + ok(true, "Right-click chrome menu displayed despite plugin having focus."); + onTestsFinished(); +} + +window.opener.wrappedJSObject.SimpleTest.waitForFocus(onFocus, window); + + +]]></script> + +<body xmlns="http://www.w3.org/1999/xhtml"> + <br/> + <embed id="plugin" type="application/x-test" width="50" height="50"></embed> +</body> + +</window> |