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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-key-operations.html

Issue 2537573003: Merge "SELECT element: Commit a provisional OPTION selection on blur." to M56 (Closed)
Patch Set: Created 4 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
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/fast/forms/select/select-disabled.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <script src="../../../resources/js-test.js"></script> 4 <script src="../../../resources/js-test.js"></script>
5 <script src="../resources/common.js"></script> 5 <script src="../resources/common.js"></script>
6 <script src="../resources/picker-common.js"></script> 6 <script src="../resources/picker-common.js"></script>
7 </head> 7 </head>
8 <body> 8 <body>
9 <select id="menu"> 9 <select id="menu">
10 <option>foo</option> 10 <option>foo</option>
(...skipping 12 matching lines...) Expand all
23 var menu = document.getElementById('menu'); 23 var menu = document.getElementById('menu');
24 var menu2 = document.getElementById('menu2'); 24 var menu2 = document.getElementById('menu2');
25 var picker = null; 25 var picker = null;
26 function openPickerErrorCallback() { 26 function openPickerErrorCallback() {
27 testFailed('picker didn\'t open') 27 testFailed('picker didn\'t open')
28 finishJSTest(); 28 finishJSTest();
29 } 29 }
30 openPicker(menu, test1, openPickerErrorCallback); 30 openPicker(menu, test1, openPickerErrorCallback);
31 31
32 function test1() { 32 function test1() {
33 debug('==> Arrow keys + Enter');
33 picker = window.internals.pagePopupWindow.global.picker; 34 picker = window.internals.pagePopupWindow.global.picker;
34 shouldBeEqualToString('picker._selectElement.value', '1'); 35 shouldBeEqualToString('picker._selectElement.value', '1');
35 shouldBeEqualToString('menu.value', 'bar'); 36 shouldBeEqualToString('menu.value', 'bar');
36 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); 37 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
37 38
38 eventSender.keyDown('ArrowDown'); 39 eventSender.keyDown('ArrowDown');
39 shouldBeEqualToString('picker._selectElement.value', '4'); 40 shouldBeEqualToString('picker._selectElement.value', '4');
40 shouldBeEqualToString('menu.value', 'bar'); 41 shouldBeEqualToString('menu.value', 'bar');
41 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); 42 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
42 43
(...skipping 21 matching lines...) Expand all
64 shouldBeNull('window.internals.pagePopupWindow'); 65 shouldBeNull('window.internals.pagePopupWindow');
65 shouldBeEqualToString('menu.value', 'foo'); 66 shouldBeEqualToString('menu.value', 'foo');
66 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); 67 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo');
67 68
68 waitUntilClosing(function() { 69 waitUntilClosing(function() {
69 openPicker(menu, test2, openPickerErrorCallback); 70 openPicker(menu, test2, openPickerErrorCallback);
70 }); 71 });
71 } 72 }
72 73
73 function test2() { 74 function test2() {
75 debug('==> Arrow keys + ESC');
74 picker = window.internals.pagePopupWindow.global.picker; 76 picker = window.internals.pagePopupWindow.global.picker;
75 shouldBeEqualToString('picker._selectElement.value', '0'); 77 shouldBeEqualToString('picker._selectElement.value', '0');
76 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); 78 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo');
77 79
78 eventSender.keyDown('ArrowDown'); 80 eventSender.keyDown('ArrowDown');
79 shouldBeEqualToString('picker._selectElement.value', '1'); 81 shouldBeEqualToString('picker._selectElement.value', '1');
80 shouldBeEqualToString('menu.value', 'foo'); 82 shouldBeEqualToString('menu.value', 'foo');
81 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); 83 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
82 84
83 // Escape should close the popup and select that keyboard selected item. 85 // Escape should close the popup and select that keyboard selected item.
84 eventSender.keyDown('Escape'); 86 eventSender.keyDown('Escape');
85 shouldBeNull('window.internals.pagePopupWindow'); 87 shouldBeNull('window.internals.pagePopupWindow');
86 shouldBeEqualToString('menu.value', 'bar'); 88 shouldBeEqualToString('menu.value', 'bar');
87 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); 89 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
88 90
89 waitUntilClosing(function() { 91 waitUntilClosing(function() {
90 openPicker(menu, test3, openPickerErrorCallback); 92 menu.value = 'foo';
93 openPicker(menu, testProvisionalSelectionAndBlur, openPickerErrorCallbac k);
91 }); 94 });
92 } 95 }
93 96
97 function testProvisionalSelectionAndBlur() {
98 debug('==> Arrow keys + blur');
99 picker = window.internals.pagePopupWindow.global.picker;
100 shouldBeEqualToString('picker._selectElement.value', '0');
101 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo');
102
103 eventSender.keyDown('ArrowDown');
104 shouldBeEqualToString('picker._selectElement.value', '1');
105 shouldBeEqualToString('menu.value', 'foo');
106 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
107
108 // Blur should close the popup and select the provisonal item.
109 menu.blur();
110 shouldBeNull('window.internals.pagePopupWindow');
111 shouldBeEqualToString('menu.value', 'bar');
112 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
113
114 openPicker(menu, test3, openPickerErrorCallback);
115 }
116
94 function test3() { 117 function test3() {
118 debug('==> Typeahead + ESC');
95 picker = window.internals.pagePopupWindow.global.picker; 119 picker = window.internals.pagePopupWindow.global.picker;
96 shouldBeEqualToString('picker._selectElement.value', '1'); 120 shouldBeEqualToString('picker._selectElement.value', '1');
97 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); 121 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
98 122
99 eventSender.keyDown('g'); 123 eventSender.keyDown('g');
100 shouldBeEqualToString('picker._selectElement.value', '4'); 124 shouldBeEqualToString('picker._selectElement.value', '4');
101 shouldBeEqualToString('menu.value', 'bar'); 125 shouldBeEqualToString('menu.value', 'bar');
102 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); 126 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
103 127
104 // Escape should close the popup and select that keyboard selected item. 128 // Escape should close the popup and select that keyboard selected item.
105 eventSender.keyDown('Escape'); 129 eventSender.keyDown('Escape');
106 shouldBeNull('window.internals.pagePopupWindow'); 130 shouldBeNull('window.internals.pagePopupWindow');
107 shouldBeEqualToString('menu.value', 'garply'); 131 shouldBeEqualToString('menu.value', 'garply');
108 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); 132 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
109 133
110 waitUntilClosing(function() { 134 waitUntilClosing(function() {
111 openPicker(menu, test4, openPickerErrorCallback); 135 openPicker(menu, test4, openPickerErrorCallback);
112 }); 136 });
113 } 137 }
114 138
115 function test4() { 139 function test4() {
140 debug('==> Hover + ESC');
116 picker = window.internals.pagePopupWindow.global.picker; 141 picker = window.internals.pagePopupWindow.global.picker;
117 shouldBeEqualToString('picker._selectElement.value', '4'); 142 shouldBeEqualToString('picker._selectElement.value', '4');
118 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); 143 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
119 144
120 hoverOverElement(picker._selectElement.children[0]); 145 hoverOverElement(picker._selectElement.children[0]);
121 shouldBeEqualToString('picker._selectElement.value', '0'); 146 shouldBeEqualToString('picker._selectElement.value', '0');
122 shouldBeEqualToString('menu.value', 'garply'); 147 shouldBeEqualToString('menu.value', 'garply');
123 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); 148 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
124 149
125 // Escape should close the popup. Simply hovering over an item should not se lect it. 150 // Escape should close the popup. Simply hovering over an item should not se lect it.
126 eventSender.keyDown('Escape'); 151 eventSender.keyDown('Escape');
127 shouldBeNull('window.internals.pagePopupWindow'); 152 shouldBeNull('window.internals.pagePopupWindow');
128 shouldBeEqualToString('menu.value', 'garply'); 153 shouldBeEqualToString('menu.value', 'garply');
129 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); 154 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
130 155
131 waitUntilClosing(function() { 156 waitUntilClosing(function() {
132 openPicker(menu, test5, openPickerErrorCallback); 157 openPicker(menu, test5, openPickerErrorCallback);
133 }); 158 });
134 } 159 }
135 160
136 function test5() { 161 function test5() {
162 debug('==> Hover + Invalid arrow + ESC');
137 picker = window.internals.pagePopupWindow.global.picker; 163 picker = window.internals.pagePopupWindow.global.picker;
138 shouldBeEqualToString('picker._selectElement.value', '4'); 164 shouldBeEqualToString('picker._selectElement.value', '4');
139 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); 165 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
140 166
141 hoverOverElement(picker._selectElement.children[0]); 167 hoverOverElement(picker._selectElement.children[0]);
142 shouldBeEqualToString('picker._selectElement.value', '0'); 168 shouldBeEqualToString('picker._selectElement.value', '0');
143 shouldBeEqualToString('menu.value', 'garply'); 169 shouldBeEqualToString('menu.value', 'garply');
144 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); 170 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
145 171
146 // ArrowLeft doesn't change the selection in the popup. So, 172 // ArrowLeft doesn't change the selection in the popup. So,
147 // selectMenuListText won't change. 173 // selectMenuListText won't change.
148 eventSender.keyDown('ArrowLeft'); 174 eventSender.keyDown('ArrowLeft');
149 shouldBeEqualToString('picker._selectElement.value', '0'); 175 shouldBeEqualToString('picker._selectElement.value', '0');
150 shouldBeEqualToString('menu.value', 'garply'); 176 shouldBeEqualToString('menu.value', 'garply');
151 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); 177 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
152 178
153 eventSender.keyDown('Escape'); 179 eventSender.keyDown('Escape');
154 shouldBeNull('window.internals.pagePopupWindow'); 180 shouldBeNull('window.internals.pagePopupWindow');
155 shouldBeEqualToString('menu.value', 'garply'); 181 shouldBeEqualToString('menu.value', 'garply');
156 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); 182 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
157 menu.selectedIndex = 0; 183 menu.selectedIndex = 0;
158 184
159 waitUntilClosing(function() { 185 waitUntilClosing(function() {
160 openPicker(menu, test6, openPickerErrorCallback); 186 openPicker(menu, test6, openPickerErrorCallback);
161 }); 187 });
162 } 188 }
163 189
164 function test6() { 190 function test6() {
191 debug('==> Arrow key + Click');
165 picker = window.internals.pagePopupWindow.global.picker; 192 picker = window.internals.pagePopupWindow.global.picker;
166 shouldBeEqualToString('picker._selectElement.value', '0'); 193 shouldBeEqualToString('picker._selectElement.value', '0');
167 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); 194 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo');
168 195
169 eventSender.keyDown('ArrowDown'); 196 eventSender.keyDown('ArrowDown');
170 shouldBeEqualToString('picker._selectElement.value', '1'); 197 shouldBeEqualToString('picker._selectElement.value', '1');
171 shouldBeEqualToString('menu.value', 'foo'); 198 shouldBeEqualToString('menu.value', 'foo');
172 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); 199 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
173 200
174 clickElement(picker._selectElement.children[0]); 201 clickElement(picker._selectElement.children[0]);
175 shouldBeNull('window.internals.pagePopupWindow'); 202 shouldBeNull('window.internals.pagePopupWindow');
176 shouldBeEqualToString('menu.value', 'foo'); 203 shouldBeEqualToString('menu.value', 'foo');
177 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); 204 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo');
178 205
179 waitUntilClosing(() => { 206 waitUntilClosing(() => {
180 menu2.selectedIndex = -1; 207 menu2.selectedIndex = -1;
181 openPicker(menu2, testEnterWithoutSelection, openPickerErrorCallback); 208 openPicker(menu2, testEnterWithoutSelection, openPickerErrorCallback);
182 }); 209 });
183 } 210 }
184 211
185 function testEnterWithoutSelection() { 212 function testEnterWithoutSelection() {
213 debug('==> Enter with no selected OPTION');
186 picker = window.internals.pagePopupWindow.global.picker; 214 picker = window.internals.pagePopupWindow.global.picker;
187 shouldBeEqualToString('picker._selectElement.value', ''); 215 shouldBeEqualToString('picker._selectElement.value', '');
188 eventSender.keyDown('Enter'); 216 eventSender.keyDown('Enter');
189 shouldBeNull('window.internals.pagePopupWindow'); 217 shouldBeNull('window.internals.pagePopupWindow');
190 shouldBeEqualToString('menu2.value', ''); 218 shouldBeEqualToString('menu2.value', '');
191 219
192 finishJSTest(); 220 finishJSTest();
193 } 221 }
194 </script> 222 </script>
195 </body> 223 </body>
196 </html> 224 </html>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/fast/forms/select/select-disabled.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698