toolkit/content/tests/chrome/window_popup_preventdefault_chrome.xul

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/toolkit/content/tests/chrome/window_popup_preventdefault_chrome.xul	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,113 @@
     1.4 +<?xml version="1.0"?>
     1.5 +<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
     1.6 +
     1.7 +<window title="Popup Prevent Default Tests"
     1.8 +        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
     1.9 +
    1.10 +<!--
    1.11 +  This tests checks that preventDefault can be called on a popupshowing
    1.12 +  event or popuphiding event to prevent the default behaviour.
    1.13 +  -->
    1.14 +
    1.15 +<script>
    1.16 +
    1.17 +var gBlockShowing = true;
    1.18 +var gBlockHiding = true;
    1.19 +var gShownNotAllowed = true;
    1.20 +var gHiddenNotAllowed = true;
    1.21 +
    1.22 +var fm = Components.classes["@mozilla.org/focus-manager;1"].
    1.23 +           getService(Components.interfaces.nsIFocusManager);
    1.24 +
    1.25 +var is = function(l, r, v) { window.opener.wrappedJSObject.SimpleTest.is(l, r, v); }
    1.26 +var isnot = function(l, r, v) { window.opener.wrappedJSObject.SimpleTest.isnot(l, r, v); }
    1.27 +
    1.28 +function runTest()
    1.29 +{
    1.30 +  var menu = document.getElementById("menu");
    1.31 +
    1.32 +  is(fm.activeWindow, window, "active window at start");
    1.33 +  is(fm.focusedWindow, window, "focused window at start");
    1.34 +
    1.35 +  is(window.windowState, window.STATE_NORMAL, "window is normal");
    1.36 +  // the minimizing test sometimes fails on Linux so don't test it there
    1.37 +  if (navigator.platform.indexOf("Lin") == 0) {
    1.38 +    menu.open = true;
    1.39 +    return;
    1.40 +  }
    1.41 +  window.minimize();
    1.42 +  is(window.windowState, window.STATE_MINIMIZED, "window is minimized");
    1.43 +
    1.44 +  isnot(fm.activeWindow, window, "active window after minimize");
    1.45 +  isnot(fm.focusedWindow, window, "focused window after minimize");
    1.46 +
    1.47 +  menu.open = true;
    1.48 +
    1.49 +  setTimeout(runTestAfterMinimize, 0);
    1.50 +}
    1.51 +
    1.52 +function runTestAfterMinimize()
    1.53 +{
    1.54 +  var menu = document.getElementById("menu");
    1.55 +  is(menu.firstChild.state, "closed", "popup not opened when window minimized");
    1.56 +
    1.57 +  window.restore();
    1.58 +  is(window.windowState, window.STATE_NORMAL, "window is restored");
    1.59 +
    1.60 +  is(fm.activeWindow, window, "active window after restore");
    1.61 +  is(fm.focusedWindow, window, "focused window after restore");
    1.62 +
    1.63 +  menu.open = true;
    1.64 +}
    1.65 +
    1.66 +function popupShowing(event)
    1.67 +{
    1.68 +  if (gBlockShowing) {
    1.69 +    event.preventDefault();
    1.70 +    gBlockShowing = false;
    1.71 +    setTimeout(function() {
    1.72 +                 gShownNotAllowed = false;
    1.73 +                 document.getElementById("menu").open = true;
    1.74 +               }, 3000, true);
    1.75 +  }
    1.76 +}
    1.77 +
    1.78 +function popupShown()
    1.79 +{
    1.80 +  window.opener.wrappedJSObject.SimpleTest.ok(!gShownNotAllowed, "popupshowing preventDefault");
    1.81 +  document.getElementById("menu").open = false;
    1.82 +}
    1.83 +
    1.84 +function popupHiding(event)
    1.85 +{
    1.86 +  if (gBlockHiding) {
    1.87 +    event.preventDefault();
    1.88 +    gBlockHiding = false;
    1.89 +    setTimeout(function() {
    1.90 +                 gHiddenNotAllowed = false;
    1.91 +                 document.getElementById("menu").open = false;
    1.92 +               }, 3000, true);
    1.93 +  }
    1.94 +}
    1.95 +
    1.96 +function popupHidden()
    1.97 +{
    1.98 +  window.opener.wrappedJSObject.SimpleTest.ok(!gHiddenNotAllowed, "popuphiding preventDefault");
    1.99 +  window.opener.wrappedJSObject.SimpleTest.finish();
   1.100 +  window.close();
   1.101 +}
   1.102 +
   1.103 +window.opener.wrappedJSObject.SimpleTest.waitForFocus(runTest, window);
   1.104 +</script>
   1.105 +
   1.106 +<button id="menu" type="menu" label="Menu">
   1.107 +  <menupopup onpopupshowing="popupShowing(event);"
   1.108 +             onpopupshown="popupShown();"
   1.109 +             onpopuphiding="popupHiding(event);"
   1.110 +             onpopuphidden="popupHidden();">
   1.111 +    <menuitem label="Item"/>
   1.112 +  </menupopup>
   1.113 +</button>
   1.114 +
   1.115 +
   1.116 +</window>

mercurial