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

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

Issue 2820153003: [MD Bookmarks] Add keyboard navigation to sidebar. (Closed)
Patch Set: 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..a3f703e04f1a021c82ffc54208c634c61afe3023 100644
--- a/chrome/test/data/webui/md_bookmarks/folder_node_test.js
+++ b/chrome/test/data/webui/md_bookmarks/folder_node_test.js
@@ -5,6 +5,11 @@
suite('<bookmarks-folder-node>', function() {
var rootNode;
var store;
+ var focusedNode;
+
+ function getFolderNode(id) {
+ return findFolderNode(rootNode, id);
+ }
setup(function() {
store = new bookmarks.TestStore({
@@ -21,12 +26,16 @@ suite('<bookmarks-folder-node>', function() {
createItem('5'),
]),
createFolder('7', [])),
+ selectedFolder: '1',
});
bookmarks.Store.instance_ = store;
rootNode = document.createElement('bookmarks-folder-node');
rootNode.itemId = '0';
rootNode.depth = -1;
+ rootNode.addEventListener('folder-node-focus-changed', (e) => {
+ focusedNode = e.detail;
+ });
replaceBody(rootNode);
Polymer.dom.flush();
});
@@ -75,9 +84,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 +96,94 @@ 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() {
+ var focusedId;
+
+ function changeKeyboardFocus(direction, targetId, activeElementId) {
+ return getFolderNode(targetId ? targetId : focusedId)
+ .changeKeyboardSelection_(
+ direction,
+ activeElementId ? getFolderNode(activeElementId) :
+ getFolderNode(focusedId).$.container);
+ }
+
+ store.data.closedFolders = new Set('2');
+ store.notifyObservers();
+
+ // The selected folder is focus enabled on attach.
+ focusedId = '1';
+ assertEquals(focusedId, focusedNode.itemId);
+
+ // Move down into child.
+ assertTrue(changeKeyboardFocus(1));
+ focusedId = '2';
+ assertEquals(focusedId, focusedNode.itemId);
+
+ // Move down past closed folders.
+ assertFalse(changeKeyboardFocus(1));
+ assertFalse(changeKeyboardFocus(1, '1', '2'));
+ assertTrue(changeKeyboardFocus(1, '0', '1'));
+ focusedId = '7';
+ assertEquals(focusedId, focusedNode.itemId);
+
+ // Move down past end of list.
+ assertFalse(changeKeyboardFocus(1));
+ assertFalse(changeKeyboardFocus(1, '0', '7'));
+ focusedId = '7';
+ assertEquals(focusedId, focusedNode.itemId);
+
+ // Move up past closed folders.
+ assertFalse(changeKeyboardFocus(-1));
+ assertTrue(changeKeyboardFocus(-1, '0', '7'));
+ focusedId = '2';
+ assertEquals(focusedId, focusedNode.itemId);
+
+ // Move up into parent.
+ assertFalse(changeKeyboardFocus(-1));
+ assertTrue(changeKeyboardFocus(-1, '1', '2'));
+ focusedId = '1';
+ assertEquals(focusedId, focusedNode.itemId);
+
+ // Move up past start of list.
+ assertFalse(changeKeyboardFocus(-1));
+ assertTrue(changeKeyboardFocus(-1, '0', '1'));
+ focusedId = '1';
+ assertEquals(focusedId, focusedNode.itemId);
+ });
});

Powered by Google App Engine
This is Rietveld 408576698