| OLD | NEW |
| 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 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 keydown('2', 'Delete'); | 195 keydown('2', 'Delete'); |
| 196 | 196 |
| 197 commandManager.assertLastCommand(Command.DELETE, ['2']); | 197 commandManager.assertLastCommand(Command.DELETE, ['2']); |
| 198 }); | 198 }); |
| 199 }); | 199 }); |
| 200 | 200 |
| 201 suite('<bookmarks-list>', function() { | 201 suite('<bookmarks-list>', function() { |
| 202 var list; | 202 var list; |
| 203 var store; | 203 var store; |
| 204 var items; | 204 var items; |
| 205 var commandManager; |
| 205 var multiKey = cr.isMac ? 'meta' : 'ctrl'; | 206 var multiKey = cr.isMac ? 'meta' : 'ctrl'; |
| 206 | 207 |
| 207 function keydown(item, key, modifiers) { | 208 function keydown(item, key, modifiers) { |
| 208 MockInteractions.keyDownOn(item, '', modifiers, key); | 209 MockInteractions.keyDownOn(item, '', modifiers, key); |
| 209 } | 210 } |
| 210 | 211 |
| 211 setup(function() { | 212 setup(function() { |
| 212 store = new bookmarks.TestStore({ | 213 store = new bookmarks.TestStore({ |
| 213 nodes: testTree(createFolder( | 214 nodes: testTree(createFolder( |
| 214 '1', | 215 '1', |
| (...skipping 10 matching lines...) Expand all Loading... |
| 225 store.setReducersEnabled(true); | 226 store.setReducersEnabled(true); |
| 226 store.replaceSingleton(); | 227 store.replaceSingleton(); |
| 227 | 228 |
| 228 list = document.createElement('bookmarks-list'); | 229 list = document.createElement('bookmarks-list'); |
| 229 list.style.height = '100%'; | 230 list.style.height = '100%'; |
| 230 list.style.width = '100%'; | 231 list.style.width = '100%'; |
| 231 list.style.position = 'absolute'; | 232 list.style.position = 'absolute'; |
| 232 replaceBody(list); | 233 replaceBody(list); |
| 233 Polymer.dom.flush(); | 234 Polymer.dom.flush(); |
| 234 items = list.root.querySelectorAll('bookmarks-item'); | 235 items = list.root.querySelectorAll('bookmarks-item'); |
| 236 |
| 237 commandManager = new TestCommandManager(); |
| 238 document.body.appendChild(commandManager); |
| 235 }); | 239 }); |
| 236 | 240 |
| 237 test('simple keyboard selection', function() { | 241 test('simple keyboard selection', function() { |
| 238 var focusedItem = items[0]; | 242 var focusedItem = items[0]; |
| 239 assertEquals('0', focusedItem.getAttribute('tabindex')); | 243 assertEquals('0', focusedItem.getAttribute('tabindex')); |
| 240 assertEquals( | 244 assertEquals( |
| 241 '0', focusedItem.$$('.more-vert-button').getAttribute('tabindex')); | 245 '0', focusedItem.$$('.more-vert-button').getAttribute('tabindex')); |
| 242 focusedItem.focus(); | 246 focusedItem.focus(); |
| 243 | 247 |
| 244 keydown(focusedItem, 'ArrowDown'); | 248 keydown(focusedItem, 'ArrowDown'); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 269 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | 273 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); |
| 270 | 274 |
| 271 // Moving past the start of the list is a no-op. | 275 // Moving past the start of the list is a no-op. |
| 272 keydown(focusedItem, 'ArrowUp'); | 276 keydown(focusedItem, 'ArrowUp'); |
| 273 assertEquals('0', focusedItem.getAttribute('tabindex')); | 277 assertEquals('0', focusedItem.getAttribute('tabindex')); |
| 274 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | 278 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); |
| 275 | 279 |
| 276 keydown(focusedItem, 'Escape'); | 280 keydown(focusedItem, 'Escape'); |
| 277 assertDeepEquals([], normalizeSet(store.data.selection.items)); | 281 assertDeepEquals([], normalizeSet(store.data.selection.items)); |
| 278 | 282 |
| 279 keydown(focusedItem, 'a', 'ctrl'); | 283 keydown(focusedItem, 'a', multiKey); |
| 280 assertDeepEquals( | 284 assertDeepEquals( |
| 281 ['2', '3', '4', '5', '6', '7'], | 285 ['2', '3', '4', '5', '6', '7'], |
| 282 normalizeSet(store.data.selection.items)); | 286 normalizeSet(store.data.selection.items)); |
| 283 }); | 287 }); |
| 284 | 288 |
| 285 test('shift selection', function() { | 289 test('shift selection', function() { |
| 286 var focusedItem = items[0]; | 290 var focusedItem = items[0]; |
| 287 focusedItem.focus(); | 291 focusedItem.focus(); |
| 288 | 292 |
| 289 keydown(focusedItem, 'ArrowDown', 'shift'); | 293 keydown(focusedItem, 'ArrowDown', 'shift'); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 assertDeepEquals( | 363 assertDeepEquals( |
| 360 ['2', '4', '5'], normalizeSet(store.data.selection.items)); | 364 ['2', '4', '5'], normalizeSet(store.data.selection.items)); |
| 361 | 365 |
| 362 keydown(focusedItem, 'ArrowDown', ['ctrl', 'shift']); | 366 keydown(focusedItem, 'ArrowDown', ['ctrl', 'shift']); |
| 363 focusedItem = items[3]; | 367 focusedItem = items[3]; |
| 364 assertDeepEquals( | 368 assertDeepEquals( |
| 365 ['2', '4', '5', '6'], normalizeSet(store.data.selection.items)); | 369 ['2', '4', '5', '6'], normalizeSet(store.data.selection.items)); |
| 366 }); | 370 }); |
| 367 | 371 |
| 368 test('keyboard commands are passed to command manager', function() { | 372 test('keyboard commands are passed to command manager', function() { |
| 369 var commandManager = new TestCommandManager(); | |
| 370 document.body.appendChild(commandManager); | |
| 371 chrome.bookmarkManagerPrivate.removeTrees = function() {} | 373 chrome.bookmarkManagerPrivate.removeTrees = function() {} |
| 372 | 374 |
| 373 store.data.selection.items = new Set(['2', '3']); | 375 store.data.selection.items = new Set(['2', '3']); |
| 374 store.notifyObservers(); | 376 store.notifyObservers(); |
| 375 | 377 |
| 376 var focusedItem = items[4]; | 378 var focusedItem = items[4]; |
| 377 focusedItem.focus(); | 379 focusedItem.focus(); |
| 378 | 380 |
| 379 keydown(focusedItem, 'Delete'); | 381 keydown(focusedItem, 'Delete'); |
| 380 // Commands should take affect on the selection, even if something else is | 382 // Commands should take affect on the selection, even if something else is |
| 381 // focused. | 383 // focused. |
| 382 commandManager.assertLastCommand(Command.DELETE, ['2', '3']); | 384 commandManager.assertLastCommand(Command.DELETE, ['2', '3']); |
| 383 }); | 385 }); |
| 384 | 386 |
| 385 test('iron-list does not steal focus on enter', function() { | 387 test('iron-list does not steal focus on enter', function() { |
| 386 // Iron-list attempts to focus the whole <bookmarks-item> when pressing | 388 // Iron-list attempts to focus the whole <bookmarks-item> when pressing |
| 387 // enter on the menu button. This checks that we block this behavior | 389 // enter on the menu button. This checks that we block this behavior |
| 388 // during keydown on <bookmarks-list>. | 390 // during keydown on <bookmarks-list>. |
| 389 var commandManager = new TestCommandManager(); | |
| 390 document.body.appendChild(commandManager); | |
| 391 | |
| 392 var button = items[0].$$('.more-vert-button'); | 391 var button = items[0].$$('.more-vert-button'); |
| 393 button.focus(); | 392 button.focus(); |
| 394 keydown(button, 'Enter'); | 393 keydown(button, 'Enter'); |
| 395 | 394 |
| 396 assertEquals(button, items[0].root.activeElement); | 395 assertEquals(button, items[0].root.activeElement); |
| 397 }); | 396 }); |
| 398 }); | 397 }); |
| 399 | 398 |
| 400 mocha.run(); | 399 mocha.run(); |
| 401 }); | 400 }); |
| OLD | NEW |