Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(419)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/forms/listbox-selection.html

Issue 1509853008: Move select/option/optgroup-related tests in fast/forms to fast/forms/select. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <html>
3 <head>
4 <script src="../../resources/js-test.js"></script>
5 </head>
6 <body>
7 <div id="parent">
8 <select id="sl16" multiple size=5>
9 <option>a</option>
10 <option>b</option>
11 <option>c</option>
12 <option>d</option>
13 <option>e</option>
14 </select>
15 </div>
16 <p id="description"></p>
17 <div id="console"></div>
18 <script>
19 description('&lt;select&gt; selection test for mouse events and keyevents.');
20
21 function mouseMoveToOption(selId, index) {
22 if (!window.eventSender) {
23 console.log("Needs eventSender.");
24 return;
25 }
26 var sl = document.getElementById(selId);
27 var itemHeight = Math.floor(sl.offsetHeight / sl.size);
28 var border = 1;
29 var y = border + index * itemHeight;
30 eventSender.mouseMoveTo(sl.offsetLeft + border, sl.offsetTop + y - window.pa geYOffset);
31 }
32
33 function mouseClickOnSelect(selId, index, modifier) {
34 document.getElementById(selId).focus();
35 if (window.eventSender) {
36 mouseMoveToOption(selId, index);
37 eventSender.mouseDown(0, [modifier]);
38 eventSender.mouseUp(0, [modifier]);
39 }
40 }
41
42 function keyDownOnSelect(selId, identifier, modifier) {
43 document.getElementById(selId).focus();
44 if (window.eventSender)
45 eventSender.keyDown(identifier, [modifier]);
46 }
47
48 function createSelect(idName, sz, mlt, selIndex) {
49 var sl = document.createElement("select");
50 var i = 0;
51 sl.size = sz;
52 while (i < sz) {
53 var opt = document.createElement("option");
54 if (i == selIndex)
55 opt.selected = true;
56 opt.textContent = "item " + i;
57 sl.appendChild(opt);
58 i++;
59 }
60 sl.multiple = mlt;
61 sl.id = idName;
62 var parent = document.getElementById("parent");
63 parent.appendChild(sl);
64 }
65
66 function selectionPattern(selId) {
67 var sl = document.getElementById(selId);
68 var result = '';
69 for (var i = 0; i < sl.options.length; i++)
70 result += sl.options[i].selected ? '1' : '0';
71 return result;
72 }
73
74 createSelect("sl1", 5, false, -1);
75 createSelect("sl2", 5, false, 1);
76 createSelect("sl3", 5, false, -1);
77 createSelect("sl4", 5, false, 1);
78 createSelect("sl5", 5, false, 2);
79 createSelect("sl6", 5, false, 3);
80 createSelect("sl7", 5, false, 1);
81
82 createSelect("sl8", 5, true, -1);
83 createSelect("sl9", 5, true, 1);
84 createSelect("sl10", 5, true, -1);
85 createSelect("sl11", 5, true, 1);
86 createSelect("sl12", 5, true, 2);
87 createSelect("sl13", 5, true, 0);
88 createSelect("sl14", 5, true, 1);
89 createSelect("sl15", 5, true, 0);
90
91 debug("1) Select one item with mouse (no previous selection)");
92 mouseClickOnSelect("sl1", 0);
93 shouldBe('selectionPattern("sl1")', '"10000"');
94
95 debug("2) Select one item with mouse (with previous selection)");
96 mouseClickOnSelect("sl2", 0);
97 shouldBe('selectionPattern("sl2")', '"10000"');
98
99 debug("3) Select one item with the keyboard (no previous selection)");
100 keyDownOnSelect("sl3", "upArrow");
101 shouldBe('selectionPattern("sl3")', '"00001"');
102
103 debug("4) Select one item with the keyboard (with previous selection)");
104 keyDownOnSelect("sl4", "downArrow");
105 shouldBe('selectionPattern("sl4")', '"00100"');
106
107 debug("5) Attempt to select an item cmd-clicking");
108 mouseClickOnSelect("sl5", 1, "addSelectionKey");
109 shouldBe('selectionPattern("sl5")', '"01000"');
110
111 debug("6) Attempt to select a range shift-clicking");
112 mouseClickOnSelect("sl6", 1, "rangeSelectionKey");
113 shouldBe('selectionPattern("sl6")', '"01000"');
114
115 debug("7) Attempt to select a range with the keyboard");
116 keyDownOnSelect("sl7", "downArrow", "rangeSelectionKey");
117 shouldBe('selectionPattern("sl7")', '"00100"');
118
119 // Multiple selection tests
120
121 debug("8) Select one item with mouse (no previous selection)");
122 mouseClickOnSelect("sl8", 0);
123 shouldBe('selectionPattern("sl8")', '"10000"');
124
125 debug("9) Select one item with mouse (with previous selection)");
126 mouseClickOnSelect("sl9", 0);
127 shouldBe('selectionPattern("sl9")', '"10000"');
128
129 debug("10) Select one item with the keyboard (no previous selection)");
130 keyDownOnSelect("sl10", "upArrow");
131 shouldBe('selectionPattern("sl10")', '"00001"');
132
133 debug("11) Select one item with the keyboard (with previous selection)");
134 keyDownOnSelect("sl11", "downArrow");
135 shouldBe('selectionPattern("sl11")', '"00100"');
136
137 debug("12) Select an item cmd-clicking");
138 mouseClickOnSelect("sl12", 1, "addSelectionKey");
139 shouldBe('selectionPattern("sl12")', '"01100"');
140
141 debug("13) Select a range shift-clicking");
142 mouseClickOnSelect("sl13", 3, "rangeSelectionKey");
143 shouldBe('selectionPattern("sl13")', '"11110"');
144
145 debug("14) Select a range with the keyboard");
146 keyDownOnSelect("sl14", "downArrow", "rangeSelectionKey");
147 shouldBe('selectionPattern("sl14")', '"01100"');
148
149 debug("15) Drag upside-down");
150 mouseMoveToOption("sl15", 1);
151 eventSender.dragMode = false; // Avoid event delay in eventSender.
152 eventSender.mouseDown(0);
153 shouldBeEqualToString('selectionPattern("sl15")', "01000");
154 shouldBeEqualToString('mouseMoveToOption("sl15", 3); selectionPattern("sl15")', "01110");
155 shouldBeEqualToString('mouseMoveToOption("sl15", 2); selectionPattern("sl15")', "01100");
156 eventSender.mouseUp(0);
157
158 debug("16) Active-selection after type-ahead");
159 shouldBeEqualToString("mouseClickOnSelect('sl16', 1); selectionPattern('sl16')", "01000");
160 shouldBeEqualToString("keyDownOnSelect('sl16', 'e'); selectionPattern('sl16')", "00001");
161 shouldBeEqualToString("keyDownOnSelect('sl16', 'upArrow', 'rangeSelectionKey'); selectionPattern('sl16')", "00011");
162
163 document.getElementById("parent").remove();
164 </script>
165 </body>
166 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698