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

Side by Side Diff: chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc

Issue 2341643002: Enhance chrome.app.window API for shelf integration with pinning support (cont.) (Closed)
Patch Set: Include AppLauncherId wrapper Created 4 years, 2 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
OLDNEW
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 "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h" 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "ash/aura/wm_window_aura.h" 9 #include "ash/aura/wm_window_aura.h"
10 #include "ash/common/shelf/app_list_button.h" 10 #include "ash/common/shelf/app_list_button.h"
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 189
190 ~LauncherPlatformAppBrowserTest() override {} 190 ~LauncherPlatformAppBrowserTest() override {}
191 191
192 void RunTestOnMainThreadLoop() override { 192 void RunTestOnMainThreadLoop() override {
193 controller_ = GetChromeLauncherControllerImpl(); 193 controller_ = GetChromeLauncherControllerImpl();
194 return extensions::PlatformAppBrowserTest::RunTestOnMainThreadLoop(); 194 return extensions::PlatformAppBrowserTest::RunTestOnMainThreadLoop();
195 } 195 }
196 196
197 ash::ShelfModel* shelf_model() { return ash::WmShell::Get()->shelf_model(); } 197 ash::ShelfModel* shelf_model() { return ash::WmShell::Get()->shelf_model(); }
198 198
199 ash::ShelfID CreateAppShortcutLauncherItem(const std::string& name) { 199 ash::ShelfID CreateAppShortcutLauncherItem(
200 const ash::launcher::AppLauncherId& app_launcher_id) {
200 return controller_->CreateAppShortcutLauncherItem( 201 return controller_->CreateAppShortcutLauncherItem(
201 name, shelf_model()->item_count()); 202 app_launcher_id, shelf_model()->item_count());
202 } 203 }
203 204
204 const ash::ShelfItem& GetLastLauncherItem() { 205 const ash::ShelfItem& GetLastLauncherItem() {
205 // Unless there are any panels, the item at index [count - 1] will be 206 // Unless there are any panels, the item at index [count - 1] will be
206 // the desired item. 207 // the desired item.
207 return shelf_model()->items()[shelf_model()->item_count() - 1]; 208 return shelf_model()->items()[shelf_model()->item_count() - 1];
208 } 209 }
209 210
210 const ash::ShelfItem& GetLastLauncherPanelItem() { 211 const ash::ShelfItem& GetLastLauncherPanelItem() {
211 // Panels show up on the right side of the shelf, so the desired item 212 // Panels show up on the right side of the shelf, so the desired item
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 LoadExtension(test_data_dir_.AppendASCII(name)); 296 LoadExtension(test_data_dir_.AppendASCII(name));
296 297
297 // First get app_id. 298 // First get app_id.
298 const Extension* extension = 299 const Extension* extension =
299 service->GetExtensionById(last_loaded_extension_id(), false); 300 service->GetExtensionById(last_loaded_extension_id(), false);
300 const std::string app_id = extension->id(); 301 const std::string app_id = extension->id();
301 302
302 // Then create a shortcut. 303 // Then create a shortcut.
303 int item_count = model_->item_count(); 304 int item_count = model_->item_count();
304 ash::ShelfID shortcut_id = controller_->CreateAppShortcutLauncherItem( 305 ash::ShelfID shortcut_id = controller_->CreateAppShortcutLauncherItem(
305 app_id, 306 ash::launcher::AppLauncherId(app_id), item_count);
306 item_count);
307 controller_->SyncPinPosition(shortcut_id); 307 controller_->SyncPinPosition(shortcut_id);
308 EXPECT_EQ(++item_count, model_->item_count()); 308 EXPECT_EQ(++item_count, model_->item_count());
309 const ash::ShelfItem& item = *model_->ItemByID(shortcut_id); 309 const ash::ShelfItem& item = *model_->ItemByID(shortcut_id);
310 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, item.type); 310 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, item.type);
311 return item.id; 311 return item.id;
312 } 312 }
313 313
314 void RemoveShortcut(ash::ShelfID id) { 314 void RemoveShortcut(ash::ShelfID id) {
315 controller_->Unpin(id); 315 controller_->Unpin(id);
316 } 316 }
317 317
318 ash::ShelfID PinFakeApp(const std::string& name) { 318 ash::ShelfID PinFakeApp(const std::string& app_id) {
319 return controller_->CreateAppShortcutLauncherItem( 319 return controller_->CreateAppShortcutLauncherItem(
320 name, model_->item_count()); 320 ash::launcher::AppLauncherId(app_id), model_->item_count());
321 } 321 }
322 322
323 // Get the index of an item which has the given type. 323 // Get the index of an item which has the given type.
324 int GetIndexOfShelfItemType(ash::ShelfItemType type) { 324 int GetIndexOfShelfItemType(ash::ShelfItemType type) {
325 return model_->GetItemIndexForType(type); 325 return model_->GetItemIndexForType(type);
326 } 326 }
327 327
328 // Try to rip off |item_index|. 328 // Try to rip off |item_index|.
329 void RipOffItemIndex(int index, 329 void RipOffItemIndex(int index,
330 ui::test::EventGenerator* generator, 330 ui::test::EventGenerator* generator,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 416
417 // Test that we can launch a platform app that already has a shortcut. 417 // Test that we can launch a platform app that already has a shortcut.
418 IN_PROC_BROWSER_TEST_F(LauncherPlatformAppBrowserTest, LaunchPinned) { 418 IN_PROC_BROWSER_TEST_F(LauncherPlatformAppBrowserTest, LaunchPinned) {
419 int item_count = shelf_model()->item_count(); 419 int item_count = shelf_model()->item_count();
420 420
421 // First get app_id. 421 // First get app_id.
422 const Extension* extension = LoadAndLaunchPlatformApp("launch", "Launched"); 422 const Extension* extension = LoadAndLaunchPlatformApp("launch", "Launched");
423 const std::string app_id = extension->id(); 423 const std::string app_id = extension->id();
424 424
425 // Then create a shortcut. 425 // Then create a shortcut.
426 ash::ShelfID shortcut_id = CreateAppShortcutLauncherItem(app_id); 426 ash::ShelfID shortcut_id =
427 CreateAppShortcutLauncherItem(ash::launcher::AppLauncherId(app_id));
427 ++item_count; 428 ++item_count;
428 ASSERT_EQ(item_count, shelf_model()->item_count()); 429 ASSERT_EQ(item_count, shelf_model()->item_count());
429 ash::ShelfItem item = *shelf_model()->ItemByID(shortcut_id); 430 ash::ShelfItem item = *shelf_model()->ItemByID(shortcut_id);
430 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, item.type); 431 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, item.type);
431 EXPECT_EQ(ash::STATUS_CLOSED, item.status); 432 EXPECT_EQ(ash::STATUS_CLOSED, item.status);
432 433
433 // Open a window. Confirm the item is now running. 434 // Open a window. Confirm the item is now running.
434 AppWindow* window = CreateAppWindow(browser()->profile(), extension); 435 AppWindow* window = CreateAppWindow(browser()->profile(), extension);
435 ash::wm::ActivateWindow(window->GetNativeWindow()); 436 ash::wm::ActivateWindow(window->GetNativeWindow());
436 ASSERT_EQ(item_count, shelf_model()->item_count()); 437 ASSERT_EQ(item_count, shelf_model()->item_count());
(...skipping 15 matching lines...) Expand all
452 const Extension* extension = LoadAndLaunchPlatformApp("launch", "Launched"); 453 const Extension* extension = LoadAndLaunchPlatformApp("launch", "Launched");
453 AppWindow* window = CreateAppWindow(browser()->profile(), extension); 454 AppWindow* window = CreateAppWindow(browser()->profile(), extension);
454 ++item_count; 455 ++item_count;
455 ASSERT_EQ(item_count, shelf_model()->item_count()); 456 ASSERT_EQ(item_count, shelf_model()->item_count());
456 const ash::ShelfItem& item1 = GetLastLauncherItem(); 457 const ash::ShelfItem& item1 = GetLastLauncherItem();
457 ash::ShelfID id = item1.id; 458 ash::ShelfID id = item1.id;
458 EXPECT_EQ(ash::TYPE_PLATFORM_APP, item1.type); 459 EXPECT_EQ(ash::TYPE_PLATFORM_APP, item1.type);
459 EXPECT_EQ(ash::STATUS_ACTIVE, item1.status); 460 EXPECT_EQ(ash::STATUS_ACTIVE, item1.status);
460 461
461 // Create a shortcut. The app item should be after it. 462 // Create a shortcut. The app item should be after it.
462 ash::ShelfID foo_id = CreateAppShortcutLauncherItem("foo"); 463 ash::ShelfID foo_id =
464 CreateAppShortcutLauncherItem(ash::launcher::AppLauncherId("foo"));
463 ++item_count; 465 ++item_count;
464 ASSERT_EQ(item_count, shelf_model()->item_count()); 466 ASSERT_EQ(item_count, shelf_model()->item_count());
465 EXPECT_LT(shelf_model()->ItemIndexByID(foo_id), 467 EXPECT_LT(shelf_model()->ItemIndexByID(foo_id),
466 shelf_model()->ItemIndexByID(id)); 468 shelf_model()->ItemIndexByID(id));
467 469
468 // Pin the app. The item should remain. 470 // Pin the app. The item should remain.
469 controller_->Pin(id); 471 controller_->Pin(id);
470 ASSERT_EQ(item_count, shelf_model()->item_count()); 472 ASSERT_EQ(item_count, shelf_model()->item_count());
471 const ash::ShelfItem& item2 = *shelf_model()->ItemByID(id); 473 const ash::ShelfItem& item2 = *shelf_model()->ItemByID(id);
472 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, item2.type); 474 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, item2.type);
473 EXPECT_EQ(ash::STATUS_ACTIVE, item2.status); 475 EXPECT_EQ(ash::STATUS_ACTIVE, item2.status);
474 476
475 // New shortcuts should come after the item. 477 // New shortcuts should come after the item.
476 ash::ShelfID bar_id = CreateAppShortcutLauncherItem("bar"); 478 ash::ShelfID bar_id =
479 CreateAppShortcutLauncherItem(ash::launcher::AppLauncherId("bar"));
477 ++item_count; 480 ++item_count;
478 ASSERT_EQ(item_count, shelf_model()->item_count()); 481 ASSERT_EQ(item_count, shelf_model()->item_count());
479 EXPECT_LT(shelf_model()->ItemIndexByID(id), 482 EXPECT_LT(shelf_model()->ItemIndexByID(id),
480 shelf_model()->ItemIndexByID(bar_id)); 483 shelf_model()->ItemIndexByID(bar_id));
481 484
482 // Then close it, make sure the item remains. 485 // Then close it, make sure the item remains.
483 CloseAppWindow(window); 486 CloseAppWindow(window);
484 ASSERT_EQ(item_count, shelf_model()->item_count()); 487 ASSERT_EQ(item_count, shelf_model()->item_count());
485 } 488 }
486 489
487 IN_PROC_BROWSER_TEST_F(LauncherPlatformAppBrowserTest, UnpinRunning) { 490 IN_PROC_BROWSER_TEST_F(LauncherPlatformAppBrowserTest, UnpinRunning) {
488 int item_count = shelf_model()->item_count(); 491 int item_count = shelf_model()->item_count();
489 492
490 // First get app_id. 493 // First get app_id.
491 const Extension* extension = LoadAndLaunchPlatformApp("launch", "Launched"); 494 const Extension* extension = LoadAndLaunchPlatformApp("launch", "Launched");
492 const std::string app_id = extension->id(); 495 const std::string app_id = extension->id();
493 496
494 // Then create a shortcut. 497 // Then create a shortcut.
495 ash::ShelfID shortcut_id = CreateAppShortcutLauncherItem(app_id); 498 ash::ShelfID shortcut_id =
499 CreateAppShortcutLauncherItem(ash::launcher::AppLauncherId(app_id));
496 ++item_count; 500 ++item_count;
497 ASSERT_EQ(item_count, shelf_model()->item_count()); 501 ASSERT_EQ(item_count, shelf_model()->item_count());
498 ash::ShelfItem item = *shelf_model()->ItemByID(shortcut_id); 502 ash::ShelfItem item = *shelf_model()->ItemByID(shortcut_id);
499 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, item.type); 503 EXPECT_EQ(ash::TYPE_APP_SHORTCUT, item.type);
500 EXPECT_EQ(ash::STATUS_CLOSED, item.status); 504 EXPECT_EQ(ash::STATUS_CLOSED, item.status);
501 505
502 // Create a second shortcut. This will be needed to force the first one to 506 // Create a second shortcut. This will be needed to force the first one to
503 // move once it gets unpinned. 507 // move once it gets unpinned.
504 ash::ShelfID foo_id = CreateAppShortcutLauncherItem("foo"); 508 ash::ShelfID foo_id =
509 CreateAppShortcutLauncherItem(ash::launcher::AppLauncherId("foo"));
505 ++item_count; 510 ++item_count;
506 ASSERT_EQ(item_count, shelf_model()->item_count()); 511 ASSERT_EQ(item_count, shelf_model()->item_count());
507 EXPECT_LT(shelf_model()->ItemIndexByID(shortcut_id), 512 EXPECT_LT(shelf_model()->ItemIndexByID(shortcut_id),
508 shelf_model()->ItemIndexByID(foo_id)); 513 shelf_model()->ItemIndexByID(foo_id));
509 514
510 // Open a window. Confirm the item is now running. 515 // Open a window. Confirm the item is now running.
511 AppWindow* window = CreateAppWindow(browser()->profile(), extension); 516 AppWindow* window = CreateAppWindow(browser()->profile(), extension);
512 ash::wm::ActivateWindow(window->GetNativeWindow()); 517 ash::wm::ActivateWindow(window->GetNativeWindow());
513 ASSERT_EQ(item_count, shelf_model()->item_count()); 518 ASSERT_EQ(item_count, shelf_model()->item_count());
514 item = *shelf_model()->ItemByID(shortcut_id); 519 item = *shelf_model()->ItemByID(shortcut_id);
(...skipping 1847 matching lines...) Expand 10 before | Expand all | Expand 10 after
2362 IsItemPresentInMenu(menu1.get(), LauncherContextMenu::MENU_CLOSE)); 2367 IsItemPresentInMenu(menu1.get(), LauncherContextMenu::MENU_CLOSE));
2363 2368
2364 // Close all windows via the menu item. 2369 // Close all windows via the menu item.
2365 CloseBrowserWindow(browser(), menu1.get(), LauncherContextMenu::MENU_CLOSE); 2370 CloseBrowserWindow(browser(), menu1.get(), LauncherContextMenu::MENU_CLOSE);
2366 EXPECT_EQ(0u, BrowserList::GetInstance()->size()); 2371 EXPECT_EQ(0u, BrowserList::GetInstance()->size());
2367 2372
2368 // Check if "Close" is removed from the context menu. 2373 // Check if "Close" is removed from the context menu.
2369 std::unique_ptr<LauncherContextMenu> menu2 = CreateBrowserItemContextMenu(); 2374 std::unique_ptr<LauncherContextMenu> menu2 = CreateBrowserItemContextMenu();
2370 ASSERT_FALSE( 2375 ASSERT_FALSE(
2371 IsItemPresentInMenu(menu2.get(), LauncherContextMenu::MENU_CLOSE)); 2376 IsItemPresentInMenu(menu2.get(), LauncherContextMenu::MENU_CLOSE));
2372 } 2377 }
stevenjb 2016/10/21 21:40:40 We should have at least one test that pins an app
Andra Paraschiv 2016/10/24 08:26:16 Sure, these tests for multiple launch ids should b
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698