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); |
+ }); |
}); |