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

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

Issue 2954273002: [MD Bookmarks] Restore focus after closing a dialog or context menu. (Closed)
Patch Set: fix deps Created 3 years, 6 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
« no previous file with comments | « chrome/browser/ui/webui/md_bookmarks/md_bookmarks_ui.cc ('k') | tools/gritsettings/resource_ids » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
+ 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();
});
« no previous file with comments | « chrome/browser/ui/webui/md_bookmarks/md_bookmarks_ui.cc ('k') | tools/gritsettings/resource_ids » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698