| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "base/memory/scoped_nsobject.h" | 5 #include "base/memory/scoped_nsobject.h" |
| 6 #import "testing/gtest_mac.h" | 6 #import "testing/gtest_mac.h" |
| 7 #include "ui/app_list/app_list_item_model.h" | 7 #include "ui/app_list/app_list_item_model.h" |
| 8 #import "ui/app_list/cocoa/apps_collection_view_drag_manager.h" | 8 #import "ui/app_list/cocoa/apps_collection_view_drag_manager.h" |
| 9 #import "ui/app_list/cocoa/apps_grid_controller.h" | 9 #import "ui/app_list/cocoa/apps_grid_controller.h" |
| 10 #import "ui/app_list/cocoa/apps_grid_view_item.h" | 10 #import "ui/app_list/cocoa/apps_grid_view_item.h" |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 SimulateKeyAction(@selector(moveRight:)); | 253 SimulateKeyAction(@selector(moveRight:)); |
| 254 SimulateKeyAction(@selector(moveRight:)); | 254 SimulateKeyAction(@selector(moveRight:)); |
| 255 EXPECT_EQ(2u, [apps_grid_controller_ selectedItemIndex]); | 255 EXPECT_EQ(2u, [apps_grid_controller_ selectedItemIndex]); |
| 256 SimulateKeyAction(@selector(insertNewline:)); | 256 SimulateKeyAction(@selector(insertNewline:)); |
| 257 EXPECT_EQ(1, delegate()->activate_count()); | 257 EXPECT_EQ(1, delegate()->activate_count()); |
| 258 EXPECT_EQ(std::string("Item 2"), delegate()->last_activated()->title()); | 258 EXPECT_EQ(std::string("Item 2"), delegate()->last_activated()->title()); |
| 259 } | 259 } |
| 260 | 260 |
| 261 // Tests keyboard navigation across pages. | 261 // Tests keyboard navigation across pages. |
| 262 TEST_F(AppsGridControllerTest, CrossPageKeyboardNavigation) { | 262 TEST_F(AppsGridControllerTest, CrossPageKeyboardNavigation) { |
| 263 model()->PopulateApps(2 * kItemsPerPage); | 263 model()->PopulateApps(kItemsPerPage + 10); |
| 264 EXPECT_EQ(kItemsPerPage, [[GetPageAt(0) content] count]); | 264 EXPECT_EQ(kItemsPerPage, [[GetPageAt(0) content] count]); |
| 265 EXPECT_EQ(kItemsPerPage, [[GetPageAt(1) content] count]); | 265 EXPECT_EQ(10u, [[GetPageAt(1) content] count]); |
| 266 | 266 |
| 267 // Moving Left, Up, or PageUp from the top-left corner of the first page does | 267 // Moving Left, Up, or PageUp from the top-left corner of the first page does |
| 268 // nothing. | 268 // nothing. |
| 269 [apps_grid_controller_ selectItemAtIndex:0]; | 269 [apps_grid_controller_ selectItemAtIndex:0]; |
| 270 SimulateKeyAction(@selector(moveLeft:)); | 270 SimulateKeyAction(@selector(moveLeft:)); |
| 271 EXPECT_EQ(0u, [apps_grid_controller_ selectedItemIndex]); | 271 EXPECT_EQ(0u, [apps_grid_controller_ selectedItemIndex]); |
| 272 SimulateKeyAction(@selector(moveUp:)); | 272 SimulateKeyAction(@selector(moveUp:)); |
| 273 EXPECT_EQ(0u, [apps_grid_controller_ selectedItemIndex]); | 273 EXPECT_EQ(0u, [apps_grid_controller_ selectedItemIndex]); |
| 274 SimulateKeyAction(@selector(scrollPageUp:)); | 274 SimulateKeyAction(@selector(scrollPageUp:)); |
| 275 EXPECT_EQ(0u, [apps_grid_controller_ selectedItemIndex]); | 275 EXPECT_EQ(0u, [apps_grid_controller_ selectedItemIndex]); |
| 276 | 276 |
| 277 // Moving Right from the right side wraps to the next row. | 277 // Moving Right from the right side goes to the next page. Moving Left goes |
| 278 // back to the first page. |
| 278 [apps_grid_controller_ selectItemAtIndex:3]; | 279 [apps_grid_controller_ selectItemAtIndex:3]; |
| 279 SimulateKeyAction(@selector(moveRight:)); | 280 SimulateKeyAction(@selector(moveRight:)); |
| 280 EXPECT_EQ(4u, [apps_grid_controller_ selectedItemIndex]); | |
| 281 | |
| 282 // Moving Down from the bottom goes to the next page and selects the same | |
| 283 // column. Moving Up again goes back to the first page. | |
| 284 [apps_grid_controller_ selectItemAtIndex:13]; | |
| 285 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); | |
| 286 SimulateKeyAction(@selector(moveDown:)); | |
| 287 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); | |
| 288 EXPECT_EQ(kItemsPerPage + 1, [apps_grid_controller_ selectedItemIndex]); | |
| 289 SimulateKeyAction(@selector(moveUp:)); | |
| 290 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); | |
| 291 EXPECT_EQ(13u, [apps_grid_controller_ selectedItemIndex]); | |
| 292 | |
| 293 // Moving Right from the bottom-right corner goes to the next page. | |
| 294 // Moving Left again goes back to the first page. | |
| 295 [apps_grid_controller_ selectItemAtIndex:15]; | |
| 296 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); | |
| 297 SimulateKeyAction(@selector(moveRight:)); | |
| 298 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); | 281 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); |
| 299 EXPECT_EQ(kItemsPerPage, [apps_grid_controller_ selectedItemIndex]); | 282 EXPECT_EQ(kItemsPerPage, [apps_grid_controller_ selectedItemIndex]); |
| 300 SimulateKeyAction(@selector(moveLeft:)); | 283 SimulateKeyAction(@selector(moveLeft:)); |
| 301 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); | 284 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); |
| 302 EXPECT_EQ(15u, [apps_grid_controller_ selectedItemIndex]); | 285 EXPECT_EQ(3u, [apps_grid_controller_ selectedItemIndex]); |
| 286 |
| 287 // Moving Down from the bottom does nothing. |
| 288 [apps_grid_controller_ selectItemAtIndex:13]; |
| 289 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); |
| 290 SimulateKeyAction(@selector(moveDown:)); |
| 291 EXPECT_EQ(13u, [apps_grid_controller_ selectedItemIndex]); |
| 292 |
| 293 // Moving Right into a non-existent square on the next page will select the |
| 294 // last item. |
| 295 [apps_grid_controller_ selectItemAtIndex:15]; |
| 296 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); |
| 297 SimulateKeyAction(@selector(moveRight:)); |
| 298 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); |
| 299 EXPECT_EQ(kItemsPerPage + 9, [apps_grid_controller_ selectedItemIndex]); |
| 303 | 300 |
| 304 // PageDown and PageUp switches pages while maintaining the same selection | 301 // PageDown and PageUp switches pages while maintaining the same selection |
| 305 // position. | 302 // position. |
| 306 [apps_grid_controller_ selectItemAtIndex:10]; | 303 [apps_grid_controller_ selectItemAtIndex:6]; |
| 307 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); | 304 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); |
| 308 SimulateKeyAction(@selector(scrollPageDown:)); | 305 SimulateKeyAction(@selector(scrollPageDown:)); |
| 309 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); | 306 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); |
| 310 EXPECT_EQ(kItemsPerPage + 10, [apps_grid_controller_ selectedItemIndex]); | 307 EXPECT_EQ(kItemsPerPage + 6, [apps_grid_controller_ selectedItemIndex]); |
| 311 SimulateKeyAction(@selector(scrollPageUp:)); | 308 SimulateKeyAction(@selector(scrollPageUp:)); |
| 312 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); | 309 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); |
| 313 EXPECT_EQ(10u, [apps_grid_controller_ selectedItemIndex]); | 310 EXPECT_EQ(6u, [apps_grid_controller_ selectedItemIndex]); |
| 311 |
| 312 // PageDown into a non-existent square on the next page will select the last |
| 313 // item. |
| 314 [apps_grid_controller_ selectItemAtIndex:11]; |
| 315 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); |
| 316 SimulateKeyAction(@selector(scrollPageDown:)); |
| 317 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); |
| 318 EXPECT_EQ(kItemsPerPage + 9, [apps_grid_controller_ selectedItemIndex]); |
| 314 | 319 |
| 315 // Moving Right, Down, or PageDown from the bottom-right corner of the last | 320 // Moving Right, Down, or PageDown from the bottom-right corner of the last |
| 316 // page does nothing. | 321 // page (not the last item) does nothing. |
| 317 [apps_grid_controller_ selectItemAtIndex:(2 * kItemsPerPage - 1)]; | 322 [apps_grid_controller_ selectItemAtIndex:kItemsPerPage + 9]; |
| 318 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); | 323 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); |
| 319 SimulateKeyAction(@selector(moveRight:)); | 324 SimulateKeyAction(@selector(moveRight:)); |
| 320 EXPECT_EQ(kItemsPerPage + 15, [apps_grid_controller_ selectedItemIndex]); | 325 EXPECT_EQ(kItemsPerPage + 9, [apps_grid_controller_ selectedItemIndex]); |
| 321 SimulateKeyAction(@selector(moveDown:)); | 326 SimulateKeyAction(@selector(moveDown:)); |
| 322 EXPECT_EQ(kItemsPerPage + 15, [apps_grid_controller_ selectedItemIndex]); | 327 EXPECT_EQ(kItemsPerPage + 9, [apps_grid_controller_ selectedItemIndex]); |
| 323 SimulateKeyAction(@selector(scrollPageDown:)); | 328 SimulateKeyAction(@selector(scrollPageDown:)); |
| 324 EXPECT_EQ(kItemsPerPage + 15, [apps_grid_controller_ selectedItemIndex]); | 329 EXPECT_EQ(kItemsPerPage + 9, [apps_grid_controller_ selectedItemIndex]); |
| 325 | |
| 326 // Moving down on the bottom of the last page does nothing. | |
| 327 [apps_grid_controller_ selectItemAtIndex:(2 * kItemsPerPage - 4)]; | |
| 328 EXPECT_EQ(1u, [apps_grid_controller_ visiblePage]); | |
| 329 SimulateKeyAction(@selector(moveDown:)); | |
| 330 EXPECT_EQ(kItemsPerPage + 12, [apps_grid_controller_ selectedItemIndex]); | |
| 331 | |
| 332 // Remove some items from the last page. | |
| 333 ReplaceTestModel(kItemsPerPage + 8); | |
| 334 EXPECT_EQ(8u, [[GetPageAt(1) content] count]); | |
| 335 EXPECT_EQ(NSNotFound, [apps_grid_controller_ selectedItemIndex]); | |
| 336 | |
| 337 // PageUp/Down to an invalid selection does nothing. | |
| 338 [apps_grid_controller_ selectItemAtIndex:10]; | |
| 339 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); | |
| 340 SimulateKeyAction(@selector(scrollPageUp:)); | |
| 341 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); | |
| 342 EXPECT_EQ(10u, [apps_grid_controller_ selectedItemIndex]); | |
| 343 SimulateKeyAction(@selector(scrollPageDown:)); | |
| 344 EXPECT_EQ(0u, [apps_grid_controller_ visiblePage]); | |
| 345 EXPECT_EQ(10u, [apps_grid_controller_ selectedItemIndex]); | |
| 346 | 330 |
| 347 // After page switch, arrow keys select first item on current page. | 331 // After page switch, arrow keys select first item on current page. |
| 332 [apps_grid_controller_ scrollToPage:0]; |
| 348 [apps_grid_controller_ scrollToPage:1]; | 333 [apps_grid_controller_ scrollToPage:1]; |
| 349 EXPECT_EQ(NSNotFound, [apps_grid_controller_ selectedItemIndex]); | 334 EXPECT_EQ(NSNotFound, [apps_grid_controller_ selectedItemIndex]); |
| 350 SimulateKeyAction(@selector(moveUp:)); | 335 SimulateKeyAction(@selector(moveUp:)); |
| 351 EXPECT_EQ(kItemsPerPage, [apps_grid_controller_ selectedItemIndex]); | 336 EXPECT_EQ(kItemsPerPage, [apps_grid_controller_ selectedItemIndex]); |
| 352 } | 337 } |
| 353 | 338 |
| 354 // Highlighting an item should cause the page it's on to be visible. | 339 // Highlighting an item should cause the page it's on to be visible. |
| 355 TEST_F(AppsGridControllerTest, EnsureHighlightedVisible) { | 340 TEST_F(AppsGridControllerTest, EnsureHighlightedVisible) { |
| 356 model()->PopulateApps(3 * kItemsPerPage); | 341 model()->PopulateApps(3 * kItemsPerPage); |
| 357 EXPECT_EQ(kItemsPerPage, [[GetPageAt(2) content] count]); | 342 EXPECT_EQ(kItemsPerPage, [[GetPageAt(2) content] count]); |
| (...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 778 EXPECT_EQ(1u, [apps_grid_controller_ scheduledScrollPage]); | 763 EXPECT_EQ(1u, [apps_grid_controller_ scheduledScrollPage]); |
| 779 [drag_manager onMouseUp:at_center]; | 764 [drag_manager onMouseUp:at_center]; |
| 780 EXPECT_EQ(2u, [apps_grid_controller_ visiblePage]); | 765 EXPECT_EQ(2u, [apps_grid_controller_ visiblePage]); |
| 781 EXPECT_EQ(2u, [apps_grid_controller_ scheduledScrollPage]); | 766 EXPECT_EQ(2u, [apps_grid_controller_ scheduledScrollPage]); |
| 782 | 767 |
| 783 [apps_grid_controller_ setPaginationObserver:nil]; | 768 [apps_grid_controller_ setPaginationObserver:nil]; |
| 784 } | 769 } |
| 785 | 770 |
| 786 } // namespace test | 771 } // namespace test |
| 787 } // namespace app_list | 772 } // namespace app_list |
| OLD | NEW |