Chromium Code Reviews| 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 ba79c7de13aa31d25259bbf31b9d65d1c0a1c74c..db7ddc0aa01713255fe537c215997b49fbf73aec 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 |
| @@ -396,5 +396,125 @@ TEST_F('MaterialBookmarksFocusTest', 'All', function() { |
| }); |
| }); |
| + suite('DialogFocusManager', function() { |
| + var list; |
| + var store; |
| + var items; |
| + var commandManager; |
| + var dialogFocusManager; |
| + |
| + function waitForClose(el) { |
| + return new Promise(function(resolve) { |
| + listenOnce(el, 'close', function(e) { |
| + resolve(); |
| + }) |
| + }); |
| + } |
| + |
| + function keydown(el, key) { |
| + MockInteractions.keyDownOn(el, '', '', 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); |
| + store.replaceSingleton(); |
| + |
| + 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'); |
| + |
| + commandManager = new TestCommandManager(); |
| + document.body.appendChild(commandManager); |
| + |
| + dialogFocusManager = new bookmarks.DialogFocusManager(); |
|
tsergeant
2017/06/28 03:47:58
You can also just do
bookmarks.DialogFocusManager
tsergeant
2017/06/28 03:49:01
Uh, ignore this comment, the suggestion is not wha
|
| + bookmarks.DialogFocusManager.instance_ = dialogFocusManager; |
| + }); |
| + |
| + test('restores focus on dialog dismissal', function() { |
| + var focusedItem = items[0]; |
| + focusedItem.focus(); |
| + assertEquals(focusedItem, dialogFocusManager.getFocusedElement_()); |
| + |
| + commandManager.openCommandMenuAtPosition(0, 0); |
| + var dropdown = commandManager.$.dropdown.getIfExists(); |
| + |
| + assertTrue(dropdown.open); |
| + assertNotEquals(focusedItem, dialogFocusManager.getFocusedElement_()); |
| + |
| + keydown(dropdown, 'Escape'); |
| + assertFalse(dropdown.open); |
| + |
| + return waitForClose(dropdown).then(() => { |
| + assertEquals(focusedItem, dialogFocusManager.getFocusedElement_()); |
| + }); |
| + }); |
| + |
| + test('restores focus after stacked dialogs', function() { |
| + var focusedItem = items[0]; |
| + focusedItem.focus(); |
| + assertEquals(focusedItem, dialogFocusManager.getFocusedElement_()); |
| + |
| + commandManager.openCommandMenuAtPosition(0, 0); |
| + var dropdown = commandManager.$.dropdown.getIfExists(); |
| + dropdown.close(); |
| + assertNotEquals(focusedItem, dialogFocusManager.getFocusedElement_()); |
| + |
| + var editDialog = commandManager.$.editDialog.get(); |
| + editDialog.showEditDialog(store.data.nodes['2']); |
| + |
| + return waitForClose(dropdown).then(() => { |
| + editDialog.onCancelButtonTap_(); |
| + assertNotEquals(focusedItem, dialogFocusManager.getFocusedElement_()); |
| + |
| + return waitForClose(editDialog); |
| + }).then(() => { |
| + assertEquals(focusedItem, dialogFocusManager.getFocusedElement_()); |
| + }); |
| + }); |
| + |
| + test('restores focus after multiple shows of same dialog', function() { |
| + var focusedItem = items[0]; |
| + focusedItem.focus(); |
| + assertEquals(focusedItem, dialogFocusManager.getFocusedElement_()); |
| + |
| + commandManager.openCommandMenuAtPosition(0, 0); |
| + assertNotEquals(focusedItem, dialogFocusManager.getFocusedElement_()); |
| + var dropdown = commandManager.$.dropdown.getIfExists(); |
| + dropdown.close(); |
| + |
| + focusedItem = items[3]; |
| + focusedItem.focus(); |
| + commandManager.openCommandMenuAtPosition(0, 0); |
| + |
| + return waitForClose(dropdown).then(() => { |
| + assertTrue(dropdown.open); |
| + dropdown.close(); |
| + assertNotEquals( |
| + focusedItem, dialogFocusManager.getFocusedElement_()); |
| + |
| + return waitForClose(dropdown); |
| + }).then(() => { |
| + assertEquals(focusedItem, dialogFocusManager.getFocusedElement_()); |
| + }); |
| + }); |
| + }); |
| + |
| mocha.run(); |
| }); |