<?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>