зеркало из https://github.com/mozilla/gecko-dev.git
121 строка
5.8 KiB
HTML
121 строка
5.8 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=672810
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 672810</title>
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=672810">Mozilla Bug 672810</a>
|
|
<p id="display"></p>
|
|
<div id="content">
|
|
<select id="s1" multiple size="10"><option>x<option>x<option>x<option>x<option>x<option>x<option>x<option>x<option>x<option>x</select>
|
|
<select id="s2" size="10"><option>x<option>x<option>x<option>x<option>x<option>x<option>x<option>x<option>x<option>x</select>
|
|
<select id="s3" size="1"><option>x<option>x<option>x<option>x<option>x<option>x<option>x<option>x<option>x<option>x</select>
|
|
</div>
|
|
<pre id="test">
|
|
<script type="application/javascript">
|
|
|
|
/** Test for Bug 672810 **/
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
SimpleTest.waitForFocus(function() {
|
|
var sel = document.getElementsByTagName('select');
|
|
|
|
sel[0].addEventListener('focus', function() {
|
|
s = sel[0];
|
|
s.removeEventListener('focus', arguments.callee);
|
|
synthesizeKey('KEY_ArrowDown');
|
|
is(s.selectedIndex,0, s.id + ": initial DOWN selects first option");
|
|
synthesizeKey('KEY_ArrowDown', {ctrlKey: true});
|
|
is(s.selectedIndex,0, s.id + ": first option is still selected");
|
|
ok(!s[1].selected,s.id + ": CTRL+DOWN did not select 2nd option");
|
|
synthesizeKey('KEY_ArrowDown', {ctrlKey: true});
|
|
synthesizeKey('KEY_ArrowDown', {ctrlKey: true, shiftKey: true});
|
|
is(s.selectedIndex,0, s.id + ": first option is still selected");
|
|
ok(!s[1].selected,s.id + ": 2nd option is still unselected");
|
|
ok(s[2].selected,s.id + ": 3rd option is selected");
|
|
ok(s[3].selected,s.id + ": 4th option is selected");
|
|
ok(!s[4].selected,s.id + ": 5th option is unselected");
|
|
synthesizeKey('KEY_ArrowDown', {ctrlKey: true, shiftKey: true});
|
|
is(s.selectedIndex,0, s.id + ": first option is still selected");
|
|
ok(!s[1].selected,s.id + ": 2nd option is still unselected");
|
|
ok(s[2].selected,s.id + ": 3rd option is still selected");
|
|
ok(s[3].selected,s.id + ": 4th option is still selected");
|
|
ok(s[4].selected,s.id + ": 5th option is selected");
|
|
ok(!s[5].selected,s.id + ": 6th option is unselected");
|
|
synthesizeKey('KEY_ArrowUp', {ctrlKey: true, shiftKey: true});
|
|
is(s.selectedIndex,0, s.id + ": first option is still selected");
|
|
ok(!s[1].selected,s.id + ": 2nd option is still unselected");
|
|
ok(s[2].selected,s.id + ": 3rd option is still selected");
|
|
ok(s[3].selected,s.id + ": 4th option is still selected");
|
|
ok(s[4].selected,s.id + ": 5th option is still selected");
|
|
ok(!s[5].selected,s.id + ": 6th option is still unselected");
|
|
synthesizeKey(' ', {ctrlKey: true, shiftKey: true});
|
|
is(s.selectedIndex,0, s.id + ": first option is still selected");
|
|
ok(!s[1].selected,s.id + ": 2nd option is still unselected");
|
|
ok(s[2].selected,s.id + ": 3rd option is still selected");
|
|
ok(!s[3].selected,s.id + ": 4th option is unselected");
|
|
ok(s[4].selected,s.id + ": 5th option is still selected");
|
|
ok(!s[5].selected,s.id + ": 6th option is still unselected");
|
|
synthesizeKey(' ', {ctrlKey: true, shiftKey: true});
|
|
is(s.selectedIndex,0, s.id + ": first option is still selected");
|
|
ok(!s[1].selected,s.id + ": 2nd option is still unselected");
|
|
ok(s[2].selected,s.id + ": 3rd option is still selected");
|
|
ok(s[3].selected,s.id + ": 4th option is selected");
|
|
ok(s[4].selected,s.id + ": 5th option is still selected");
|
|
ok(!s[5].selected,s.id + ": 6th option is still unselected");
|
|
setTimeout(function(){sel[1].focus()},0);
|
|
});
|
|
sel[1].addEventListener('focus', function() {
|
|
s = sel[1];
|
|
s.removeEventListener('focus', arguments.callee);
|
|
synthesizeKey('KEY_ArrowDown');
|
|
is(s.selectedIndex,0, s.id + ": initial DOWN selects first option");
|
|
synthesizeKey('KEY_ArrowDown', {ctrlKey: true});
|
|
is(s.selectedIndex,1, s.id + ": 2nd option is selected");
|
|
ok(!s[0].selected,s.id + ": CTRL+DOWN deselected first option");
|
|
synthesizeKey('KEY_ArrowDown', {ctrlKey: true});
|
|
synthesizeKey('KEY_ArrowDown', {ctrlKey: true, shiftKey: true});
|
|
is(s.selectedIndex,3, s.id + ": 4th option is selected");
|
|
ok(!s[1].selected,s.id + ": CTRL+SHIFT+DOWN deselected 2nd option");
|
|
synthesizeKey(' ', {ctrlKey: true, shiftKey: true});
|
|
is(s.selectedIndex,3, s.id + ": 4th option is still selected");
|
|
synthesizeKey(' ', {ctrlKey: true, shiftKey: true});
|
|
is(s.selectedIndex,3, s.id + ": 4th option is still selected");
|
|
setTimeout(function(){sel[2].focus()},0);
|
|
});
|
|
sel[2].addEventListener('focus', function() {
|
|
if (!navigator.platform.includes("Mac")) {
|
|
s = sel[2];
|
|
s.removeEventListener('focus', arguments.callee);
|
|
synthesizeKey('KEY_ArrowDown');
|
|
is(s.selectedIndex,1, s.id + ": initial DOWN selects 2nd option");
|
|
synthesizeKey('KEY_ArrowDown', {ctrlKey: true});
|
|
is(s.selectedIndex,2, s.id + ": 3rd option is selected");
|
|
ok(!s[1].selected,s.id + ": CTRL+DOWN deselected 2nd option");
|
|
synthesizeKey('KEY_ArrowDown', {ctrlKey: true, shiftKey: true});
|
|
is(s.selectedIndex,3, s.id + ": 4th option is selected");
|
|
ok(!s[2].selected,s.id + ": CTRL+SHIFT+DOWN deselected 3rd option");
|
|
synthesizeKey(' ', {ctrlKey: true, shiftKey: true});
|
|
is(s.selectedIndex,3, s.id + ": 4th option is still selected");
|
|
synthesizeKey(' ', {ctrlKey: true, shiftKey: true});
|
|
is(s.selectedIndex,3, s.id + ": 4th option is still selected");
|
|
} else {
|
|
todo(false, "Make this test work on OSX");
|
|
}
|
|
setTimeout(function(){SimpleTest.finish()},0);
|
|
});
|
|
sel[0].focus();
|
|
});
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|