mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 01:35:35 +00:00
5ce533edb5
Differential Revision: https://phabricator.services.mozilla.com/D53047 --HG-- rename : widget/cocoa/crashtests/444260-1.xul => widget/cocoa/crashtests/444260-1.xhtml rename : widget/tests/bug586713_window.xul => widget/tests/bug586713_window.xhtml rename : widget/tests/chrome_context_menus_win.xul => widget/tests/chrome_context_menus_win.xhtml rename : widget/tests/empty_window.xul => widget/tests/empty_window.xhtml rename : widget/tests/native_menus_window.xul => widget/tests/native_menus_window.xhtml rename : widget/tests/native_mouse_mac_window.xul => widget/tests/native_mouse_mac_window.xhtml rename : widget/tests/standalone_native_menu_window.xul => widget/tests/standalone_native_menu_window.xhtml rename : widget/tests/system_font_changes.xul => widget/tests/system_font_changes.xhtml rename : widget/tests/taskbar_previews.xul => widget/tests/taskbar_previews.xhtml rename : widget/tests/test_bug1123480.xul => widget/tests/test_bug1123480.xhtml rename : widget/tests/test_bug343416.xul => widget/tests/test_bug343416.xhtml rename : widget/tests/test_bug428405.xul => widget/tests/test_bug428405.xhtml rename : widget/tests/test_bug429954.xul => widget/tests/test_bug429954.xhtml rename : widget/tests/test_bug444800.xul => widget/tests/test_bug444800.xhtml rename : widget/tests/test_bug466599.xul => widget/tests/test_bug466599.xhtml rename : widget/tests/test_bug478536.xul => widget/tests/test_bug478536.xhtml rename : widget/tests/test_bug485118.xul => widget/tests/test_bug485118.xhtml rename : widget/tests/test_bug517396.xul => widget/tests/test_bug517396.xhtml rename : widget/tests/test_bug522217.xul => widget/tests/test_bug522217.xhtml rename : widget/tests/test_bug538242.xul => widget/tests/test_bug538242.xhtml rename : widget/tests/test_bug586713.xul => widget/tests/test_bug586713.xhtml rename : widget/tests/test_bug593307.xul => widget/tests/test_bug593307.xhtml rename : widget/tests/test_bug596600.xul => widget/tests/test_bug596600.xhtml rename : widget/tests/test_bug673301.xul => widget/tests/test_bug673301.xhtml rename : widget/tests/test_bug760802.xul => widget/tests/test_bug760802.xhtml rename : widget/tests/test_chrome_context_menus_win.xul => widget/tests/test_chrome_context_menus_win.xhtml rename : widget/tests/test_clipboard.xul => widget/tests/test_clipboard.xhtml rename : widget/tests/test_composition_text_querycontent.xul => widget/tests/test_composition_text_querycontent.xhtml rename : widget/tests/test_input_events_on_deactive_window.xul => widget/tests/test_input_events_on_deactive_window.xhtml rename : widget/tests/test_key_event_counts.xul => widget/tests/test_key_event_counts.xhtml rename : widget/tests/test_keycodes.xul => widget/tests/test_keycodes.xhtml rename : widget/tests/test_mouse_scroll.xul => widget/tests/test_mouse_scroll.xhtml rename : widget/tests/test_native_menus.xul => widget/tests/test_native_menus.xhtml rename : widget/tests/test_native_mouse_mac.xul => widget/tests/test_native_mouse_mac.xhtml rename : widget/tests/test_panel_mouse_coords.xul => widget/tests/test_panel_mouse_coords.xhtml rename : widget/tests/test_platform_colors.xul => widget/tests/test_platform_colors.xhtml rename : widget/tests/test_position_on_resize.xul => widget/tests/test_position_on_resize.xhtml rename : widget/tests/test_sizemode_events.xul => widget/tests/test_sizemode_events.xhtml rename : widget/tests/test_standalone_native_menu.xul => widget/tests/test_standalone_native_menu.xhtml rename : widget/tests/test_system_font_changes.xul => widget/tests/test_system_font_changes.xhtml rename : widget/tests/test_system_status_bar.xul => widget/tests/test_system_status_bar.xhtml rename : widget/tests/test_taskbar_progress.xul => widget/tests/test_taskbar_progress.xhtml rename : widget/tests/test_transferable_overflow.xul => widget/tests/test_transferable_overflow.xhtml rename : widget/tests/test_wheeltransaction.xul => widget/tests/test_wheeltransaction.xhtml rename : widget/tests/window_bug429954.xul => widget/tests/window_bug429954.xhtml rename : widget/tests/window_bug478536.xul => widget/tests/window_bug478536.xhtml rename : widget/tests/window_bug522217.xul => widget/tests/window_bug522217.xhtml rename : widget/tests/window_bug538242.xul => widget/tests/window_bug538242.xhtml rename : widget/tests/window_bug593307_centerscreen.xul => widget/tests/window_bug593307_centerscreen.xhtml rename : widget/tests/window_bug593307_offscreen.xul => widget/tests/window_bug593307_offscreen.xhtml rename : widget/tests/window_composition_text_querycontent.xul => widget/tests/window_composition_text_querycontent.xhtml rename : widget/tests/window_state_windows.xul => widget/tests/window_state_windows.xhtml rename : widget/tests/window_wheeltransaction.xul => widget/tests/window_wheeltransaction.xhtml extra : moz-landing-system : lando
173 lines
6.6 KiB
HTML
173 lines
6.6 KiB
HTML
<?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 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, gBrowserElement;
|
|
var gExpectedEvents = [];
|
|
|
|
function moveMouseTo(x, y, andThen) {
|
|
var utils = gLeftWindow.windowUtils;
|
|
utils.sendNativeMouseEvent(x, y, NSMouseMoved, 0, gLeftWindow.documentElement);
|
|
SimpleTest.executeSoon(andThen);
|
|
}
|
|
|
|
function openWindows() {
|
|
gLeftWindow = window.docShell.rootTreeItem.domWindow
|
|
.open('empty_window.xhtml', '_blank', 'chrome,screenX=50,screenY=50,width=200,height=200');
|
|
SimpleTest.waitForFocus(function () {
|
|
gRightWindow = window.docShell.rootTreeItem.domWindow
|
|
.open('empty_window.xhtml', '', 'chrome,screenX=300,screenY=50,width=200,height=200');
|
|
SimpleTest.waitForFocus(attachBrowserToLeftWindow, gRightWindow);
|
|
}, gLeftWindow);
|
|
}
|
|
|
|
function attachBrowserToLeftWindow() {
|
|
gBrowserElement = gLeftWindow.document.createXULElement("browser");
|
|
gBrowserElement.setAttribute("type", "content");
|
|
gBrowserElement.setAttribute("src", "file_bug596600.html");
|
|
gBrowserElement.style.width = "100px";
|
|
gBrowserElement.style.height = "100px";
|
|
gBrowserElement.style.margin = "50px";
|
|
gLeftWindow.document.documentElement.appendChild(gBrowserElement);
|
|
gBrowserElement.addEventListener("load", function (e) {
|
|
test1();
|
|
}, { capture: true, once: true });
|
|
}
|
|
|
|
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 browser
|
|
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 browser cover the whole window.
|
|
gBrowserElement.style.margin = "0";
|
|
gBrowserElement.style.width = gBrowserElement.style.height = "200px";
|
|
|
|
// Add a box to the browser at the left edge.
|
|
var doc = gBrowserElement.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 browser 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 browser in a background window)");
|
|
// Activate the left window.
|
|
changeFocusAndAwaitSyntheticMouse(function () {
|
|
ok(gBrowserElement.matches(":hover"), "browser should be hovered");
|
|
ok(box.matches(":hover"), "Box should be hovered");
|
|
// De-activate the window (by activating the right window).
|
|
changeFocusAndAwaitSyntheticMouse(function () {
|
|
ok(!gBrowserElement.matches(":hover"), "browser shouldn't be hovered");
|
|
ok(!box.matches(":hover"), "Box shouldn't be hovered");
|
|
// Re-activate it.
|
|
changeFocusAndAwaitSyntheticMouse(function () {
|
|
ok(gBrowserElement.matches(":hover"), "browser should be hovered");
|
|
ok(box.matches(":hover"), "Box should be hovered");
|
|
// Unhover box and browser by moving the mouse outside the window.
|
|
moveMouseTo(0, 150, function () {
|
|
ok(!gBrowserElement.matches(":hover"), "browser 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>
|