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

Side by Side Diff: chrome/test/data/webui/md_bookmarks/md_bookmarks_focus_test.js

Issue 2885723002: [MD Bookmarks] Add keyboard navigation and selection to bookmark list. (Closed)
Patch Set: Created 3 years, 7 months 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
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Tests for MD Bookmarks which are run as interactive ui tests. 6 * @fileoverview Tests for MD Bookmarks which are run as interactive ui tests.
7 * Should be used for tests which care about focus. 7 * Should be used for tests which care about focus.
8 */ 8 */
9 9
10 var ROOT_PATH = '../../../../../'; 10 var ROOT_PATH = '../../../../../';
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 bookmarks.actions.changeFolderOpen('2', true), store.lastAction); 173 bookmarks.actions.changeFolderOpen('2', true), store.lastAction);
174 174
175 keydown('2', 'ArrowRight'); 175 keydown('2', 'ArrowRight');
176 assertDeepEquals( 176 assertDeepEquals(
177 bookmarks.actions.changeFolderOpen('2', false), store.lastAction); 177 bookmarks.actions.changeFolderOpen('2', false), store.lastAction);
178 178
179 document.body.style.direction = 'ltr'; 179 document.body.style.direction = 'ltr';
180 }); 180 });
181 }); 181 });
182 182
183 suite('<bookmarks-list>', function() {
184 var list;
185 var store;
186 var items;
187 var multiKey = cr.isMac ? 'meta' : 'ctrl';
188
189 function keydown(item, key, modifiers) {
190 MockInteractions.keyDownOn(item, '', modifiers, key);
191 }
192
193 setup(function() {
194 store = new bookmarks.TestStore({
195 nodes: testTree(createFolder(
196 '1',
197 [
198 createItem('2'),
199 createItem('3'),
200 createItem('4'),
201 createItem('5'),
202 createItem('6'),
203 createFolder('7', []),
204 ])),
205 selectedFolder: '1',
206 });
207 store.setReducersEnabled(true);
208 bookmarks.Store.instance_ = store;
209
210 list = document.createElement('bookmarks-list');
211 list.style.height = '100%';
212 list.style.width = '100%';
213 list.style.position = 'absolute';
214 replaceBody(list);
215 Polymer.dom.flush();
216 items = list.root.querySelectorAll('bookmarks-item');
217 });
218
219 test('simple keyboard selection', function() {
220 var focusedItem = items[0];
221 assertEquals('0', focusedItem.getAttribute('tabindex'));
222 assertEquals(
223 '0', focusedItem.$$('.more-vert-button').getAttribute('tabindex'));
224 focusedItem.focus();
225
226 keydown(focusedItem, 'ArrowDown');
227 focusedItem = items[1];
228 assertEquals('0', focusedItem.getAttribute('tabindex'));
229 assertEquals(
230 '0', focusedItem.$$('.more-vert-button').getAttribute('tabindex'));
231 assertDeepEquals(['3'], normalizeSet(store.data.selection.items));
232
233 keydown(focusedItem, 'ArrowUp');
234 focusedItem = items[0];
235 assertEquals('0', focusedItem.getAttribute('tabindex'));
236 assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
237
238 keydown(focusedItem, 'End');
239 focusedItem = items[5];
240 assertDeepEquals(['7'], normalizeSet(store.data.selection.items));
241
242 keydown(focusedItem, 'Home');
243 focusedItem = items[0];
244 assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
245
246 keydown(focusedItem, 'Escape');
247 assertDeepEquals([], normalizeSet(store.data.selection.items));
248
249 keydown(focusedItem, 'a', 'ctrl');
250 assertDeepEquals(
251 ['2', '3', '4', '5', '6', '7'],
252 normalizeSet(store.data.selection.items));
253 });
254
255 test('shift selection', function() {
256 // TODO(calamity): Make the first item the anchor index when a new folder
257 // is selected.
258 var focusedItem = items[0];
259 focusedItem.focus();
260
261 keydown(focusedItem, 'ArrowDown');
262 focusedItem = items[1];
263 assertDeepEquals(['3'], normalizeSet(store.data.selection.items));
264
265 keydown(focusedItem, 'ArrowUp', 'shift');
266 focusedItem = items[0];
267 assertDeepEquals(['2', '3'], normalizeSet(store.data.selection.items));
268
269 keydown(focusedItem, 'ArrowDown', 'shift');
270 focusedItem = items[1];
271 assertDeepEquals(['3'], normalizeSet(store.data.selection.items));
272
273 keydown(focusedItem, 'ArrowDown', 'shift');
274 focusedItem = items[2];
275 assertDeepEquals(['3', '4'], normalizeSet(store.data.selection.items));
276
277 keydown(focusedItem, 'End', 'shift');
278 focusedItem = items[2];
279 assertDeepEquals(
280 ['3', '4', '5', '6', '7'], normalizeSet(store.data.selection.items));
281
282 keydown(focusedItem, 'Home', 'shift');
283 focusedItem = items[2];
284 assertDeepEquals(['2', '3'], normalizeSet(store.data.selection.items));
285 });
286
287 test('ctrl selection', function() {
288 var focusedItem = items[0];
289 focusedItem.focus();
290
291 keydown(focusedItem, ' ', 'ctrl');
292 assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
293
294 keydown(focusedItem, 'ArrowDown', 'ctrl');
295 focusedItem = items[1];
296 assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
tsergeant 2017/05/22 05:19:00 Should you be checking that the anchor changes her
calamity 2017/05/23 05:27:29 Done.
297
298 keydown(focusedItem, 'ArrowDown', 'ctrl');
299 focusedItem = items[2];
300 assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
301
302 keydown(focusedItem, ' ', 'ctrl');
303 assertDeepEquals(['2', '4'], normalizeSet(store.data.selection.items));
304
305 keydown(focusedItem, ' ', 'ctrl');
306 assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
307 });
308
309 test('ctrl+shift selection', function() {
310 var focusedItem = items[0];
311 focusedItem.focus();
312
313 keydown(focusedItem, ' ', 'ctrl');
314 assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
315
316 keydown(focusedItem, 'ArrowDown', 'ctrl');
317 focusedItem = items[1];
318 assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
319
320 keydown(focusedItem, 'ArrowDown', 'ctrl');
321 focusedItem = items[2];
322 assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
323
324 keydown(focusedItem, 'ArrowDown', ['ctrl', 'shift']);
325 focusedItem = items[3];
326 assertDeepEquals(
327 ['2', '4', '5'], normalizeSet(store.data.selection.items));
328
329 keydown(focusedItem, 'ArrowDown', ['ctrl', 'shift']);
330 focusedItem = items[3];
331 assertDeepEquals(
332 ['2', '4', '5', '6'], normalizeSet(store.data.selection.items));
333 });
334 });
335
183 mocha.run(); 336 mocha.run();
184 }); 337 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/md_bookmarks/reducers.js ('k') | chrome/test/data/webui/md_bookmarks/reducers_test.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698