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_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 <algorithm> | 9 #include <algorithm> |
10 #include <map> | 10 #include <map> |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 #include "extensions/browser/app_window/native_app_window.h" | 98 #include "extensions/browser/app_window/native_app_window.h" |
99 #include "extensions/common/extension.h" | 99 #include "extensions/common/extension.h" |
100 #include "extensions/common/manifest_constants.h" | 100 #include "extensions/common/manifest_constants.h" |
101 #include "testing/gtest/include/gtest/gtest.h" | 101 #include "testing/gtest/include/gtest/gtest.h" |
102 #include "ui/aura/client/window_parenting_client.h" | 102 #include "ui/aura/client/window_parenting_client.h" |
103 #include "ui/aura/window.h" | 103 #include "ui/aura/window.h" |
104 #include "ui/base/models/menu_model.h" | 104 #include "ui/base/models/menu_model.h" |
105 #include "ui/display/display.h" | 105 #include "ui/display/display.h" |
106 #include "ui/display/display_switches.h" | 106 #include "ui/display/display_switches.h" |
107 #include "ui/display/screen.h" | 107 #include "ui/display/screen.h" |
108 #include "ui/events/event_constants.h" | |
109 #include "ui/views/widget/widget.h" | 108 #include "ui/views/widget/widget.h" |
110 | 109 |
111 using base::ASCIIToUTF16; | 110 using base::ASCIIToUTF16; |
112 using extensions::Extension; | 111 using extensions::Extension; |
113 using extensions::Manifest; | 112 using extensions::Manifest; |
114 using extensions::UnloadedExtensionInfo; | 113 using extensions::UnloadedExtensionInfo; |
115 using arc::mojom::OrientationLock; | 114 using arc::mojom::OrientationLock; |
116 | 115 |
117 namespace { | 116 namespace { |
118 const char* offline_gmail_url = "https://mail.google.com/mail/mu/u"; | 117 const char* offline_gmail_url = "https://mail.google.com/mail/mu/u"; |
(...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
814 bool arc_managed, | 813 bool arc_managed, |
815 arc::ArcSessionManager::State state, | 814 arc::ArcSessionManager::State state, |
816 const std::string& pin_status) { | 815 const std::string& pin_status) { |
817 EXPECT_EQ(arc_managed, arc_test_.arc_session_manager()->IsArcManaged()); | 816 EXPECT_EQ(arc_managed, arc_test_.arc_session_manager()->IsArcManaged()); |
818 EXPECT_EQ(arc_enabled, arc_test_.arc_session_manager()->IsArcEnabled()); | 817 EXPECT_EQ(arc_enabled, arc_test_.arc_session_manager()->IsArcEnabled()); |
819 EXPECT_EQ(state, arc_test_.arc_session_manager()->state()); | 818 EXPECT_EQ(state, arc_test_.arc_session_manager()->state()); |
820 EXPECT_EQ(pin_status, GetPinnedAppStatus()); | 819 EXPECT_EQ(pin_status, GetPinnedAppStatus()); |
821 } | 820 } |
822 | 821 |
823 // Creates app window and set optional Arc application id. | 822 // Creates app window and set optional Arc application id. |
824 views::Widget* CreateArcWindow(const std::string& window_app_id) { | 823 views::Widget* CreateArcWindow(std::string& window_app_id) { |
825 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); | 824 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
826 params.bounds = gfx::Rect(5, 5, 20, 20); | 825 params.bounds = gfx::Rect(5, 5, 20, 20); |
827 params.context = GetContext(); | 826 params.context = GetContext(); |
828 views::Widget* widget = new views::Widget(); | 827 views::Widget* widget = new views::Widget(); |
829 widget->Init(params); | 828 widget->Init(params); |
830 // Set Arc id before showing the window to be recognized in | 829 // Set Arc id before showing the window to be recognized in |
831 // ArcAppWindowLauncherController. | 830 // ArcAppWindowLauncherController. |
832 exo::ShellSurface::SetApplicationId(widget->GetNativeWindow(), | 831 exo::ShellSurface::SetApplicationId(widget->GetNativeWindow(), |
833 window_app_id); | 832 window_app_id); |
834 widget->Show(); | 833 widget->Show(); |
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1198 | 1197 |
1199 ash::test::TestShellDelegate* shell_delegate_; | 1198 ash::test::TestShellDelegate* shell_delegate_; |
1200 | 1199 |
1201 ProfileToNameMap created_profiles_; | 1200 ProfileToNameMap created_profiles_; |
1202 | 1201 |
1203 DISALLOW_COPY_AND_ASSIGN( | 1202 DISALLOW_COPY_AND_ASSIGN( |
1204 MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest); | 1203 MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest); |
1205 }; | 1204 }; |
1206 | 1205 |
1207 class ChromeLauncherControllerImplMultiProfileWithArcTest | 1206 class ChromeLauncherControllerImplMultiProfileWithArcTest |
1208 : public MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest
{ // NOLINT(whitespace/line_length) | 1207 : public MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest
{ |
1209 protected: | 1208 protected: |
1210 ChromeLauncherControllerImplMultiProfileWithArcTest() { | 1209 ChromeLauncherControllerImplMultiProfileWithArcTest() { |
1211 auto_start_arc_test_ = true; | 1210 auto_start_arc_test_ = true; |
1212 } | 1211 } |
1213 ~ChromeLauncherControllerImplMultiProfileWithArcTest() override {} | 1212 ~ChromeLauncherControllerImplMultiProfileWithArcTest() override {} |
1214 | 1213 |
1215 private: | 1214 private: |
1216 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerImplMultiProfileWithArcTest); | 1215 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerImplMultiProfileWithArcTest); |
1217 }; | 1216 }; |
1218 | 1217 |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1777 | 1776 |
1778 arc_test_.StopArcInstance(); | 1777 arc_test_.StopArcInstance(); |
1779 | 1778 |
1780 EXPECT_EQ(ash::kInvalidShelfID, | 1779 EXPECT_EQ(ash::kInvalidShelfID, |
1781 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | 1780 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); |
1782 EXPECT_EQ(ash::kInvalidShelfID, | 1781 EXPECT_EQ(ash::kInvalidShelfID, |
1783 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | 1782 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); |
1784 EXPECT_EQ(ash::kInvalidShelfID, | 1783 EXPECT_EQ(ash::kInvalidShelfID, |
1785 launcher_controller_->GetShelfIDForAppID(arc_app_id3)); | 1784 launcher_controller_->GetShelfIDForAppID(arc_app_id3)); |
1786 | 1785 |
1787 arc::LaunchApp(profile(), arc_app_id1, ui::EF_LEFT_MOUSE_BUTTON); | 1786 arc::LaunchApp(profile(), arc_app_id1); |
1788 arc::LaunchApp(profile(), arc_app_id1, ui::EF_LEFT_MOUSE_BUTTON); | 1787 arc::LaunchApp(profile(), arc_app_id1); |
1789 arc::LaunchApp(profile(), arc_app_id2, ui::EF_LEFT_MOUSE_BUTTON); | 1788 arc::LaunchApp(profile(), arc_app_id2); |
1790 arc::LaunchApp(profile(), arc_app_id3, ui::EF_LEFT_MOUSE_BUTTON); | 1789 arc::LaunchApp(profile(), arc_app_id3); |
1791 arc::LaunchApp(profile(), arc_app_id3, ui::EF_LEFT_MOUSE_BUTTON); | 1790 arc::LaunchApp(profile(), arc_app_id3); |
1792 | 1791 |
1793 const ash::ShelfID shelf_id_app_1 = | 1792 const ash::ShelfID shelf_id_app_1 = |
1794 launcher_controller_->GetShelfIDForAppID(arc_app_id1); | 1793 launcher_controller_->GetShelfIDForAppID(arc_app_id1); |
1795 const ash::ShelfID shelf_id_app_2 = | 1794 const ash::ShelfID shelf_id_app_2 = |
1796 launcher_controller_->GetShelfIDForAppID(arc_app_id2); | 1795 launcher_controller_->GetShelfIDForAppID(arc_app_id2); |
1797 const ash::ShelfID shelf_id_app_3 = | 1796 const ash::ShelfID shelf_id_app_3 = |
1798 launcher_controller_->GetShelfIDForAppID(arc_app_id3); | 1797 launcher_controller_->GetShelfIDForAppID(arc_app_id3); |
1799 EXPECT_NE(ash::kInvalidShelfID, shelf_id_app_1); | 1798 EXPECT_NE(ash::kInvalidShelfID, shelf_id_app_1); |
1800 EXPECT_NE(ash::kInvalidShelfID, shelf_id_app_2); | 1799 EXPECT_NE(ash::kInvalidShelfID, shelf_id_app_2); |
1801 EXPECT_NE(ash::kInvalidShelfID, shelf_id_app_3); | 1800 EXPECT_NE(ash::kInvalidShelfID, shelf_id_app_3); |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1939 arc_test_.app_instance()->SendTaskCreated(3, arc_test_.fake_apps()[0]); | 1938 arc_test_.app_instance()->SendTaskCreated(3, arc_test_.fake_apps()[0]); |
1940 EXPECT_NE(ash::kInvalidShelfID, | 1939 EXPECT_NE(ash::kInvalidShelfID, |
1941 launcher_controller_->GetShelfIDForAppID(arc_app_id)); | 1940 launcher_controller_->GetShelfIDForAppID(arc_app_id)); |
1942 arc_test_.StopArcInstance(); | 1941 arc_test_.StopArcInstance(); |
1943 base::RunLoop().RunUntilIdle(); | 1942 base::RunLoop().RunUntilIdle(); |
1944 EXPECT_EQ(ash::kInvalidShelfID, | 1943 EXPECT_EQ(ash::kInvalidShelfID, |
1945 launcher_controller_->GetShelfIDForAppID(arc_app_id)); | 1944 launcher_controller_->GetShelfIDForAppID(arc_app_id)); |
1946 } | 1945 } |
1947 | 1946 |
1948 // Test race creation/deletion of Arc app. | 1947 // Test race creation/deletion of Arc app. |
1949 // TODO(khmel): Remove after moving everything to wayland protocol. | 1948 // TODO (khmel): Remove after moving everything to wayland protocol. |
1950 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcRaceCreateClose) { | 1949 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcRaceCreateClose) { |
1951 InitLauncherController(); | 1950 InitLauncherController(); |
1952 | 1951 |
1953 const std::string arc_app_id1 = | 1952 const std::string arc_app_id1 = |
1954 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); | 1953 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); |
1955 const std::string arc_app_id2 = | 1954 const std::string arc_app_id2 = |
1956 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); | 1955 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); |
1957 SendListOfArcApps(); | 1956 SendListOfArcApps(); |
1958 | 1957 |
1959 // Arc window created before and closed after mojom notification. | 1958 // Arc window created before and closed after mojom notification. |
(...skipping 1999 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3959 | 3958 |
3960 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); | 3959 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); |
3961 EnableArc(false); | 3960 EnableArc(false); |
3962 EXPECT_FALSE(arc_test_.arc_session_manager()->IsArcEnabled()); | 3961 EXPECT_FALSE(arc_test_.arc_session_manager()->IsArcEnabled()); |
3963 ASSERT_TRUE(prefs->GetAppIds().size()); | 3962 ASSERT_TRUE(prefs->GetAppIds().size()); |
3964 | 3963 |
3965 const std::string app_id = | 3964 const std::string app_id = |
3966 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]); | 3965 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]); |
3967 EXPECT_EQ(ash::kInvalidShelfID, | 3966 EXPECT_EQ(ash::kInvalidShelfID, |
3968 launcher_controller_->GetShelfIDForAppID(app_id)); | 3967 launcher_controller_->GetShelfIDForAppID(app_id)); |
3969 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); | 3968 EXPECT_TRUE(arc::LaunchApp(profile(), app_id)); |
3970 EXPECT_TRUE(arc_test_.arc_session_manager()->IsArcEnabled()); | 3969 EXPECT_TRUE(arc_test_.arc_session_manager()->IsArcEnabled()); |
3971 EXPECT_NE(ash::kInvalidShelfID, | 3970 EXPECT_NE(ash::kInvalidShelfID, |
3972 launcher_controller_->GetShelfIDForAppID(app_id)); | 3971 launcher_controller_->GetShelfIDForAppID(app_id)); |
3973 | 3972 |
3974 // Stop Arc again. Shelf item should go away. | 3973 // Stop Arc again. Shelf item should go away. |
3975 EnableArc(false); | 3974 EnableArc(false); |
3976 EXPECT_EQ(ash::kInvalidShelfID, | 3975 EXPECT_EQ(ash::kInvalidShelfID, |
3977 launcher_controller_->GetShelfIDForAppID(app_id)); | 3976 launcher_controller_->GetShelfIDForAppID(app_id)); |
3978 | 3977 |
3979 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); | 3978 EXPECT_TRUE(arc::LaunchApp(profile(), app_id)); |
3980 EXPECT_TRUE(arc_test_.arc_session_manager()->IsArcEnabled()); | 3979 EXPECT_TRUE(arc_test_.arc_session_manager()->IsArcEnabled()); |
3981 | 3980 |
3982 EXPECT_NE(ash::kInvalidShelfID, | 3981 EXPECT_NE(ash::kInvalidShelfID, |
3983 launcher_controller_->GetShelfIDForAppID(app_id)); | 3982 launcher_controller_->GetShelfIDForAppID(app_id)); |
3984 EXPECT_TRUE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id)); | 3983 EXPECT_TRUE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id)); |
3985 | 3984 |
3986 std::string window_app_id("org.chromium.arc.1"); | 3985 std::string window_app_id("org.chromium.arc.1"); |
3987 CreateArcWindow(window_app_id); | 3986 CreateArcWindow(window_app_id); |
3988 arc_test_.app_instance()->SendTaskCreated(1, | 3987 arc_test_.app_instance()->SendTaskCreated(1, |
3989 arc_test_.fake_default_apps()[0]); | 3988 arc_test_.fake_default_apps()[0]); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4067 | 4066 |
4068 // Pinned state should not change. | 4067 // Pinned state should not change. |
4069 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); | 4068 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); |
4070 launcher_controller_->UnpinAppWithID(extension2_->id()); | 4069 launcher_controller_->UnpinAppWithID(extension2_->id()); |
4071 EXPECT_EQ("AppList, Chrome, App1", GetPinnedAppStatus()); | 4070 EXPECT_EQ("AppList, Chrome, App1", GetPinnedAppStatus()); |
4072 | 4071 |
4073 // Resume syncing and sync information overrides local copy. | 4072 // Resume syncing and sync information overrides local copy. |
4074 StartAppSyncService(copy_sync_list); | 4073 StartAppSyncService(copy_sync_list); |
4075 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); | 4074 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); |
4076 } | 4075 } |
OLD | NEW |