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

Side by Side Diff: chrome/test/data/webui/md_bookmarks/command_manager_test.js

Issue 2962283002: MD Bookmarks: Add 'show in folder' command to search result context menu (Closed)
Patch Set: Add MenuSource to CommandManager. Created 3 years, 5 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/webui/md_bookmarks/md_bookmarks_ui.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 suite('<bookmarks-command-manager>', function() { 5 suite('<bookmarks-command-manager>', function() {
6 var commandManager; 6 var commandManager;
7 var store; 7 var store;
8 var lastCommand; 8 var lastCommand;
9 var lastCommandIds; 9 var lastCommandIds;
10 10
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 assertFalse(commandManager.canExecute(Command.COPY_URL, new Set(['11']))); 64 assertFalse(commandManager.canExecute(Command.COPY_URL, new Set(['11'])));
65 assertFalse( 65 assertFalse(
66 commandManager.canExecute(Command.COPY_URL, new Set(['11', '13']))); 66 commandManager.canExecute(Command.COPY_URL, new Set(['11', '13'])));
67 assertTrue(commandManager.canExecute(Command.COPY_URL, new Set(['13']))); 67 assertTrue(commandManager.canExecute(Command.COPY_URL, new Set(['13'])));
68 }); 68 });
69 69
70 test('context menu hides invalid commands', function() { 70 test('context menu hides invalid commands', function() {
71 store.data.selection.items = new Set(['11', '13']); 71 store.data.selection.items = new Set(['11', '13']);
72 store.notifyObservers(); 72 store.notifyObservers();
73 73
74 commandManager.openCommandMenuAtPosition(0, 0); 74 commandManager.openCommandMenuAtPosition(0, 0, MenuSource.LIST);
75 Polymer.dom.flush(); 75 Polymer.dom.flush();
76 76
77 var commandHidden = {}; 77 var commandHidden = {};
78 commandManager.root.querySelectorAll('.dropdown-item').forEach(element => { 78 commandManager.root.querySelectorAll('.dropdown-item').forEach(element => {
79 commandHidden[element.getAttribute('command')] = element.hidden; 79 commandHidden[element.getAttribute('command')] = element.hidden;
80 }); 80 });
81 81
82 // With a folder and an item selected, the only available context menu item 82 // With a folder and an item selected, the only available context menu item
83 // is 'Delete'. 83 // is 'Delete'.
84 assertTrue(commandHidden[Command.EDIT]); 84 assertTrue(commandHidden[Command.EDIT]);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 157
158 MockInteractions.pressAndReleaseKeyOn( 158 MockInteractions.pressAndReleaseKeyOn(
159 document.body, '', undoModifier, undoKey); 159 document.body, '', undoModifier, undoKey);
160 commandManager.assertLastCommand('undo'); 160 commandManager.assertLastCommand('undo');
161 161
162 MockInteractions.pressAndReleaseKeyOn( 162 MockInteractions.pressAndReleaseKeyOn(
163 document.body, '', redoModifier, redoKey); 163 document.body, '', redoModifier, redoKey);
164 commandManager.assertLastCommand('redo'); 164 commandManager.assertLastCommand('redo');
165 }); 165 });
166 166
167 test.only('Show In Folder is only available during search', function() {
168 store.data.selection.items = new Set(['12']);
169 store.notifyObservers();
170
171 commandManager.openCommandMenuAtPosition(0, 0, MenuSource.LIST);
172 Polymer.dom.flush();
173
174 var showInFolderItem =
175 commandManager.root.querySelector('[command=show-in-folder]');
176
177 // Show in folder hidden when search is inactive.
178 assertTrue(showInFolderItem.hidden);
179
180 // Show in Folder visible when search is active.
181 store.data.search.term = 'test';
182 store.data.search.results = ['12', '13'];
183 store.notifyObservers();
184 commandManager.closeCommandMenu();
185 commandManager.openCommandMenuAtPosition(0, 0, MenuSource.LIST);
186 assertFalse(showInFolderItem.hidden);
187
188 // Show in Folder hidden when menu is opened from the sidebar.
189 commandManager.closeCommandMenu();
190 commandManager.openCommandMenuAtPosition(0, 0, MenuSource.TREE);
191 assertTrue(showInFolderItem.hidden);
192
193 // Show in Folder hidden when multiple items are selected.
194 store.data.selection.items = new Set(['12', '13']);
195 store.notifyObservers();
196 commandManager.closeCommandMenu();
197 commandManager.openCommandMenuAtPosition(0, 0, MenuSource.LIST);
198 assertTrue(showInFolderItem.hidden);
199
200 // Executing the command selects the parent folder.
201 commandManager.handle(Command.SHOW_IN_FOLDER, new Set(['12']));
202 assertEquals('select-folder', store.lastAction.name);
203 assertEquals('1', store.lastAction.id);
204 });
205
167 test('does not delete children at same time as ancestor', function() { 206 test('does not delete children at same time as ancestor', function() {
168 var lastDelete = null; 207 var lastDelete = null;
169 chrome.bookmarkManagerPrivate.removeTrees = function(idArray) { 208 chrome.bookmarkManagerPrivate.removeTrees = function(idArray) {
170 lastDelete = idArray.sort(); 209 lastDelete = idArray.sort();
171 }; 210 };
172 211
173 var parentAndChildren = new Set(['11', '12', '111', '1221']); 212 var parentAndChildren = new Set(['11', '12', '111', '1221']);
174 assertTrue(commandManager.canExecute(Command.DELETE, parentAndChildren)); 213 assertTrue(commandManager.canExecute(Command.DELETE, parentAndChildren));
175 commandManager.handle(Command.DELETE, parentAndChildren); 214 commandManager.handle(Command.DELETE, parentAndChildren);
176 215
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 assertFalse(dialog.open); 278 assertFalse(dialog.open);
240 assertEquals(20, lastCreate.url.length); 279 assertEquals(20, lastCreate.url.length);
241 }); 280 });
242 281
243 test('cannot execute "Open in New Tab" on folders with no items', function() { 282 test('cannot execute "Open in New Tab" on folders with no items', function() {
244 var items = new Set(['2']); 283 var items = new Set(['2']);
245 assertFalse(commandManager.canExecute(Command.OPEN_NEW_TAB, items)); 284 assertFalse(commandManager.canExecute(Command.OPEN_NEW_TAB, items));
246 285
247 store.data.selection.items = items; 286 store.data.selection.items = items;
248 287
249 commandManager.openCommandMenuAtPosition(0, 0); 288 commandManager.openCommandMenuAtPosition(0, 0, MenuSource.LIST);
250 Polymer.dom.flush(); 289 Polymer.dom.flush();
251 290
252 var commandItem = {}; 291 var commandItem = {};
253 commandManager.root.querySelectorAll('.dropdown-item').forEach(element => { 292 commandManager.root.querySelectorAll('.dropdown-item').forEach(element => {
254 commandItem[element.getAttribute('command')] = element; 293 commandItem[element.getAttribute('command')] = element;
255 }); 294 });
256 295
257 assertTrue(commandItem[Command.OPEN_NEW_TAB].disabled); 296 assertTrue(commandItem[Command.OPEN_NEW_TAB].disabled);
258 assertFalse(commandItem[Command.OPEN_NEW_TAB].hidden); 297 assertFalse(commandItem[Command.OPEN_NEW_TAB].hidden);
259 298
(...skipping 10 matching lines...) Expand all
270 store.data.prefs.canEdit = false; 309 store.data.prefs.canEdit = false;
271 store.data.selection.items = items; 310 store.data.selection.items = items;
272 store.notifyObservers(); 311 store.notifyObservers();
273 312
274 assertFalse(commandManager.canExecute(Command.EDIT, items)); 313 assertFalse(commandManager.canExecute(Command.EDIT, items));
275 assertFalse(commandManager.canExecute(Command.DELETE, items)); 314 assertFalse(commandManager.canExecute(Command.DELETE, items));
276 assertFalse(commandManager.canExecute(Command.UNDO, items)); 315 assertFalse(commandManager.canExecute(Command.UNDO, items));
277 assertFalse(commandManager.canExecute(Command.REDO, items)); 316 assertFalse(commandManager.canExecute(Command.REDO, items));
278 317
279 // No divider line should be visible when only 'Open' commands are enabled. 318 // No divider line should be visible when only 'Open' commands are enabled.
280 commandManager.openCommandMenuAtPosition(0, 0); 319 commandManager.openCommandMenuAtPosition(0, 0, MenuSource.LIST);
281 commandManager.root.querySelectorAll('hr').forEach(element => { 320 commandManager.root.querySelectorAll('hr').forEach(element => {
282 assertTrue(element.hidden); 321 assertTrue(element.hidden);
283 }); 322 });
284 }); 323 });
285 324
286 test('cannot edit unmodifiable nodes', function() { 325 test('cannot edit unmodifiable nodes', function() {
287 // Cannot edit root folders. 326 // Cannot edit root folders.
288 var items = new Set(['1']); 327 var items = new Set(['1']);
289 store.data.selection.items = items; 328 store.data.selection.items = items;
290 assertFalse(commandManager.canExecute(Command.EDIT, items)); 329 assertFalse(commandManager.canExecute(Command.EDIT, items));
291 assertFalse(commandManager.canExecute(Command.DELETE, items)); 330 assertFalse(commandManager.canExecute(Command.DELETE, items));
292 331
293 store.data.nodes['12'].unmodifiable = 'managed'; 332 store.data.nodes['12'].unmodifiable = 'managed';
294 store.notifyObservers(); 333 store.notifyObservers();
295 334
296 items = new Set(['12']); 335 items = new Set(['12']);
297 assertFalse(commandManager.canExecute(Command.EDIT, items)); 336 assertFalse(commandManager.canExecute(Command.EDIT, items));
298 assertFalse(commandManager.canExecute(Command.DELETE, items)); 337 assertFalse(commandManager.canExecute(Command.DELETE, items));
299 338
300 commandManager.openCommandMenuAtPosition(0, 0); 339 commandManager.openCommandMenuAtPosition(0, 0, MenuSource.LIST);
301 var commandItem = {}; 340 var commandItem = {};
302 commandManager.root.querySelectorAll('.dropdown-item').forEach(element => { 341 commandManager.root.querySelectorAll('.dropdown-item').forEach(element => {
303 commandItem[element.getAttribute('command')] = element; 342 commandItem[element.getAttribute('command')] = element;
304 }); 343 });
305 MockInteractions.tap(commandItem[Command.EDIT]); 344 MockInteractions.tap(commandItem[Command.EDIT]);
306 commandManager.assertLastCommand(null); 345 commandManager.assertLastCommand(null);
307 }); 346 });
308 }); 347 });
309 348
310 suite('<bookmarks-item> CommandManager integration', function() { 349 suite('<bookmarks-item> CommandManager integration', function() {
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 424
386 test('meta-down triggers Open on Mac', function() { 425 test('meta-down triggers Open on Mac', function() {
387 if (!cr.isMac) 426 if (!cr.isMac)
388 return; 427 return;
389 428
390 customClick(items[0]); 429 customClick(items[0]);
391 MockInteractions.pressAndReleaseKeyOn(items[0], 0, 'meta', 'ArrowDown'); 430 MockInteractions.pressAndReleaseKeyOn(items[0], 0, 'meta', 'ArrowDown');
392 assertEquals('11', store.data.selectedFolder); 431 assertEquals('11', store.data.selectedFolder);
393 }); 432 });
394 }); 433 });
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/md_bookmarks/md_bookmarks_ui.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698