| 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 "ash/ash_switches.h" | 7 #include "ash/ash_switches.h" |
| 8 #include "ash/display/display_controller.h" | 8 #include "ash/display/display_controller.h" |
| 9 #include "ash/shelf/shelf.h" | 9 #include "ash/shelf/shelf.h" |
| 10 #include "ash/shelf/shelf_button.h" | 10 #include "ash/shelf/shelf_button.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 #include "content/public/browser/web_contents.h" | 49 #include "content/public/browser/web_contents.h" |
| 50 #include "content/public/test/browser_test_utils.h" | 50 #include "content/public/test/browser_test_utils.h" |
| 51 #include "extensions/browser/app_window/app_window.h" | 51 #include "extensions/browser/app_window/app_window.h" |
| 52 #include "extensions/browser/app_window/app_window_registry.h" | 52 #include "extensions/browser/app_window/app_window_registry.h" |
| 53 #include "extensions/browser/app_window/native_app_window.h" | 53 #include "extensions/browser/app_window/native_app_window.h" |
| 54 #include "extensions/browser/extension_system.h" | 54 #include "extensions/browser/extension_system.h" |
| 55 #include "extensions/common/constants.h" | 55 #include "extensions/common/constants.h" |
| 56 #include "extensions/common/switches.h" | 56 #include "extensions/common/switches.h" |
| 57 #include "extensions/test/extension_test_message_listener.h" | 57 #include "extensions/test/extension_test_message_listener.h" |
| 58 #include "testing/gtest/include/gtest/gtest.h" | 58 #include "testing/gtest/include/gtest/gtest.h" |
| 59 #include "ui/app_list/app_list_switches.h" |
| 59 #include "ui/app_list/views/app_list_item_view.h" | 60 #include "ui/app_list/views/app_list_item_view.h" |
| 60 #include "ui/app_list/views/apps_grid_view.h" | 61 #include "ui/app_list/views/apps_grid_view.h" |
| 62 #include "ui/app_list/views/start_page_view.h" |
| 63 #include "ui/app_list/views/tile_item_view.h" |
| 61 #include "ui/aura/client/aura_constants.h" | 64 #include "ui/aura/client/aura_constants.h" |
| 62 #include "ui/aura/window.h" | 65 #include "ui/aura/window.h" |
| 63 #include "ui/events/event.h" | 66 #include "ui/events/event.h" |
| 64 #include "ui/events/test/event_generator.h" | 67 #include "ui/events/test/event_generator.h" |
| 65 | 68 |
| 66 using extensions::AppWindow; | 69 using extensions::AppWindow; |
| 67 using extensions::Extension; | 70 using extensions::Extension; |
| 68 using content::WebContents; | 71 using content::WebContents; |
| 69 | 72 |
| 70 namespace { | 73 namespace { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 100 | 103 |
| 101 int icon_updates() { return icon_updates_; } | 104 int icon_updates() { return icon_updates_; } |
| 102 | 105 |
| 103 private: | 106 private: |
| 104 Profile* profile_; | 107 Profile* profile_; |
| 105 int icon_updates_; | 108 int icon_updates_; |
| 106 | 109 |
| 107 DISALLOW_COPY_AND_ASSIGN(TestAppWindowRegistryObserver); | 110 DISALLOW_COPY_AND_ASSIGN(TestAppWindowRegistryObserver); |
| 108 }; | 111 }; |
| 109 | 112 |
| 113 // Click the "All Apps" button from the app launcher start page. Assumes that |
| 114 // the app launcher is open to the start page. On the non-experimental launcher, |
| 115 // does nothing. |
| 116 // |display_origin| is the top-left corner of the active display, in screen |
| 117 // coordinates. |
| 118 void ClickAllAppsButtonFromStartPage(ui::test::EventGenerator* generator, |
| 119 const gfx::Point& display_origin) { |
| 120 if (!app_list::switches::IsExperimentalAppListEnabled()) |
| 121 return; |
| 122 |
| 123 ash::test::AppListControllerTestApi controller_test( |
| 124 ash::Shell::GetInstance()); |
| 125 |
| 126 app_list::StartPageView* start_page_view = controller_test.GetStartPageView(); |
| 127 DCHECK(start_page_view); |
| 128 |
| 129 app_list::TileItemView* all_apps_button = start_page_view->all_apps_button(); |
| 130 gfx::Rect all_apps_rect = all_apps_button->GetBoundsInScreen(); |
| 131 all_apps_rect.Offset(-display_origin.x(), -display_origin.y()); |
| 132 generator->MoveMouseTo(all_apps_rect.CenterPoint().x(), |
| 133 all_apps_rect.CenterPoint().y()); |
| 134 generator->ClickLeftButton(); |
| 135 base::MessageLoop::current()->RunUntilIdle(); |
| 136 // Run Layout() to effectively complete the animation to the apps page. |
| 137 controller_test.LayoutContentsView(); |
| 138 } |
| 139 |
| 110 } // namespace | 140 } // namespace |
| 111 | 141 |
| 112 class LauncherPlatformAppBrowserTest | 142 class LauncherPlatformAppBrowserTest |
| 113 : public extensions::PlatformAppBrowserTest { | 143 : public extensions::PlatformAppBrowserTest { |
| 114 protected: | 144 protected: |
| 115 LauncherPlatformAppBrowserTest() : shelf_(NULL), controller_(NULL) { | 145 LauncherPlatformAppBrowserTest() : shelf_(NULL), controller_(NULL) { |
| 116 } | 146 } |
| 117 | 147 |
| 118 virtual ~LauncherPlatformAppBrowserTest() {} | 148 virtual ~LauncherPlatformAppBrowserTest() {} |
| 119 | 149 |
| (...skipping 1611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1731 // display environment. | 1761 // display environment. |
| 1732 class ShelfAppBrowserTestWithMultiMonitor | 1762 class ShelfAppBrowserTestWithMultiMonitor |
| 1733 : public ShelfAppBrowserTestNoDefaultBrowser { | 1763 : public ShelfAppBrowserTestNoDefaultBrowser { |
| 1734 protected: | 1764 protected: |
| 1735 ShelfAppBrowserTestWithMultiMonitor() {} | 1765 ShelfAppBrowserTestWithMultiMonitor() {} |
| 1736 virtual ~ShelfAppBrowserTestWithMultiMonitor() {} | 1766 virtual ~ShelfAppBrowserTestWithMultiMonitor() {} |
| 1737 | 1767 |
| 1738 virtual void SetUpCommandLine(CommandLine* command_line) override { | 1768 virtual void SetUpCommandLine(CommandLine* command_line) override { |
| 1739 ShelfAppBrowserTestNoDefaultBrowser::SetUpCommandLine(command_line); | 1769 ShelfAppBrowserTestNoDefaultBrowser::SetUpCommandLine(command_line); |
| 1740 command_line->AppendSwitchASCII("ash-host-window-bounds", | 1770 command_line->AppendSwitchASCII("ash-host-window-bounds", |
| 1741 "800x600,801+0-800x600"); | 1771 "800x800,801+0-800x800"); |
| 1742 } | 1772 } |
| 1743 | 1773 |
| 1744 private: | 1774 private: |
| 1745 | 1775 |
| 1746 DISALLOW_COPY_AND_ASSIGN(ShelfAppBrowserTestWithMultiMonitor); | 1776 DISALLOW_COPY_AND_ASSIGN(ShelfAppBrowserTestWithMultiMonitor); |
| 1747 }; | 1777 }; |
| 1748 | 1778 |
| 1749 // Do basic drag and drop interaction tests between the application list and | 1779 // Do basic drag and drop interaction tests between the application list and |
| 1750 // the launcher in the secondary monitor. | 1780 // the launcher in the secondary monitor. |
| 1751 IN_PROC_BROWSER_TEST_F(ShelfAppBrowserTestWithMultiMonitor, | 1781 IN_PROC_BROWSER_TEST_F(ShelfAppBrowserTestWithMultiMonitor, |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1767 // Open the app list menu and check that the drag and drop host was set. | 1797 // Open the app list menu and check that the drag and drop host was set. |
| 1768 gfx::Rect app_list_bounds = | 1798 gfx::Rect app_list_bounds = |
| 1769 test.shelf_view()->GetAppListButtonView()->GetBoundsInScreen(); | 1799 test.shelf_view()->GetAppListButtonView()->GetBoundsInScreen(); |
| 1770 gfx::Display display = | 1800 gfx::Display display = |
| 1771 ash::Shell::GetScreen()->GetDisplayNearestWindow(secondary_root_window); | 1801 ash::Shell::GetScreen()->GetDisplayNearestWindow(secondary_root_window); |
| 1772 const gfx::Point& origin = display.bounds().origin(); | 1802 const gfx::Point& origin = display.bounds().origin(); |
| 1773 app_list_bounds.Offset(-origin.x(), -origin.y()); | 1803 app_list_bounds.Offset(-origin.x(), -origin.y()); |
| 1774 | 1804 |
| 1775 generator.MoveMouseTo(app_list_bounds.CenterPoint().x(), | 1805 generator.MoveMouseTo(app_list_bounds.CenterPoint().x(), |
| 1776 app_list_bounds.CenterPoint().y()); | 1806 app_list_bounds.CenterPoint().y()); |
| 1807 generator.ClickLeftButton(); |
| 1777 base::MessageLoop::current()->RunUntilIdle(); | 1808 base::MessageLoop::current()->RunUntilIdle(); |
| 1778 generator.ClickLeftButton(); | 1809 EXPECT_TRUE(service->IsAppListVisible()); |
| 1779 | 1810 |
| 1811 // Click the "all apps" button on the start page. |
| 1812 ClickAllAppsButtonFromStartPage(&generator, origin); |
| 1780 EXPECT_TRUE(service->IsAppListVisible()); | 1813 EXPECT_TRUE(service->IsAppListVisible()); |
| 1814 |
| 1781 app_list::AppsGridView* grid_view = | 1815 app_list::AppsGridView* grid_view = |
| 1782 ash::test::AppListControllerTestApi(ash::Shell::GetInstance()). | 1816 ash::test::AppListControllerTestApi(ash::Shell::GetInstance()). |
| 1783 GetRootGridView(); | 1817 GetRootGridView(); |
| 1784 ASSERT_TRUE(grid_view); | 1818 ASSERT_TRUE(grid_view); |
| 1785 ASSERT_TRUE(grid_view->has_drag_and_drop_host_for_test()); | 1819 ASSERT_TRUE(grid_view->has_drag_and_drop_host_for_test()); |
| 1786 | 1820 |
| 1787 // There should be 2 items in our application list. | 1821 // There should be 2 items in our application list. |
| 1788 const views::ViewModelT<app_list::AppListItemView>* vm_grid = | 1822 const views::ViewModelT<app_list::AppListItemView>* vm_grid = |
| 1789 grid_view->view_model_for_test(); | 1823 grid_view->view_model_for_test(); |
| 1790 EXPECT_EQ(2, vm_grid->view_size()); | 1824 EXPECT_EQ(2, vm_grid->view_size()); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1812 generator.MoveMouseTo(bounds_shelf_1.CenterPoint().x(), | 1846 generator.MoveMouseTo(bounds_shelf_1.CenterPoint().x(), |
| 1813 bounds_shelf_1.CenterPoint().y()); | 1847 bounds_shelf_1.CenterPoint().y()); |
| 1814 base::MessageLoop::current()->RunUntilIdle(); | 1848 base::MessageLoop::current()->RunUntilIdle(); |
| 1815 | 1849 |
| 1816 // Check that a new item got created. | 1850 // Check that a new item got created. |
| 1817 EXPECT_EQ(3, model_->item_count()); | 1851 EXPECT_EQ(3, model_->item_count()); |
| 1818 EXPECT_TRUE(grid_view->forward_events_to_drag_and_drop_host_for_test()); | 1852 EXPECT_TRUE(grid_view->forward_events_to_drag_and_drop_host_for_test()); |
| 1819 | 1853 |
| 1820 // Move it to an empty slot on grid_view. | 1854 // Move it to an empty slot on grid_view. |
| 1821 gfx::Rect empty_slot_rect = bounds_grid_1; | 1855 gfx::Rect empty_slot_rect = bounds_grid_1; |
| 1822 empty_slot_rect.Offset(0, bounds_grid_1.height()); | 1856 empty_slot_rect.Offset(0, grid_view->GetTotalTileSize().height()); |
| 1823 generator.MoveMouseTo(empty_slot_rect.CenterPoint().x(), | 1857 generator.MoveMouseTo(empty_slot_rect.CenterPoint().x(), |
| 1824 empty_slot_rect.CenterPoint().y()); | 1858 empty_slot_rect.CenterPoint().y()); |
| 1825 base::MessageLoop::current()->RunUntilIdle(); | 1859 base::MessageLoop::current()->RunUntilIdle(); |
| 1826 EXPECT_EQ(2, model_->item_count()); | 1860 EXPECT_EQ(2, model_->item_count()); |
| 1827 EXPECT_FALSE(grid_view->forward_events_to_drag_and_drop_host_for_test()); | 1861 EXPECT_FALSE(grid_view->forward_events_to_drag_and_drop_host_for_test()); |
| 1828 | 1862 |
| 1829 // Dropping it should keep the shelf as it originally was. | 1863 // Dropping it should keep the shelf as it originally was. |
| 1830 generator.ReleaseLeftButton(); | 1864 generator.ReleaseLeftButton(); |
| 1831 base::MessageLoop::current()->RunUntilIdle(); | 1865 base::MessageLoop::current()->RunUntilIdle(); |
| 1832 EXPECT_EQ(2, model_->item_count()); | 1866 EXPECT_EQ(2, model_->item_count()); |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1947 EXPECT_EQ(2, model_->item_count()); | 1981 EXPECT_EQ(2, model_->item_count()); |
| 1948 EXPECT_FALSE(service->IsAppListVisible()); | 1982 EXPECT_FALSE(service->IsAppListVisible()); |
| 1949 | 1983 |
| 1950 // Open the app list menu and check that the drag and drop host was set. | 1984 // Open the app list menu and check that the drag and drop host was set. |
| 1951 gfx::Rect app_list_bounds = | 1985 gfx::Rect app_list_bounds = |
| 1952 test.shelf_view()->GetAppListButtonView()->GetBoundsInScreen(); | 1986 test.shelf_view()->GetAppListButtonView()->GetBoundsInScreen(); |
| 1953 generator.MoveMouseTo(app_list_bounds.CenterPoint().x(), | 1987 generator.MoveMouseTo(app_list_bounds.CenterPoint().x(), |
| 1954 app_list_bounds.CenterPoint().y()); | 1988 app_list_bounds.CenterPoint().y()); |
| 1955 generator.ClickLeftButton(); | 1989 generator.ClickLeftButton(); |
| 1956 base::MessageLoop::current()->RunUntilIdle(); | 1990 base::MessageLoop::current()->RunUntilIdle(); |
| 1991 EXPECT_TRUE(service->IsAppListVisible()); |
| 1957 | 1992 |
| 1993 // Click the "all apps" button on the start page. |
| 1994 ClickAllAppsButtonFromStartPage(&generator, gfx::Point()); |
| 1958 EXPECT_TRUE(service->IsAppListVisible()); | 1995 EXPECT_TRUE(service->IsAppListVisible()); |
| 1996 |
| 1997 // Click an app icon in the app grid view. |
| 1959 app_list::AppsGridView* grid_view = | 1998 app_list::AppsGridView* grid_view = |
| 1960 ash::test::AppListControllerTestApi(ash::Shell::GetInstance()). | 1999 ash::test::AppListControllerTestApi(ash::Shell::GetInstance()). |
| 1961 GetRootGridView(); | 2000 GetRootGridView(); |
| 1962 ASSERT_TRUE(grid_view); | 2001 ASSERT_TRUE(grid_view); |
| 1963 const views::ViewModelT<app_list::AppListItemView>* vm_grid = | 2002 const views::ViewModelT<app_list::AppListItemView>* vm_grid = |
| 1964 grid_view->view_model_for_test(); | 2003 grid_view->view_model_for_test(); |
| 1965 EXPECT_EQ(2, vm_grid->view_size()); | 2004 EXPECT_EQ(2, vm_grid->view_size()); |
| 1966 gfx::Rect bounds_grid_1 = vm_grid->view_at(1)->GetBoundsInScreen(); | 2005 gfx::Rect bounds_grid_1 = vm_grid->view_at(1)->GetBoundsInScreen(); |
| 1967 // Test now that a click does create a new application tab. | 2006 // Test now that a click does create a new application tab. |
| 1968 TabStripModel* tab_strip = browser()->tab_strip_model(); | 2007 TabStripModel* tab_strip = browser()->tab_strip_model(); |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2130 chrome::GetSettingsUrl(std::string())); | 2169 chrome::GetSettingsUrl(std::string())); |
| 2131 Browser* settings_browser = | 2170 Browser* settings_browser = |
| 2132 settings_manager->FindBrowserForProfile(browser()->profile()); | 2171 settings_manager->FindBrowserForProfile(browser()->profile()); |
| 2133 ASSERT_TRUE(settings_browser); | 2172 ASSERT_TRUE(settings_browser); |
| 2134 EXPECT_EQ(browser_count, NumberOfDetectedLauncherBrowsers(false)); | 2173 EXPECT_EQ(browser_count, NumberOfDetectedLauncherBrowsers(false)); |
| 2135 EXPECT_EQ(item_count + 1, shelf_model->item_count()); | 2174 EXPECT_EQ(item_count + 1, shelf_model->item_count()); |
| 2136 | 2175 |
| 2137 // TODO(stevenjb): Test multiprofile on Chrome OS when test support is addded. | 2176 // TODO(stevenjb): Test multiprofile on Chrome OS when test support is addded. |
| 2138 // crbug.com/230464. | 2177 // crbug.com/230464. |
| 2139 } | 2178 } |
| OLD | NEW |