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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/forms/listbox-onchange.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 <html>
2 <head>
3 <script>
4 function setup()
5 {
6 var results = document.createElement('div');
7 results.id = "res";
8 results.appendChild(document.createTextNode("Results:"));
9 document.body.appendChild(results);
10 }
11 function checkSelection(expected)
12 {
13 actual = getSelectedOptions("sl1");
14 if (actual.toString() != expected)
15 log('Incorrect selection: "' + actual + '" instead of "' + e xpected + '"');
16 }
17 function test()
18 {
19 setup();
20
21 if (window.testRunner) {
22 testRunner.dumpAsText();
23 testRunner.waitUntilDone();
24 }
25
26 checkSelection("0");
27
28 log("1) Make sure onChange doesn't fire when clicking on an init ially selected item");
29 mouseDownOnSelect("sl1", 0, false, false);
30 mouseUpOnSelect("sl1", 0, false, false);
31 checkSelection("0");
32
33 log("2) Make sure onChange fires when deselecting an initially s elected item");
34 mouseDownOnSelect("sl1", 0, false, true);
35 mouseUpOnSelect("sl1", 0, false, true);
36 checkSelection("");
37
38 log("3) Make sure onChange fires when clicking");
39 mouseDownOnSelect("sl1", 2, false, false);
40 mouseUpOnSelect("sl1", 2, false, false);
41 checkSelection("2");
42
43 log("4) Make sure onChange doesn't fire when clicking again on t he same item");
44 mouseDownOnSelect("sl1", 2, false, false);
45 mouseUpOnSelect("sl1", 2, false, false);
46 checkSelection("2");
47
48 log("5) Make sure onChange fires when clicking on a new item");
49 mouseDownOnSelect("sl1", 0, false, false);
50 mouseUpOnSelect("sl1", 0, false, false);
51 checkSelection("0");
52
53 log("6) Make sure onChange fires when changing the selection wit h the keyboard");
54 keyDownOnSelect("sl1", "downArrow", true, false);
55 checkSelection("0,1");
56
57 log("7) Make sure onChange doesn't fire when setting the select element's value from JS");
58 document.getElementById("sl1").value = "2";
59 checkSelection("2");
60
61 log("8) Make sure onChange doesn't fire when clicking on the alr eady selected option");
62 mouseDownOnSelect("sl1", 2, false, false);
63 mouseUpOnSelect("sl1", 2, false, false);
64 checkSelection("2");
65
66 log("9) Make sure onChange doesn't fire when setting an option's selected state from JS");
67 document.getElementById("sl1").item(3).selected = true;
68 checkSelection("2,3");
69 document.getElementById("sl1").item(2).selected = false;
70 checkSelection("3");
71
72 log("10) Make sure onChange doesn't fire when clicking on this o ption");
73 mouseDownOnSelect("sl1", 3, false, false);
74 mouseUpOnSelect("sl1", 3, false, false);
75 checkSelection("3");
76
77 log("11) Make sure onChange fires when deselecting the last sele cted option with a mouse click");
78 mouseDownOnSelect("sl1", 3, false, true);
79 mouseUpOnSelect("sl1", 3, false, true);
80 checkSelection("");
81
82 log("12) Make sure onChange doesn't fire when adding a new selec ted option");
83 option = document.createElement("option");
84 option.setAttribute("selected", "");
85 option.appendChild(document.createTextNode("item 4"));
86 document.getElementById("sl1").appendChild(option);
87 checkSelection("4");
88
89 log("13) Make sure onChange doesn't fire when clicking on it");
90 mouseDownOnSelect("sl1", 4, false, false);
91 mouseUpOnSelect("sl1", 4, false, false);
92 checkSelection("4");
93
94 log("14) Make sure onChange fires when clicking on a previously selected option");
95 mouseDownOnSelect("sl1", 3, false, true);
96 mouseUpOnSelect("sl1", 3, false, true);
97 checkSelection("3,4");
98
99 log("15) Make sure onChange doesn't fire when removing a selecte d option");
100 document.getElementById("sl1").removeChild(document.getElementBy Id("sl1").item(4));
101 checkSelection("3");
102
103 log("16) Make sure onChange doesn't fire when clicking on the op tion that remains selected");
104 mouseDownOnSelect("sl1", 3, false, false);
105 mouseUpOnSelect("sl1", 3, false, false);
106 checkSelection("3");
107
108 log("17) Make sure onChange fires when typing the name of an opt ion");
109 option = document.createElement("option");
110 option.appendChild(document.createTextNode("keyboard test"));
111 document.getElementById("sl1").appendChild(option);
112 keyDownOnSelect("sl1", "K", false, false);
113 checkSelection("4");
114
115 log("18) Make sure onChange doesn't fire when leaving the select ");
116 document.getElementById("sl1").blur();
117 checkSelection("4");
118
119 if (window.testRunner)
120 testRunner.notifyDone();
121 }
122
123 function buildModifiers(shift, metaOrCtrl) {
124 modifiers = [];
125 if (shift)
126 modifiers.push("shiftKey");
127 if (metaOrCtrl)
128 modifiers.push("addSelectionKey");
129 return modifiers;
130 }
131
132 function mouseDownOnSelect(selId, index, shift, metaOrCtrl)
133 {
134 modifiers = buildModifiers(shift, metaOrCtrl);
135 var sl = document.getElementById(selId);
136 var rect = sl.options[index].getBoundingClientRect();
137 if (window.eventSender) {
138 eventSender.mouseMoveTo(rect.left + 1, rect.top + 1);
139 eventSender.mouseDown(0, modifiers);
140 } else {
141 testFailed("This test requires window.eventSender.");
142 }
143 }
144
145 function mouseUpOnSelect(selId, index, shift, metaOrCtrl)
146 {
147 modifiers = buildModifiers(shift, metaOrCtrl);
148 var sl = document.getElementById(selId);
149 var rect = sl.options[index].getBoundingClientRect();
150 if (window.eventSender) {
151 eventSender.mouseMoveTo(rect.left + 1, rect.top + 1);
152 eventSender.mouseUp(0, modifiers);
153 } else {
154 testFailed("This test requires window.eventSender.");
155 }
156 }
157
158 function keyDownOnSelect(selId, identifier, shift, metaOrCtrl)
159 {
160 modifiers = buildModifiers(shift, metaOrCtrl);
161 document.getElementById(selId).focus();
162 if (window.eventSender) {
163 eventSender.keyDown(identifier, modifiers);
164 } else {
165 testFailed("This test requires window.eventSender.");
166 }
167 }
168
169 function getSelectedOptions(selId)
170 {
171 result = new Array;
172 var sl = document.getElementById(selId);
173 for (i = 0; i < sl.options.length; ++i)
174 if (sl.item(i).selected)
175 result.push(i);
176 return result;
177 }
178
179 function log(msg)
180 {
181 var r = document.getElementById('res');
182 r.innerHTML = r.innerHTML + "<br>" + msg;
183 }
184 </script>
185 </head>
186 <body onload="test()">
187 <select id="sl1" size=5 multiple onchange="log('onChange fired')">
188 <option selected value="0">item 0</option>
189 <option value="1">item 1
190 <option value="2">item 2
191 <option value="3">item 3
192 </select>
193 </body>
194 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698