2007-08-03 07:06:16 -07:00
|
|
|
<?xml version="1.0"?>
|
|
|
|
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
|
|
|
|
|
|
|
|
<window title="Popup Prevent Default Tests"
|
2009-09-03 12:30:06 -07:00
|
|
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
2007-08-03 07:06:16 -07:00
|
|
|
|
|
|
|
<title>Popup Prevent Default Tests</title>
|
|
|
|
|
|
|
|
<!--
|
|
|
|
This tests checks that preventDefault can be called on a popupshowing
|
|
|
|
event or popuphiding event to prevent the default behaviour.
|
|
|
|
-->
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
|
|
var gBlockShowing = true;
|
|
|
|
var gBlockHiding = true;
|
|
|
|
var gShownNotAllowed = true;
|
|
|
|
var gHiddenNotAllowed = true;
|
|
|
|
|
2009-08-12 07:03:34 -07:00
|
|
|
var fm = Components.classes["@mozilla.org/focus-manager;1"].
|
|
|
|
getService(Components.interfaces.nsIFocusManager);
|
|
|
|
|
2008-09-10 09:57:57 -07:00
|
|
|
var is = function(l, r, v) { window.opener.wrappedJSObject.SimpleTest.is(l, r, v); }
|
2009-08-12 07:03:34 -07:00
|
|
|
var isnot = function(l, r, v) { window.opener.wrappedJSObject.SimpleTest.isnot(l, r, v); }
|
2008-09-10 09:57:57 -07:00
|
|
|
|
2007-08-03 07:06:16 -07:00
|
|
|
function runTest()
|
|
|
|
{
|
2008-09-13 12:48:08 -07:00
|
|
|
var menu = document.getElementById("menu");
|
|
|
|
|
2009-08-12 07:03:34 -07:00
|
|
|
is(fm.activeWindow, window, "active window at start");
|
|
|
|
is(fm.focusedWindow, window, "focused window at start");
|
|
|
|
|
2008-09-10 09:57:57 -07:00
|
|
|
is(window.windowState, window.STATE_NORMAL, "window is normal");
|
2008-09-13 12:48:08 -07:00
|
|
|
// the minimizing test sometimes fails on Linux so don't test it there
|
|
|
|
if (navigator.platform.indexOf("Lin") == 0) {
|
|
|
|
menu.open = true;
|
|
|
|
return;
|
|
|
|
}
|
2008-09-10 09:57:57 -07:00
|
|
|
window.minimize();
|
|
|
|
is(window.windowState, window.STATE_MINIMIZED, "window is minimized");
|
|
|
|
|
2009-08-12 07:03:34 -07:00
|
|
|
isnot(fm.activeWindow, window, "active window after minimize");
|
|
|
|
isnot(fm.focusedWindow, window, "focused window after minimize");
|
|
|
|
|
2008-09-13 12:48:08 -07:00
|
|
|
menu.open = true;
|
2008-09-10 09:57:57 -07:00
|
|
|
|
|
|
|
setTimeout(runTestAfterMinimize, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
function runTestAfterMinimize()
|
|
|
|
{
|
|
|
|
var menu = document.getElementById("menu");
|
|
|
|
is(menu.firstChild.state, "closed", "popup not opened when window minimized");
|
|
|
|
|
|
|
|
window.restore();
|
|
|
|
is(window.windowState, window.STATE_NORMAL, "window is restored");
|
|
|
|
|
2009-08-12 07:03:34 -07:00
|
|
|
is(fm.activeWindow, window, "active window after restore");
|
|
|
|
is(fm.focusedWindow, window, "focused window after restore");
|
|
|
|
|
2008-09-10 09:57:57 -07:00
|
|
|
menu.open = true;
|
2007-08-03 07:06:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
function popupShowing(event)
|
|
|
|
{
|
|
|
|
if (gBlockShowing) {
|
|
|
|
event.preventDefault();
|
|
|
|
gBlockShowing = false;
|
|
|
|
setTimeout(function() {
|
|
|
|
gShownNotAllowed = false;
|
|
|
|
document.getElementById("menu").open = true;
|
|
|
|
}, 3000, true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function popupShown()
|
|
|
|
{
|
|
|
|
window.opener.wrappedJSObject.SimpleTest.ok(!gShownNotAllowed, "popupshowing preventDefault");
|
|
|
|
document.getElementById("menu").open = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
function popupHiding(event)
|
|
|
|
{
|
|
|
|
if (gBlockHiding) {
|
|
|
|
event.preventDefault();
|
|
|
|
gBlockHiding = false;
|
|
|
|
setTimeout(function() {
|
|
|
|
gHiddenNotAllowed = false;
|
|
|
|
document.getElementById("menu").open = false;
|
|
|
|
}, 3000, true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function popupHidden()
|
|
|
|
{
|
|
|
|
window.opener.wrappedJSObject.SimpleTest.ok(!gHiddenNotAllowed, "popuphiding preventDefault");
|
|
|
|
window.opener.wrappedJSObject.SimpleTest.finish();
|
|
|
|
window.close();
|
|
|
|
}
|
2009-09-03 12:30:06 -07:00
|
|
|
|
|
|
|
window.opener.wrappedJSObject.SimpleTest.waitForFocus(runTest, window);
|
2007-08-03 07:06:16 -07:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<button id="menu" type="menu" label="Menu">
|
|
|
|
<menupopup onpopupshowing="popupShowing(event);"
|
|
|
|
onpopupshown="popupShown();"
|
|
|
|
onpopuphiding="popupHiding(event);"
|
|
|
|
onpopuphidden="popupHidden();">
|
|
|
|
<menuitem label="Item"/>
|
|
|
|
</menupopup>
|
|
|
|
</button>
|
|
|
|
|
|
|
|
|
|
|
|
</window>
|