1 <!DOCTYPE HTML PUBLIC
"-//IETF//DTD HTML//EN">
4 <script src=
"../../resources/js-test.js"></script>
7 <p id=
"description"></p>
8 <div id=
"console"></div>
10 description('This tests that deselecting an option won't cause unnecessary scrolling.');
12 function mouseDownOnSelect(selId
, index
, modifier
) {
13 var sl
= document
.getElementById(selId
);
14 var itemHeight
= Math
.floor(sl
.offsetHeight
/ sl
.size
);
16 var y
= border
+ index
* itemHeight
- window
.pageYOffset
;
17 if (window
.eventSender
) {
18 eventSender
.mouseMoveTo(sl
.offsetLeft
+ border
, sl
.offsetTop
+ y
);
19 eventSender
.mouseDown(0, [modifier
]);
20 eventSender
.mouseUp(0, [modifier
]);
24 function selectionPattern(select
) {
26 for (var i
= 0; i
< select
.options
.length
; i
++)
27 result
+= select
.options
[i
].selected
? '1' : '0';
31 var parent
= document
.createElement('div');
32 parent
.innerHTML
= '<select id="sl" multiple="multiple" size="5">'
33 + '<option value="Accessibility">Accessibility</option>'
34 + '<option value="CSS">CSS</option>'
35 + '<option value="Drosera">Drosera</option>'
36 + '<option value="Evangelism">Evangelism</option>'
37 + '<option value="Forms">Forms</option>'
38 + '<option value="Frames">Frames</option>'
39 + '<option value="History">History</option>'
40 + '<option value="HTML DOM">HTML DOM</option>'
41 + '<option value="HTML Editing">HTML Editing</option>'
42 + '<option value="Images">Images</option>'
43 + '<option>SCROLL UP</option>'
45 document
.body
.appendChild(parent
);
47 var sl
= document
.getElementById('sl');
49 document
.execCommand("SelectAll");
50 sl
.scrollTop
= Math
.floor(sl
.offsetHeight
/ sl
.size
) * 4 + 6;
51 var scrollBeforeClick
= sl
.scrollTop
;
52 mouseDownOnSelect("sl", 3, "addSelectionKey");
53 shouldBe('sl.scrollTop', 'scrollBeforeClick');
54 shouldBe('selectionPattern(sl)', '"11111110111"');