summaryrefslogtreecommitdiffstats
path: root/widget/tests/chrome_context_menus_win.xul
diff options
context:
space:
mode:
Diffstat (limited to 'widget/tests/chrome_context_menus_win.xul')
-rw-r--r--widget/tests/chrome_context_menus_win.xul101
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>