diff options
Diffstat (limited to 'widget/tests/test_bug596600.xul')
-rw-r--r-- | widget/tests/test_bug596600.xul | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/widget/tests/test_bug596600.xul b/widget/tests/test_bug596600.xul deleted file mode 100644 index 0468f7d4d..000000000 --- a/widget/tests/test_bug596600.xul +++ /dev/null @@ -1,177 +0,0 @@ -<?xml version="1.0"?> -<?xml-stylesheet href="chrome://global/skin" type="text/css"?> -<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" - type="text/css"?> -<window title="Native mouse event tests" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - - <script type="application/javascript" - src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" /> - -<body xmlns="http://www.w3.org/1999/xhtml"> -<p id="display"></p> -<div id="content" style="display: none"> - -</div> -<pre id="test"> -</pre> -</body> - -<script class="testbody" type="application/javascript"> -<![CDATA[ - -const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; -const NSMouseMoved = 5; - -var gLeftWindow, gRightWindow, gIFrame; -var gExpectedEvents = []; - -function moveMouseTo(x, y, andThen) { - var utils = gLeftWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor). - getInterface(Components.interfaces.nsIDOMWindowUtils); - utils.sendNativeMouseEvent(x, y, NSMouseMoved, 0, gLeftWindow.documentElement); - SimpleTest.executeSoon(andThen); -} - -function openWindows() { - gLeftWindow = open('empty_window.xul', '_blank', 'chrome,screenX=50,screenY=50,width=200,height=200'); - SimpleTest.waitForFocus(function () { - gRightWindow = open('empty_window.xul', '', 'chrome,screenX=300,screenY=50,width=200,height=200'); - SimpleTest.waitForFocus(attachIFrameToRightWindow, gRightWindow); - }, gLeftWindow); -} - -function attachIFrameToRightWindow() { - gIFrame = gLeftWindow.document.createElementNS(XUL_NS, "iframe"); - gIFrame.setAttribute("type", "content"); - gIFrame.setAttribute("clickthrough", "never"); - gIFrame.setAttribute("src", "data:text/html,<!DOCTYPE html>Content page"); - gIFrame.style.width = "100px"; - gIFrame.style.height = "100px"; - gIFrame.style.margin = "50px"; - gLeftWindow.document.documentElement.appendChild(gIFrame); - gIFrame.contentWindow.addEventListener("load", function (e) { - gIFrame.removeEventListener("load", arguments.callee, false); - test1(); - }, false); -} - -function test1() { - // gRightWindow is active, gLeftWindow is inactive. - moveMouseTo(0, 0, function () { - var expectMouseOver = false, expectMouseOut = false; - function mouseOverListener(e) { - ok(expectMouseOver, "Got expected mouseover at " + e.screenX + ", " + e.screenY); - expectMouseOver = false; - } - function mouseOutListener(e) { - ok(expectMouseOut, "Got expected mouseout at " + e.screenX + ", " + e.screenY); - expectMouseOut = false; - } - gLeftWindow.addEventListener("mouseover", mouseOverListener, false); - gLeftWindow.addEventListener("mouseout", mouseOutListener, false); - - // Move into the left window - expectMouseOver = true; - moveMouseTo(80, 80, function () { - ok(!expectMouseOver, "Should have got mouseover event"); - - // Move over the iframe, which has clickthrough="never". - expectMouseOut = true; - moveMouseTo(150, 150, function () { - ok (!expectMouseOut, "Should have got mouseout event"); - gLeftWindow.removeEventListener("mouseover", mouseOverListener, false); - gLeftWindow.removeEventListener("mouseout", mouseOutListener, false); - test2(); - }); - }); - }); -} - -function test2() { - // Make the iframe cover the whole window. - gIFrame.style.margin = "0"; - gIFrame.style.width = gIFrame.style.height = "200px"; - - // Add a box to the iframe at the left edge. - var doc = gIFrame.contentDocument; - var box = doc.createElement("div"); - box.setAttribute("id", "box"); - box.style.position = "absolute"; - box.style.left = "0"; - box.style.top = "50px"; - box.style.width = "100px"; - box.style.height = "100px"; - box.style.backgroundColor = "green"; - doc.body.appendChild(box); - - ok(!box.matches(":hover"), "Box shouldn't be hovered (since the mouse isn't over it and since it's in a non-clickthrough iframe in a background window)"); - - // A function to waitForFocus and then wait for synthetic mouse - // events to happen. Note that those happen off the refresh driver, - // and happen after animation frame requests. - function changeFocusAndAwaitSyntheticMouse(callback, winToFocus, - elementToWatchForMouseEventOn) { - function mouseWatcher() { - elementToWatchForMouseEventOn.removeEventListener("mouseover", - mouseWatcher, - false); - elementToWatchForMouseEventOn.removeEventListener("mouseout", - mouseWatcher, - false); - SimpleTest.executeSoon(callback); - } - elementToWatchForMouseEventOn.addEventListener("mouseover", - mouseWatcher, - false); - elementToWatchForMouseEventOn.addEventListener("mouseout", - mouseWatcher, - false); - // Just pass a dummy function to waitForFocus; the mouseout/over listener - // will actually handle things for us. - SimpleTest.waitForFocus(function() {}, winToFocus); - } - - // Move the mouse over the box. - moveMouseTo(100, 150, function () { - ok(!box.matches(":hover"), "Box shouldn't be hovered (since it's in a non-clickthrough iframe in a background window)"); - // Activate the left window. - changeFocusAndAwaitSyntheticMouse(function () { - ok(gIFrame.matches(":hover"), "iframe should be hovered"); - ok(box.matches(":hover"), "Box should be hovered"); - // De-activate the window (by activating the right window). - changeFocusAndAwaitSyntheticMouse(function () { - ok(!gIFrame.matches(":hover"), "iframe shouldn't be hovered"); - ok(!box.matches(":hover"), "Box shouldn't be hovered"); - // Re-activate it. - changeFocusAndAwaitSyntheticMouse(function () { - ok(gIFrame.matches(":hover"), "iframe should be hovered"); - ok(box.matches(":hover"), "Box should be hovered"); - // Unhover box and iframe by moving the mouse outside the window. - moveMouseTo(0, 150, function () { - const isOSXSnowLeopard = navigator.userAgent.indexOf("Mac OS X 10.6") != -1; - if (!isOSXSnowLeopard) { - ok(!gIFrame.matches(":hover"), "iframe shouldn't be hovered"); - ok(!box.matches(":hover"), "box shouldn't be hovered"); - } - finalize(); - }); - }, gLeftWindow, box); - }, gRightWindow, box); - }, gLeftWindow, box); - }); -} - -function finalize() { - gRightWindow.close(); - gLeftWindow.close(); - SimpleTest.finish(); -} - -SimpleTest.waitForExplicitFinish(); -SimpleTest.waitForFocus(openWindows); - -]]> -</script> - -</window> |