| 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 "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" | 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" |
| 6 | 6 |
| 7 #include "apps/native_app_window.h" | 7 #include "apps/native_app_window.h" |
| 8 #include "apps/shell_window.h" | 8 #include "apps/shell_window.h" |
| 9 #include "apps/shell_window_registry.h" | 9 #include "apps/shell_window_registry.h" |
| 10 #include "ash/ash_switches.h" | 10 #include "ash/ash_switches.h" |
| 11 #include "ash/display/display_controller.h" | 11 #include "ash/display/display_controller.h" |
| 12 #include "ash/launcher/launcher.h" | 12 #include "ash/launcher/launcher.h" |
| 13 #include "ash/launcher/launcher_button.h" | 13 #include "ash/launcher/launcher_button.h" |
| 14 #include "ash/launcher/launcher_model.h" | 14 #include "ash/launcher/launcher_model.h" |
| 15 #include "ash/launcher/launcher_util.h" | 15 #include "ash/launcher/launcher_util.h" |
| 16 #include "ash/launcher/launcher_view.h" | 16 #include "ash/launcher/launcher_view.h" |
| 17 #include "ash/shell.h" | 17 #include "ash/shell.h" |
| 18 #include "ash/test/launcher_test_api.h" |
| 18 #include "ash/test/launcher_view_test_api.h" | 19 #include "ash/test/launcher_view_test_api.h" |
| 19 #include "ash/test/shell_test_api.h" | 20 #include "ash/test/shell_test_api.h" |
| 20 #include "ash/wm/window_util.h" | 21 #include "ash/wm/window_util.h" |
| 21 #include "base/strings/stringprintf.h" | 22 #include "base/strings/stringprintf.h" |
| 22 #include "base/strings/utf_string_conversions.h" | 23 #include "base/strings/utf_string_conversions.h" |
| 23 #include "chrome/browser/apps/app_browsertest_util.h" | 24 #include "chrome/browser/apps/app_browsertest_util.h" |
| 24 #include "chrome/browser/automation/automation_util.h" | 25 #include "chrome/browser/automation/automation_util.h" |
| 25 #include "chrome/browser/chrome_notification_types.h" | 26 #include "chrome/browser/chrome_notification_types.h" |
| 26 #include "chrome/browser/extensions/extension_apitest.h" | 27 #include "chrome/browser/extensions/extension_apitest.h" |
| 27 #include "chrome/browser/extensions/extension_browsertest.h" | 28 #include "chrome/browser/extensions/extension_browsertest.h" |
| (...skipping 1454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1482 EXPECT_EQ(chrome::FindBrowserWithWindow(ash::wm::GetActiveWindow()), | 1483 EXPECT_EQ(chrome::FindBrowserWithWindow(ash::wm::GetActiveWindow()), |
| 1483 browser2); | 1484 browser2); |
| 1484 } | 1485 } |
| 1485 | 1486 |
| 1486 // Do various drag and drop interaction tests between the application list and | 1487 // Do various drag and drop interaction tests between the application list and |
| 1487 // the launcher. | 1488 // the launcher. |
| 1488 IN_PROC_BROWSER_TEST_F(LauncherAppBrowserTest, DragAndDrop) { | 1489 IN_PROC_BROWSER_TEST_F(LauncherAppBrowserTest, DragAndDrop) { |
| 1489 // Get a number of interfaces we need. | 1490 // Get a number of interfaces we need. |
| 1490 aura::test::EventGenerator generator( | 1491 aura::test::EventGenerator generator( |
| 1491 ash::Shell::GetPrimaryRootWindow(), gfx::Point()); | 1492 ash::Shell::GetPrimaryRootWindow(), gfx::Point()); |
| 1492 ash::test::LauncherViewTestAPI test(launcher_->GetLauncherViewForTest()); | 1493 ash::test::LauncherViewTestAPI test( |
| 1494 ash::test::LauncherTestAPI(launcher_).launcher_view()); |
| 1493 AppListService* service = AppListService::Get(); | 1495 AppListService* service = AppListService::Get(); |
| 1494 | 1496 |
| 1495 // There should be two items in our launcher by this time. | 1497 // There should be two items in our launcher by this time. |
| 1496 EXPECT_EQ(2, model_->item_count()); | 1498 EXPECT_EQ(2, model_->item_count()); |
| 1497 EXPECT_FALSE(service->IsAppListVisible()); | 1499 EXPECT_FALSE(service->IsAppListVisible()); |
| 1498 | 1500 |
| 1499 // Open the app list menu and check that the drag and drop host was set. | 1501 // Open the app list menu and check that the drag and drop host was set. |
| 1500 gfx::Rect app_list_bounds = | 1502 gfx::Rect app_list_bounds = |
| 1501 test.launcher_view()->GetAppListButtonView()->GetBoundsInScreen(); | 1503 test.launcher_view()->GetAppListButtonView()->GetBoundsInScreen(); |
| 1502 generator.MoveMouseTo(app_list_bounds.CenterPoint().x(), | 1504 generator.MoveMouseTo(app_list_bounds.CenterPoint().x(), |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1586 generator.ReleaseLeftButton(); | 1588 generator.ReleaseLeftButton(); |
| 1587 base::MessageLoop::current()->RunUntilIdle(); | 1589 base::MessageLoop::current()->RunUntilIdle(); |
| 1588 EXPECT_FALSE(grid_view->forward_events_to_drag_and_drop_host_for_test()); | 1590 EXPECT_FALSE(grid_view->forward_events_to_drag_and_drop_host_for_test()); |
| 1589 EXPECT_EQ(3, model_->item_count()); // And it remains that way. | 1591 EXPECT_EQ(3, model_->item_count()); // And it remains that way. |
| 1590 } | 1592 } |
| 1591 | 1593 |
| 1592 // Do tests for removal of items from the shelf by dragging. | 1594 // Do tests for removal of items from the shelf by dragging. |
| 1593 IN_PROC_BROWSER_TEST_F(LauncherAppBrowserTest, DragOffShelf) { | 1595 IN_PROC_BROWSER_TEST_F(LauncherAppBrowserTest, DragOffShelf) { |
| 1594 aura::test::EventGenerator generator( | 1596 aura::test::EventGenerator generator( |
| 1595 ash::Shell::GetPrimaryRootWindow(), gfx::Point()); | 1597 ash::Shell::GetPrimaryRootWindow(), gfx::Point()); |
| 1596 ash::test::LauncherViewTestAPI test(launcher_->GetLauncherViewForTest()); | 1598 ash::test::LauncherViewTestAPI test( |
| 1599 ash::test::LauncherTestAPI(launcher_).launcher_view()); |
| 1597 | 1600 |
| 1598 // Create a known application and check that we have 3 items in the launcher. | 1601 // Create a known application and check that we have 3 items in the launcher. |
| 1599 CreateShortcut("app1"); | 1602 CreateShortcut("app1"); |
| 1600 EXPECT_EQ(3, model_->item_count()); | 1603 EXPECT_EQ(3, model_->item_count()); |
| 1601 | 1604 |
| 1602 // Test #1: Ripping out the browser item should not change anything. | 1605 // Test #1: Ripping out the browser item should not change anything. |
| 1603 int browser_index = GetIndexOfLauncherItemType(ash::TYPE_BROWSER_SHORTCUT); | 1606 int browser_index = GetIndexOfLauncherItemType(ash::TYPE_BROWSER_SHORTCUT); |
| 1604 EXPECT_LE(0, browser_index); | 1607 EXPECT_LE(0, browser_index); |
| 1605 RipOffItemIndex(browser_index, &generator, &test, RIP_OFF_ITEM); | 1608 RipOffItemIndex(browser_index, &generator, &test, RIP_OFF_ITEM); |
| 1606 // => It should not have been removed and the location should be unchanged. | 1609 // => It should not have been removed and the location should be unchanged. |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1650 base::MessageLoop::current()->RunUntilIdle(); | 1653 base::MessageLoop::current()->RunUntilIdle(); |
| 1651 EXPECT_EQ(2, model_->item_count()); // And it remains that way. | 1654 EXPECT_EQ(2, model_->item_count()); // And it remains that way. |
| 1652 EXPECT_EQ(-1, GetIndexOfLauncherItemType(ash::TYPE_APP_SHORTCUT)); | 1655 EXPECT_EQ(-1, GetIndexOfLauncherItemType(ash::TYPE_APP_SHORTCUT)); |
| 1653 } | 1656 } |
| 1654 | 1657 |
| 1655 // Check that clicking on an app launcher item launches a new browser. | 1658 // Check that clicking on an app launcher item launches a new browser. |
| 1656 IN_PROC_BROWSER_TEST_F(LauncherAppBrowserTest, ClickItem) { | 1659 IN_PROC_BROWSER_TEST_F(LauncherAppBrowserTest, ClickItem) { |
| 1657 // Get a number of interfaces we need. | 1660 // Get a number of interfaces we need. |
| 1658 aura::test::EventGenerator generator( | 1661 aura::test::EventGenerator generator( |
| 1659 ash::Shell::GetPrimaryRootWindow(), gfx::Point()); | 1662 ash::Shell::GetPrimaryRootWindow(), gfx::Point()); |
| 1660 ash::test::LauncherViewTestAPI test(launcher_->GetLauncherViewForTest()); | 1663 ash::test::LauncherViewTestAPI test( |
| 1664 ash::test::LauncherTestAPI(launcher_).launcher_view()); |
| 1661 AppListService* service = AppListService::Get(); | 1665 AppListService* service = AppListService::Get(); |
| 1662 // There should be two items in our launcher by this time. | 1666 // There should be two items in our launcher by this time. |
| 1663 EXPECT_EQ(2, model_->item_count()); | 1667 EXPECT_EQ(2, model_->item_count()); |
| 1664 EXPECT_FALSE(service->IsAppListVisible()); | 1668 EXPECT_FALSE(service->IsAppListVisible()); |
| 1665 | 1669 |
| 1666 // Open the app list menu and check that the drag and drop host was set. | 1670 // Open the app list menu and check that the drag and drop host was set. |
| 1667 gfx::Rect app_list_bounds = | 1671 gfx::Rect app_list_bounds = |
| 1668 test.launcher_view()->GetAppListButtonView()->GetBoundsInScreen(); | 1672 test.launcher_view()->GetAppListButtonView()->GetBoundsInScreen(); |
| 1669 generator.MoveMouseTo(app_list_bounds.CenterPoint().x(), | 1673 generator.MoveMouseTo(app_list_bounds.CenterPoint().x(), |
| 1670 app_list_bounds.CenterPoint().y()); | 1674 app_list_bounds.CenterPoint().y()); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1750 EXPECT_EQ(browser_id, controller_->GetIDByWindow(window)); | 1754 EXPECT_EQ(browser_id, controller_->GetIDByWindow(window)); |
| 1751 } | 1755 } |
| 1752 | 1756 |
| 1753 IN_PROC_BROWSER_TEST_F(LauncherAppBrowserTest, OverflowBubble) { | 1757 IN_PROC_BROWSER_TEST_F(LauncherAppBrowserTest, OverflowBubble) { |
| 1754 // Make sure to have a browser window | 1758 // Make sure to have a browser window |
| 1755 chrome::NewTab(browser()); | 1759 chrome::NewTab(browser()); |
| 1756 | 1760 |
| 1757 // No overflow yet. | 1761 // No overflow yet. |
| 1758 EXPECT_FALSE(launcher_->IsShowingOverflowBubble()); | 1762 EXPECT_FALSE(launcher_->IsShowingOverflowBubble()); |
| 1759 | 1763 |
| 1760 ash::test::LauncherViewTestAPI test(launcher_->GetLauncherViewForTest()); | 1764 ash::test::LauncherViewTestAPI test( |
| 1765 ash::test::LauncherTestAPI(launcher_).launcher_view()); |
| 1761 | 1766 |
| 1762 int items_added = 0; | 1767 int items_added = 0; |
| 1763 while (!test.IsOverflowButtonVisible()) { | 1768 while (!test.IsOverflowButtonVisible()) { |
| 1764 std::string fake_app_id = base::StringPrintf("fake_app_%d", items_added); | 1769 std::string fake_app_id = base::StringPrintf("fake_app_%d", items_added); |
| 1765 PinFakeApp(fake_app_id); | 1770 PinFakeApp(fake_app_id); |
| 1766 | 1771 |
| 1767 ++items_added; | 1772 ++items_added; |
| 1768 ASSERT_LT(items_added, 10000); | 1773 ASSERT_LT(items_added, 10000); |
| 1769 } | 1774 } |
| 1770 | 1775 |
| 1771 // Now show overflow bubble. | 1776 // Now show overflow bubble. |
| 1772 test.ShowOverflowBubble(); | 1777 test.ShowOverflowBubble(); |
| 1773 EXPECT_TRUE(launcher_->IsShowingOverflowBubble()); | 1778 EXPECT_TRUE(launcher_->IsShowingOverflowBubble()); |
| 1774 | 1779 |
| 1775 // Unpin first pinned app and there should be no crash. | 1780 // Unpin first pinned app and there should be no crash. |
| 1776 controller_->UnpinAppWithID(std::string("fake_app_0")); | 1781 controller_->UnpinAppWithID(std::string("fake_app_0")); |
| 1777 | 1782 |
| 1778 test.RunMessageLoopUntilAnimationsDone(); | 1783 test.RunMessageLoopUntilAnimationsDone(); |
| 1779 EXPECT_FALSE(launcher_->IsShowingOverflowBubble()); | 1784 EXPECT_FALSE(launcher_->IsShowingOverflowBubble()); |
| 1780 } | 1785 } |
| OLD | NEW |