Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 /** | 5 /** |
| 6 * @fileoverview Tests for MD Bookmarks which are run as interactive ui tests. | 6 * @fileoverview Tests for MD Bookmarks which are run as interactive ui tests. |
| 7 * Should be used for tests which care about focus. | 7 * Should be used for tests which care about focus. |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 var ROOT_PATH = '../../../../../'; | 10 var ROOT_PATH = '../../../../../'; |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 173 bookmarks.actions.changeFolderOpen('2', true), store.lastAction); | 173 bookmarks.actions.changeFolderOpen('2', true), store.lastAction); |
| 174 | 174 |
| 175 keydown('2', 'ArrowRight'); | 175 keydown('2', 'ArrowRight'); |
| 176 assertDeepEquals( | 176 assertDeepEquals( |
| 177 bookmarks.actions.changeFolderOpen('2', false), store.lastAction); | 177 bookmarks.actions.changeFolderOpen('2', false), store.lastAction); |
| 178 | 178 |
| 179 document.body.style.direction = 'ltr'; | 179 document.body.style.direction = 'ltr'; |
| 180 }); | 180 }); |
| 181 }); | 181 }); |
| 182 | 182 |
| 183 suite('<bookmarks-list>', function() { | |
| 184 var list; | |
| 185 var store; | |
| 186 var items; | |
| 187 var multiKey = cr.isMac ? 'meta' : 'ctrl'; | |
| 188 | |
| 189 function keydown(item, key, modifiers) { | |
| 190 MockInteractions.keyDownOn(item, '', modifiers, key); | |
| 191 } | |
| 192 | |
| 193 setup(function() { | |
| 194 store = new bookmarks.TestStore({ | |
| 195 nodes: testTree(createFolder( | |
| 196 '1', | |
| 197 [ | |
| 198 createItem('2'), | |
| 199 createItem('3'), | |
| 200 createItem('4'), | |
| 201 createItem('5'), | |
| 202 createItem('6'), | |
| 203 createFolder('7', []), | |
| 204 ])), | |
| 205 selectedFolder: '1', | |
| 206 }); | |
| 207 store.setReducersEnabled(true); | |
| 208 bookmarks.Store.instance_ = store; | |
| 209 | |
| 210 list = document.createElement('bookmarks-list'); | |
| 211 list.style.height = '100%'; | |
| 212 list.style.width = '100%'; | |
| 213 list.style.position = 'absolute'; | |
| 214 replaceBody(list); | |
| 215 Polymer.dom.flush(); | |
| 216 items = list.root.querySelectorAll('bookmarks-item'); | |
| 217 }); | |
| 218 | |
| 219 test('simple keyboard selection', function() { | |
| 220 var focusedItem = items[0]; | |
| 221 assertEquals('0', focusedItem.getAttribute('tabindex')); | |
| 222 assertEquals( | |
| 223 '0', focusedItem.$$('.more-vert-button').getAttribute('tabindex')); | |
| 224 focusedItem.focus(); | |
| 225 | |
| 226 keydown(focusedItem, 'ArrowDown'); | |
| 227 focusedItem = items[1]; | |
| 228 assertEquals('0', focusedItem.getAttribute('tabindex')); | |
| 229 assertEquals( | |
| 230 '0', focusedItem.$$('.more-vert-button').getAttribute('tabindex')); | |
| 231 assertDeepEquals(['3'], normalizeSet(store.data.selection.items)); | |
| 232 | |
| 233 keydown(focusedItem, 'ArrowUp'); | |
| 234 focusedItem = items[0]; | |
| 235 assertEquals('0', focusedItem.getAttribute('tabindex')); | |
| 236 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
| 237 | |
| 238 keydown(focusedItem, 'End'); | |
| 239 focusedItem = items[5]; | |
| 240 assertDeepEquals(['7'], normalizeSet(store.data.selection.items)); | |
| 241 | |
| 242 keydown(focusedItem, 'Home'); | |
| 243 focusedItem = items[0]; | |
| 244 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
| 245 | |
| 246 keydown(focusedItem, 'Escape'); | |
| 247 assertDeepEquals([], normalizeSet(store.data.selection.items)); | |
| 248 | |
| 249 keydown(focusedItem, 'a', 'ctrl'); | |
| 250 assertDeepEquals( | |
| 251 ['2', '3', '4', '5', '6', '7'], | |
| 252 normalizeSet(store.data.selection.items)); | |
| 253 }); | |
| 254 | |
| 255 test('shift selection', function() { | |
| 256 // TODO(calamity): Make the first item the anchor index when a new folder | |
| 257 // is selected. | |
| 258 var focusedItem = items[0]; | |
| 259 focusedItem.focus(); | |
| 260 | |
| 261 keydown(focusedItem, 'ArrowDown'); | |
| 262 focusedItem = items[1]; | |
| 263 assertDeepEquals(['3'], normalizeSet(store.data.selection.items)); | |
| 264 | |
| 265 keydown(focusedItem, 'ArrowUp', 'shift'); | |
| 266 focusedItem = items[0]; | |
| 267 assertDeepEquals(['2', '3'], normalizeSet(store.data.selection.items)); | |
| 268 | |
| 269 keydown(focusedItem, 'ArrowDown', 'shift'); | |
| 270 focusedItem = items[1]; | |
| 271 assertDeepEquals(['3'], normalizeSet(store.data.selection.items)); | |
| 272 | |
| 273 keydown(focusedItem, 'ArrowDown', 'shift'); | |
| 274 focusedItem = items[2]; | |
| 275 assertDeepEquals(['3', '4'], normalizeSet(store.data.selection.items)); | |
| 276 | |
| 277 keydown(focusedItem, 'End', 'shift'); | |
| 278 focusedItem = items[2]; | |
| 279 assertDeepEquals( | |
| 280 ['3', '4', '5', '6', '7'], normalizeSet(store.data.selection.items)); | |
| 281 | |
| 282 keydown(focusedItem, 'Home', 'shift'); | |
| 283 focusedItem = items[2]; | |
| 284 assertDeepEquals(['2', '3'], normalizeSet(store.data.selection.items)); | |
| 285 }); | |
| 286 | |
| 287 test('ctrl selection', function() { | |
| 288 var focusedItem = items[0]; | |
| 289 focusedItem.focus(); | |
| 290 | |
| 291 keydown(focusedItem, ' ', 'ctrl'); | |
| 292 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
| 293 | |
| 294 keydown(focusedItem, 'ArrowDown', 'ctrl'); | |
| 295 focusedItem = items[1]; | |
| 296 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
|
tsergeant
2017/05/22 05:19:00
Should you be checking that the anchor changes her
calamity
2017/05/23 05:27:29
Done.
| |
| 297 | |
| 298 keydown(focusedItem, 'ArrowDown', 'ctrl'); | |
| 299 focusedItem = items[2]; | |
| 300 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
| 301 | |
| 302 keydown(focusedItem, ' ', 'ctrl'); | |
| 303 assertDeepEquals(['2', '4'], normalizeSet(store.data.selection.items)); | |
| 304 | |
| 305 keydown(focusedItem, ' ', 'ctrl'); | |
| 306 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
| 307 }); | |
| 308 | |
| 309 test('ctrl+shift selection', function() { | |
| 310 var focusedItem = items[0]; | |
| 311 focusedItem.focus(); | |
| 312 | |
| 313 keydown(focusedItem, ' ', 'ctrl'); | |
| 314 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
| 315 | |
| 316 keydown(focusedItem, 'ArrowDown', 'ctrl'); | |
| 317 focusedItem = items[1]; | |
| 318 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
| 319 | |
| 320 keydown(focusedItem, 'ArrowDown', 'ctrl'); | |
| 321 focusedItem = items[2]; | |
| 322 assertDeepEquals(['2'], normalizeSet(store.data.selection.items)); | |
| 323 | |
| 324 keydown(focusedItem, 'ArrowDown', ['ctrl', 'shift']); | |
| 325 focusedItem = items[3]; | |
| 326 assertDeepEquals( | |
| 327 ['2', '4', '5'], normalizeSet(store.data.selection.items)); | |
| 328 | |
| 329 keydown(focusedItem, 'ArrowDown', ['ctrl', 'shift']); | |
| 330 focusedItem = items[3]; | |
| 331 assertDeepEquals( | |
| 332 ['2', '4', '5', '6'], normalizeSet(store.data.selection.items)); | |
| 333 }); | |
| 334 }); | |
| 335 | |
| 183 mocha.run(); | 336 mocha.run(); |
| 184 }); | 337 }); |
| OLD | NEW |