| Index: chrome/test/data/webui/md_bookmarks/md_bookmarks_focus_test.js
|
| diff --git a/chrome/test/data/webui/md_bookmarks/md_bookmarks_focus_test.js b/chrome/test/data/webui/md_bookmarks/md_bookmarks_focus_test.js
|
| index e1ca42ba51debdcd329abdd9d82ae7daf5e608c2..27072b0c9b5056dbf9a4f137ebe821dc13d36eb4 100644
|
| --- a/chrome/test/data/webui/md_bookmarks/md_bookmarks_focus_test.js
|
| +++ b/chrome/test/data/webui/md_bookmarks/md_bookmarks_focus_test.js
|
| @@ -180,5 +180,171 @@ TEST_F('MaterialBookmarksFocusTest', 'All', function() {
|
| });
|
| });
|
|
|
| + suite('<bookmarks-list>', function() {
|
| + var list;
|
| + var store;
|
| + var items;
|
| + var multiKey = cr.isMac ? 'meta' : 'ctrl';
|
| +
|
| + function keydown(item, key, modifiers) {
|
| + MockInteractions.keyDownOn(item, '', modifiers, key);
|
| + }
|
| +
|
| + setup(function() {
|
| + store = new bookmarks.TestStore({
|
| + nodes: testTree(createFolder(
|
| + '1',
|
| + [
|
| + createItem('2'),
|
| + createItem('3'),
|
| + createItem('4'),
|
| + createItem('5'),
|
| + createItem('6'),
|
| + createFolder('7', []),
|
| + ])),
|
| + selectedFolder: '1',
|
| + });
|
| + store.setReducersEnabled(true);
|
| + bookmarks.Store.instance_ = store;
|
| +
|
| + list = document.createElement('bookmarks-list');
|
| + list.style.height = '100%';
|
| + list.style.width = '100%';
|
| + list.style.position = 'absolute';
|
| + replaceBody(list);
|
| + Polymer.dom.flush();
|
| + items = list.root.querySelectorAll('bookmarks-item');
|
| + });
|
| +
|
| + test('simple keyboard selection', function() {
|
| + var focusedItem = items[0];
|
| + assertEquals('0', focusedItem.getAttribute('tabindex'));
|
| + assertEquals(
|
| + '0', focusedItem.$$('.more-vert-button').getAttribute('tabindex'));
|
| + focusedItem.focus();
|
| +
|
| + keydown(focusedItem, 'ArrowDown');
|
| + focusedItem = items[1];
|
| + assertEquals('0', focusedItem.getAttribute('tabindex'));
|
| + assertEquals(
|
| + '0', focusedItem.$$('.more-vert-button').getAttribute('tabindex'));
|
| + assertDeepEquals(['3'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'ArrowUp');
|
| + focusedItem = items[0];
|
| + assertEquals('0', focusedItem.getAttribute('tabindex'));
|
| + assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'End');
|
| + focusedItem = items[5];
|
| + assertEquals('0', focusedItem.getAttribute('tabindex'));
|
| + assertDeepEquals(['7'], normalizeSet(store.data.selection.items));
|
| +
|
| + // Moving past the end of the list is a no-op.
|
| + keydown(focusedItem, 'ArrowDown');
|
| + assertEquals('0', focusedItem.getAttribute('tabindex'));
|
| + assertDeepEquals(['7'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'Home');
|
| + focusedItem = items[0];
|
| + assertEquals('0', focusedItem.getAttribute('tabindex'));
|
| + assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
|
| +
|
| + // Moving past the start of the list is a no-op.
|
| + keydown(focusedItem, 'ArrowUp');
|
| + assertEquals('0', focusedItem.getAttribute('tabindex'));
|
| + assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'Escape');
|
| + assertDeepEquals([], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'a', 'ctrl');
|
| + assertDeepEquals(
|
| + ['2', '3', '4', '5', '6', '7'],
|
| + normalizeSet(store.data.selection.items));
|
| + });
|
| +
|
| + test('shift selection', function() {
|
| + // TODO(calamity): Make the first item the anchor index when a new folder
|
| + // is selected.
|
| + var focusedItem = items[0];
|
| + focusedItem.focus();
|
| +
|
| + keydown(focusedItem, 'ArrowDown');
|
| + focusedItem = items[1];
|
| + assertDeepEquals(['3'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'ArrowUp', 'shift');
|
| + focusedItem = items[0];
|
| + assertDeepEquals(['2', '3'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'ArrowDown', 'shift');
|
| + focusedItem = items[1];
|
| + assertDeepEquals(['3'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'ArrowDown', 'shift');
|
| + focusedItem = items[2];
|
| + assertDeepEquals(['3', '4'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'End', 'shift');
|
| + focusedItem = items[2];
|
| + assertDeepEquals(
|
| + ['3', '4', '5', '6', '7'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'Home', 'shift');
|
| + focusedItem = items[2];
|
| + assertDeepEquals(['2', '3'], normalizeSet(store.data.selection.items));
|
| + });
|
| +
|
| + test('ctrl selection', function() {
|
| + var focusedItem = items[0];
|
| + focusedItem.focus();
|
| +
|
| + keydown(focusedItem, ' ', 'ctrl');
|
| + assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'ArrowDown', 'ctrl');
|
| + focusedItem = items[1];
|
| + assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
|
| + assertEquals('3', store.data.selection.anchor);
|
| +
|
| + keydown(focusedItem, 'ArrowDown', 'ctrl');
|
| + focusedItem = items[2];
|
| + assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, ' ', 'ctrl');
|
| + assertDeepEquals(['2', '4'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, ' ', 'ctrl');
|
| + assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
|
| + });
|
| +
|
| + test('ctrl+shift selection', function() {
|
| + var focusedItem = items[0];
|
| + focusedItem.focus();
|
| +
|
| + keydown(focusedItem, ' ', 'ctrl');
|
| + assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'ArrowDown', 'ctrl');
|
| + focusedItem = items[1];
|
| + assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'ArrowDown', 'ctrl');
|
| + focusedItem = items[2];
|
| + assertDeepEquals(['2'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'ArrowDown', ['ctrl', 'shift']);
|
| + focusedItem = items[3];
|
| + assertDeepEquals(
|
| + ['2', '4', '5'], normalizeSet(store.data.selection.items));
|
| +
|
| + keydown(focusedItem, 'ArrowDown', ['ctrl', 'shift']);
|
| + focusedItem = items[3];
|
| + assertDeepEquals(
|
| + ['2', '4', '5', '6'], normalizeSet(store.data.selection.items));
|
| + });
|
| + });
|
| +
|
| mocha.run();
|
| });
|
|
|