Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 <?xml version="1.0"?>
2 <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
4 <window title="Popup Prevent Default Tests"
5 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
7 <!--
8 This tests checks that preventDefault can be called on a popupshowing
9 event or popuphiding event to prevent the default behaviour.
10 -->
12 <script>
14 var gBlockShowing = true;
15 var gBlockHiding = true;
16 var gShownNotAllowed = true;
17 var gHiddenNotAllowed = true;
19 var fm = Components.classes["@mozilla.org/focus-manager;1"].
20 getService(Components.interfaces.nsIFocusManager);
22 var is = function(l, r, v) { window.opener.wrappedJSObject.SimpleTest.is(l, r, v); }
23 var isnot = function(l, r, v) { window.opener.wrappedJSObject.SimpleTest.isnot(l, r, v); }
25 function runTest()
26 {
27 var menu = document.getElementById("menu");
29 is(fm.activeWindow, window, "active window at start");
30 is(fm.focusedWindow, window, "focused window at start");
32 is(window.windowState, window.STATE_NORMAL, "window is normal");
33 // the minimizing test sometimes fails on Linux so don't test it there
34 if (navigator.platform.indexOf("Lin") == 0) {
35 menu.open = true;
36 return;
37 }
38 window.minimize();
39 is(window.windowState, window.STATE_MINIMIZED, "window is minimized");
41 isnot(fm.activeWindow, window, "active window after minimize");
42 isnot(fm.focusedWindow, window, "focused window after minimize");
44 menu.open = true;
46 setTimeout(runTestAfterMinimize, 0);
47 }
49 function runTestAfterMinimize()
50 {
51 var menu = document.getElementById("menu");
52 is(menu.firstChild.state, "closed", "popup not opened when window minimized");
54 window.restore();
55 is(window.windowState, window.STATE_NORMAL, "window is restored");
57 is(fm.activeWindow, window, "active window after restore");
58 is(fm.focusedWindow, window, "focused window after restore");
60 menu.open = true;
61 }
63 function popupShowing(event)
64 {
65 if (gBlockShowing) {
66 event.preventDefault();
67 gBlockShowing = false;
68 setTimeout(function() {
69 gShownNotAllowed = false;
70 document.getElementById("menu").open = true;
71 }, 3000, true);
72 }
73 }
75 function popupShown()
76 {
77 window.opener.wrappedJSObject.SimpleTest.ok(!gShownNotAllowed, "popupshowing preventDefault");
78 document.getElementById("menu").open = false;
79 }
81 function popupHiding(event)
82 {
83 if (gBlockHiding) {
84 event.preventDefault();
85 gBlockHiding = false;
86 setTimeout(function() {
87 gHiddenNotAllowed = false;
88 document.getElementById("menu").open = false;
89 }, 3000, true);
90 }
91 }
93 function popupHidden()
94 {
95 window.opener.wrappedJSObject.SimpleTest.ok(!gHiddenNotAllowed, "popuphiding preventDefault");
96 window.opener.wrappedJSObject.SimpleTest.finish();
97 window.close();
98 }
100 window.opener.wrappedJSObject.SimpleTest.waitForFocus(runTest, window);
101 </script>
103 <button id="menu" type="menu" label="Menu">
104 <menupopup onpopupshowing="popupShowing(event);"
105 onpopupshown="popupShown();"
106 onpopuphiding="popupHiding(event);"
107 onpopuphidden="popupHidden();">
108 <menuitem label="Item"/>
109 </menupopup>
110 </button>
113 </window>