toolkit/content/tests/chrome/window_popup_preventdefault_chrome.xul

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

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>

mercurial