--HG--
extra : rebase_source : 9581cbad606a99cd89d975cb5ac4e5c207c855aa
This commit is contained in:
Karl Tomlinson 2011-07-08 11:06:54 +12:00
Родитель 1089ca4946
Коммит 309daf28f7
3 изменённых файлов: 126 добавлений и 0 удалений

Просмотреть файл

@ -81,6 +81,8 @@ _TEST_FILES = test_bug231389.html \
_CHROME_FILES = \
test_bug536567.html \
test_bug665540.html \
bug665540_window.xul \
$(NULL)
libs:: $(_TEST_FILES)

Просмотреть файл

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<window title="Test Select Dropdown Positioning in Fullscreen Window"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
sizemode="fullscreen">
<title><label>Test Select Dropdown Positioning in Fullscreen Window</label></title>
<script>
opener.SimpleTest.waitForFocus(opener.childFocused, window);
</script>
<body xmlns="http://www.w3.org/1999/xhtml">
<select id="select" style="-moz-appearance:none">
<option id="optiona">a</option>
<option>b</option>
</select>
</body>
</window>

Просмотреть файл

@ -0,0 +1,104 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=665540
-->
<head>
<title>Test for Bug 665540 Select dropdown position in fullscreen window</title>
<script type="application/javascript" src="chrome://mochikit/content/MochiKit/packed.js"></script>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
</head>
<body onload="openFullscreenWindow()">
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=665540">Mozilla Bug 665540</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 665540 **/
SimpleTest.waitForExplicitFinish();
var win;
var optiona;
var eventType = "mouseover";
var timeoutID;
var eventOffsetX = 2;
var eventOffsetY = 2;
function openFullscreenWindow() {
win = open("bug665540_window.xul", "_blank", "resizable=yes,chrome");
// Close our window if the test times out so that it doesn't interfere
// with later tests.
timeoutID = setTimeout(function () {
ok(false, "Test timed out.");
// Provide some time for a screenshot
setTimeout(finish, 1000);
}, 20000);
}
function childFocused() {
ok(win.fullScreen, "window should be fullscreen");
// bug 670026
((navigator.platform.indexOf("Mac") < 0) ? is : todo_is)
(win.windowState, win.STATE_FULLSCREEN,
"window state should be fullscreen");
// The select doesn't open if the mouse click is fired too soon
// (on X11 at least).
setTimeout(openSelect, 1000);
}
function openSelect() {
var select = win.document.getElementById("select");
synthesizeMouseAtCenter(select, {}, win);
// A yield was required on X11 tinderbox machines.
// (Wasn't required on other platforms nor on an X11 system with kwin.)
setTimeout(checkPosition, 1000);
}
function checkPosition() {
optiona = win.document.getElementById("optiona");
optiona.addEventListener(eventType, eventReceived, false);
// If the select dropdown is opened in the position where
// getBoundingClientRect() predicts, then optiona will receive the event.
// The event is received asynchronously (I don't know why), so the handler
// is removed later.
synthesizeMouse(optiona, eventOffsetX, eventOffsetY,
{ type: eventType }, win);
}
function eventReceived(event) {
clearTimeout(timeoutID);
optiona.removeEventListener(eventType, eventReceived, false);
var rect = optiona.getBoundingClientRect();
// Note that fullscreen only fully covers one monitor, so win.screenX can
// be non-zero.
is(event.screenX, win.screenX + rect.left + eventOffsetX,
"event.screenX should match sent event");
is(event.screenY, win.screenY + rect.top + eventOffsetY,
"event.screenY should match sent event");
finish();
}
function finish() {
// bug 670026
((navigator.platform.indexOf("Mac") < 0) ? is : todo_is)
(win.windowState, win.STATE_FULLSCREEN,
"window state should still be fullscreen");
win.close();
SimpleTest.finish();
}
</script>
</pre>
</body>
</html>