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

Unified Diff: chrome/test/data/webui/md_bookmarks/folder_node_test.js

Issue 2820153003: [MD Bookmarks] Add keyboard navigation to sidebar. (Closed)
Patch Set: select_on_move Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/webui/md_bookmarks/folder_node_test.js
diff --git a/chrome/test/data/webui/md_bookmarks/folder_node_test.js b/chrome/test/data/webui/md_bookmarks/folder_node_test.js
index 49e080bc14ba7894c7988030723da8d12c190ed0..c13157f9dd81f0e7287030e358a07f0cc845a601 100644
--- a/chrome/test/data/webui/md_bookmarks/folder_node_test.js
+++ b/chrome/test/data/webui/md_bookmarks/folder_node_test.js
@@ -6,6 +6,10 @@ suite('<bookmarks-folder-node>', function() {
var rootNode;
var store;
+ function getFolderNode(id) {
+ return findFolderNode(rootNode, id);
+ }
+
setup(function() {
store = new bookmarks.TestStore({
nodes: testTree(
@@ -21,6 +25,7 @@ suite('<bookmarks-folder-node>', function() {
createItem('5'),
]),
createFolder('7', [])),
+ selectedFolder: '1',
});
bookmarks.Store.instance_ = store;
@@ -75,9 +80,6 @@ suite('<bookmarks-folder-node>', function() {
test('doesn\'t highlight selected folder while searching', function() {
var rootFolders = rootNode.root.querySelectorAll('bookmarks-folder-node');
- store.data.selectedFolder = '1';
- store.notifyObservers();
-
assertEquals('1', rootFolders['0'].itemId);
assertTrue(rootFolders['0'].isSelectedFolder_);
@@ -90,4 +92,100 @@ suite('<bookmarks-folder-node>', function() {
assertFalse(rootFolders['0'].isSelectedFolder_);
});
+
+ test('last visible descendant', function() {
+ assertEquals('7', rootNode.getLastVisibleDescendant_().itemId);
+ assertEquals('4', getFolderNode('1').getLastVisibleDescendant_().itemId);
+
+ store.data.closedFolders = new Set('2');
+ store.notifyObservers();
+
+ assertEquals('2', getFolderNode('1').getLastVisibleDescendant_().itemId);
+ });
+
+ test('next/previous folder nodes', function() {
+ function getNextVisibleFolderNode(parentId, targetId, reverse) {
+ return getFolderNode(parentId).getNextVisibleFolderNode_(
+ reverse, getFolderNode(targetId));
+ }
+
+ // Forwards.
+ assertEquals('2', getNextVisibleFolderNode('1', '1', false).itemId);
+ assertEquals('4', getNextVisibleFolderNode('2', '3', false).itemId);
+ assertEquals(null, getNextVisibleFolderNode('2', '4', false));
+
+ // Backwards.
+ assertEquals('1', getNextVisibleFolderNode('1', '2', true).itemId);
+ assertEquals('3', getNextVisibleFolderNode('2', '4', true).itemId);
+ assertEquals('4', getNextVisibleFolderNode('0', '7', true).itemId);
+
+ // Skips closed folders.
+ store.data.closedFolders = new Set('2');
+ store.notifyObservers();
+
+ assertEquals(null, getNextVisibleFolderNode('1', '2', false));
+ assertEquals(null, getNextVisibleFolderNode('2', '2', false));
+ assertEquals('2', getNextVisibleFolderNode('0', '7', true).itemId);
+ });
+
+ test('keyboard selection', function() {
tsergeant 2017/04/19 07:32:18 I think it would make a lot of sense to use an int
calamity 2017/04/28 06:15:47 Yeah, ok.
+ function changeKeyboardFocus(direction, targetId, activeElementId) {
+ return getFolderNode(targetId).changeKeyboardSelection_(
+ direction, getFolderNode(activeElementId));
+ }
+
+ store.data.closedFolders = new Set('2');
+ store.notifyObservers();
+
+ // The selected folder is focus enabled on attach.
+ assertEquals('0', getFolderNode('1').$.container.getAttribute('tabindex'));
+
+ // Only the selected folder should be focusable.
+ assertEquals('-1', getFolderNode('2').$.container.getAttribute('tabindex'));
+
+ // Move down into child.
+ assertTrue(changeKeyboardFocus(1, '1', '1'));
+ assertDeepEquals(bookmarks.actions.selectFolder('2'), store.lastAction);
+ store.data.selectedFolder = '2';
+ store.notifyObservers();
+
+ assertEquals('-1', getFolderNode('1').$.container.getAttribute('tabindex'));
+ assertEquals('0', getFolderNode('2').$.container.getAttribute('tabindex'));
+
+ // Move down past closed folders.
+ assertFalse(changeKeyboardFocus(1, '2', '2'));
tsergeant 2017/04/19 07:32:18 I think this is testing slightly the wrong thing?
calamity 2017/04/28 06:15:47 Yeah, you're right. Fixed.
+ assertFalse(changeKeyboardFocus(1, '1', '2'));
+ assertTrue(changeKeyboardFocus(1, '0', '1'));
+ assertDeepEquals(bookmarks.actions.selectFolder('7'), store.lastAction);
+ store.data.selectedFolder = '7';
+ store.notifyObservers();
+
+ // Move down past end of list.
+ assertFalse(changeKeyboardFocus(1, '7', '7'));
+ assertFalse(changeKeyboardFocus(1, '0', '7'));
+ assertDeepEquals(bookmarks.actions.selectFolder('7'), store.lastAction);
+ store.data.selectedFolder = '7';
+ store.notifyObservers();
+
+ // Move up past closed folders.
+ assertFalse(changeKeyboardFocus(-1, '7', '7'));
+ assertTrue(changeKeyboardFocus(-1, '0', '7'));
+ assertDeepEquals(bookmarks.actions.selectFolder('2'), store.lastAction);
+ store.data.selectedFolder = '2';
+ store.notifyObservers();
+
+ // Move up into parent.
+ assertFalse(changeKeyboardFocus(-1, '2', '2'));
+ assertTrue(changeKeyboardFocus(-1, '1', '2'));
+ assertDeepEquals(bookmarks.actions.selectFolder('1'), store.lastAction);
+ store.data.selectedFolder = '1';
+ store.notifyObservers();
+
+ // Move up past start of list.
+ assertFalse(changeKeyboardFocus(-1, '1', '1'));
+ assertTrue(changeKeyboardFocus(-1, '0', '1'));
+ assertDeepEquals(bookmarks.actions.selectFolder('1'), store.lastAction);
+ store.data.selectedFolder = '1';
+ store.notifyObservers();
+ });
});

Powered by Google App Engine
This is Rietveld 408576698