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

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

Issue 1914993002: Enhance chrome.app.window API with better shelf integration (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase + Fixes Created 4 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 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/ash_switches.h" 9 #include "ash/ash_switches.h"
10 #include "ash/common/shelf/shelf_constants.h" 10 #include "ash/common/shelf/shelf_constants.h"
(...skipping 1512 matching lines...) Expand 10 before | Expand all | Expand 10 after
1523 TestEvent click_event(ui::ET_MOUSE_PRESSED); 1523 TestEvent click_event(ui::ET_MOUSE_PRESSED);
1524 item_controller->ItemSelected(click_event); 1524 item_controller->ItemSelected(click_event);
1525 EXPECT_TRUE(panel->GetBaseWindow()->IsActive()); 1525 EXPECT_TRUE(panel->GetBaseWindow()->IsActive());
1526 EXPECT_EQ(ash::STATUS_ACTIVE, item.status); 1526 EXPECT_EQ(ash::STATUS_ACTIVE, item.status);
1527 1527
1528 // Active windows don't show attention. 1528 // Active windows don't show attention.
1529 panel->GetNativeWindow()->SetProperty(aura::client::kDrawAttentionKey, true); 1529 panel->GetNativeWindow()->SetProperty(aura::client::kDrawAttentionKey, true);
1530 EXPECT_EQ(ash::STATUS_ACTIVE, item.status); 1530 EXPECT_EQ(ash::STATUS_ACTIVE, item.status);
1531 } 1531 }
1532 1532
1533 IN_PROC_BROWSER_TEST_F(LauncherPlatformAppBrowserTest, ShowInShelfWindows) {
1534 ash::ShelfModel* shelf_model = ash::Shell::GetInstance()->shelf_model();
1535
1536 //Tests without window_key parameter set
1537
1538 // Add a window with shelf True, close it
1539 int item_count = shelf_model->item_count();
1540 const Extension* extension = LoadAndLaunchPlatformApp("launch", "Launched");
1541 AppWindow::CreateParams params;
1542 params.show_in_shelf = true;
1543 AppWindow* window1 =
1544 CreateAppWindowFromParams(browser()->profile(), extension, params);
1545 // There should be only 1 item added to the shelf.
1546 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1547 CloseAppWindow(window1);
1548 EXPECT_EQ(item_count, shelf_model->item_count());
1549
1550 // Add a window with false, following one with true
1551 item_count = shelf_model->item_count();
1552 extension = LoadAndLaunchPlatformApp("launch", "Launched");
1553
1554 params.show_in_shelf = false;
1555 window1 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1556 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1557 params.show_in_shelf = true;
1558 AppWindow* window2 =
1559 CreateAppWindowFromParams(browser()->profile(), extension, params);
1560 // There should be 2 items added to the shelf: although window1 has
1561 // show_in_shelf set to false, it's the first window created so its icon must
1562 // show up in shelf.
1563 EXPECT_EQ(item_count + 2, shelf_model->item_count());
1564 CloseAppWindow(window1);
1565 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1566 CloseAppWindow(window2);
1567 EXPECT_EQ(item_count, shelf_model->item_count());
1568
1569 // Open just one window with false
1570 item_count = shelf_model->item_count();
1571 extension = LoadAndLaunchPlatformApp("launch", "Launched");
1572
1573 params.show_in_shelf = false;
1574 window1 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1575 // There should be 1 item added to the shelf: although show_in_shelf is false,
1576 // this is the first window created.
1577 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1578 CloseAppWindow(window1);
1579 EXPECT_EQ(item_count, shelf_model->item_count());
1580
1581 // Add a window with true, following one with false
1582 item_count = shelf_model->item_count();
1583 extension = LoadAndLaunchPlatformApp("launch", "Launched");
1584
1585 params.show_in_shelf = true;
1586 window1 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1587 EXPECT_EQ(item_count + 1, shelf_model->item_count()); // main window
1588 params.show_in_shelf = false;
1589 window2 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1590 EXPECT_EQ(item_count + 2, shelf_model->item_count());
1591 CloseAppWindow(window1);
1592 // There should be 1 item added to the shelf as the second window
1593 // is set to show_in_shelf false
1594 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1595 CloseAppWindow(window2);
1596 EXPECT_EQ(item_count, shelf_model->item_count());
1597
1598 // Test closing windows in different order
1599 item_count = shelf_model->item_count();
1600
1601 extension = LoadAndLaunchPlatformApp("launch", "Launched");
1602 params.show_in_shelf = false;
1603 window1 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1604 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1605 params.show_in_shelf = false;
1606 window2 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1607 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1608 params.show_in_shelf = true;
1609 AppWindow* window3 =
1610 CreateAppWindowFromParams(browser()->profile(), extension, params);
1611 EXPECT_EQ(item_count + 2, shelf_model->item_count());
1612 params.show_in_shelf = true;
1613 AppWindow* window4 =
1614 CreateAppWindowFromParams(browser()->profile(), extension, params);
1615 // There should be 3 items added to the shelf.
1616 EXPECT_EQ(item_count + 3, shelf_model->item_count());
1617 // Any window close order should be valid
1618 CloseAppWindow(window4);
1619 // Closed window4 that was shown in shelf. item_count would decrease
1620 EXPECT_EQ(item_count + 2, shelf_model->item_count());
1621 CloseAppWindow(window1);
1622 // Closed window1 which was grouped together with window2 so item_count
1623 // would not decrease
1624 EXPECT_EQ(item_count + 2, shelf_model->item_count());
1625 CloseAppWindow(window3);
1626 // Closed window3 that was shown in shelf. item_count would decrease
1627 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1628 CloseAppWindow(window2);
1629 // Closed window2 - there is no other window in that group and item_count
1630 // would decrease
1631 EXPECT_EQ(item_count, shelf_model->item_count());
1632
1633
1634 //Tests with window_key parameter set
1635
1636 // Add a window with shelf True, close it
1637 item_count = shelf_model->item_count();
1638 extension = LoadAndLaunchPlatformApp("launch", "Launched");
1639 params.show_in_shelf = true;
1640 params.window_key = "window1";
1641 window1 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1642 // There should be only 1 item added to the shelf.
1643 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1644 CloseAppWindow(window1);
1645 EXPECT_EQ(item_count, shelf_model->item_count());
1646
1647 // Add a window with false, following one with true
1648 item_count = shelf_model->item_count();
1649 extension = LoadAndLaunchPlatformApp("launch", "Launched");
1650
1651 params.show_in_shelf = false;
1652 params.window_key = "window1";
1653 window1 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1654 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1655 params.show_in_shelf = true;
1656 params.window_key = "window2";
1657 window2 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1658 // There should be 2 items added to the shelf: although window1 has
1659 // show_in_shelf set to false, it's the first window created so its icon must
1660 // show up in shelf.
1661 EXPECT_EQ(item_count + 2, shelf_model->item_count());
1662 CloseAppWindow(window1);
1663 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1664 CloseAppWindow(window2);
1665 EXPECT_EQ(item_count, shelf_model->item_count());
1666
1667 // Open just one window with false
1668 item_count = shelf_model->item_count();
1669 extension = LoadAndLaunchPlatformApp("launch", "Launched");
1670
1671 params.show_in_shelf = false;
1672 params.window_key = "window1";
1673 window1 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1674 // There should be 1 item added to the shelf: although show_in_shelf is false,
1675 // this is the first window created.
1676 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1677 CloseAppWindow(window1);
1678 EXPECT_EQ(item_count, shelf_model->item_count());
1679
1680 // Add a window with true, following one with false
1681 item_count = shelf_model->item_count();
1682 extension = LoadAndLaunchPlatformApp("launch", "Launched");
1683
1684 params.show_in_shelf = true;
1685 params.window_key = "window1";
1686 window1 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1687 EXPECT_EQ(item_count + 1, shelf_model->item_count()); // main window
1688 params.show_in_shelf = false;
1689 params.window_key = "window2";
1690 window2 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1691 EXPECT_EQ(item_count + 2, shelf_model->item_count());
1692 CloseAppWindow(window1);
1693 // There should be 1 item added to the shelf as the second window
1694 // is set to show_in_shelf false
1695 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1696 CloseAppWindow(window2);
1697 EXPECT_EQ(item_count, shelf_model->item_count());
1698
1699 // Test closing windows in different order
1700 item_count = shelf_model->item_count();
1701
1702 extension = LoadAndLaunchPlatformApp("launch", "Launched");
1703 params.show_in_shelf = false;
1704 params.window_key = "window1";
1705 window1 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1706 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1707 params.show_in_shelf = false;
1708 params.window_key = "window2";
1709 window2 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1710 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1711 params.show_in_shelf = true;
1712 params.window_key = "window3";
1713 window3 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1714 EXPECT_EQ(item_count + 2, shelf_model->item_count());
1715 params.show_in_shelf = true;
1716 params.window_key = "window4";
1717 window4 = CreateAppWindowFromParams(browser()->profile(), extension, params);
1718 // There should be 3 items added to the shelf.
1719 EXPECT_EQ(item_count + 3, shelf_model->item_count());
1720 // Any window close order should be valid
1721 CloseAppWindow(window4);
1722 // Closed window4 that was shown in shelf. item_count would decrease
1723 EXPECT_EQ(item_count + 2, shelf_model->item_count());
1724 CloseAppWindow(window1);
1725 // Closed window1 which was grouped together with window2 so item_count
1726 // would not decrease
1727 EXPECT_EQ(item_count + 2, shelf_model->item_count());
1728 CloseAppWindow(window3);
1729 // Closed window3 that was shown in shelf. item_count would decrease
1730 EXPECT_EQ(item_count + 1, shelf_model->item_count());
1731 CloseAppWindow(window2);
1732 // Closed window2 - there is no other window in that group and item_count
1733 // would decrease
1734 EXPECT_EQ(item_count, shelf_model->item_count());
1735 }
stevenjb 2016/06/14 18:33:21 This needs to be broken up
Andra Paraschiv 2016/06/28 07:04:46 Done.
1736
1533 // Checks that the browser Alt "tabbing" is properly done. 1737 // Checks that the browser Alt "tabbing" is properly done.
1534 IN_PROC_BROWSER_TEST_F(ShelfAppBrowserTestNoDefaultBrowser, 1738 IN_PROC_BROWSER_TEST_F(ShelfAppBrowserTestNoDefaultBrowser,
1535 AltNumberBrowserTabbing) { 1739 AltNumberBrowserTabbing) {
1536 // Get the number of items in the browser menu. 1740 // Get the number of items in the browser menu.
1537 EXPECT_EQ(0u, chrome::GetTotalBrowserCount()); 1741 EXPECT_EQ(0u, chrome::GetTotalBrowserCount());
1538 // The first activation should create a browser at index 1 (App List @ 0). 1742 // The first activation should create a browser at index 1 (App List @ 0).
1539 shelf_->ActivateShelfItem(1); 1743 shelf_->ActivateShelfItem(1);
1540 EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); 1744 EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
1541 // A second activation should not create a new instance. 1745 // A second activation should not create a new instance.
1542 shelf_->ActivateShelfItem(1); 1746 shelf_->ActivateShelfItem(1);
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after
2295 // Close all windows. 2499 // Close all windows.
2296 CloseBrowserWindow(browser(), menu1.get(), LauncherContextMenu::MENU_CLOSE); 2500 CloseBrowserWindow(browser(), menu1.get(), LauncherContextMenu::MENU_CLOSE);
2297 EXPECT_EQ(0u, BrowserList::GetInstance()->size()); 2501 EXPECT_EQ(0u, BrowserList::GetInstance()->size());
2298 2502
2299 // Check if "Close" is removed from the context menu. 2503 // Check if "Close" is removed from the context menu.
2300 std::unique_ptr<LauncherContextMenu> menu2 = 2504 std::unique_ptr<LauncherContextMenu> menu2 =
2301 CreateLauncherContextMenu(ash::TYPE_BROWSER_SHORTCUT); 2505 CreateLauncherContextMenu(ash::TYPE_BROWSER_SHORTCUT);
2302 ASSERT_FALSE( 2506 ASSERT_FALSE(
2303 IsItemPresentInMenu(menu2.get(), LauncherContextMenu::MENU_CLOSE)); 2507 IsItemPresentInMenu(menu2.get(), LauncherContextMenu::MENU_CLOSE));
2304 } 2508 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698