| 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 827 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 838 bool arc_managed, | 838 bool arc_managed, |
| 839 arc::ArcSessionManager::State state, | 839 arc::ArcSessionManager::State state, |
| 840 const std::string& pin_status) { | 840 const std::string& pin_status) { |
| 841 EXPECT_EQ(arc_enabled, | 841 EXPECT_EQ(arc_enabled, |
| 842 arc_test_.arc_session_manager()->IsArcPlayStoreEnabled()); | 842 arc_test_.arc_session_manager()->IsArcPlayStoreEnabled()); |
| 843 EXPECT_EQ(arc_managed, arc_test_.arc_session_manager()->IsArcManaged()); | 843 EXPECT_EQ(arc_managed, arc_test_.arc_session_manager()->IsArcManaged()); |
| 844 EXPECT_EQ(state, arc_test_.arc_session_manager()->state()); | 844 EXPECT_EQ(state, arc_test_.arc_session_manager()->state()); |
| 845 EXPECT_EQ(pin_status, GetPinnedAppStatus()); | 845 EXPECT_EQ(pin_status, GetPinnedAppStatus()); |
| 846 } | 846 } |
| 847 | 847 |
| 848 // Creates app window and set optional Arc application id. | 848 // Creates app window and set optional ARC application id. |
| 849 views::Widget* CreateArcWindow(const std::string& window_app_id) { | 849 views::Widget* CreateArcWindow(const std::string& window_app_id) { |
| 850 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); | 850 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
| 851 params.bounds = gfx::Rect(5, 5, 20, 20); | 851 params.bounds = gfx::Rect(5, 5, 20, 20); |
| 852 params.context = GetContext(); | 852 params.context = GetContext(); |
| 853 views::Widget* widget = new views::Widget(); | 853 views::Widget* widget = new views::Widget(); |
| 854 widget->Init(params); | 854 widget->Init(params); |
| 855 // Set Arc id before showing the window to be recognized in | 855 // Set ARC id before showing the window to be recognized in |
| 856 // ArcAppWindowLauncherController. | 856 // ArcAppWindowLauncherController. |
| 857 exo::ShellSurface::SetApplicationId(widget->GetNativeWindow(), | 857 exo::ShellSurface::SetApplicationId(widget->GetNativeWindow(), |
| 858 window_app_id); | 858 window_app_id); |
| 859 widget->Show(); | 859 widget->Show(); |
| 860 widget->Activate(); | 860 widget->Activate(); |
| 861 return widget; | 861 return widget; |
| 862 } | 862 } |
| 863 | 863 |
| 864 arc::mojom::AppInfo CreateAppInfo(const std::string& name, | 864 arc::mojom::AppInfo CreateAppInfo(const std::string& name, |
| 865 const std::string& activity, | 865 const std::string& activity, |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1253 // Installing |extension3_| should add it to the launcher - behind the | 1253 // Installing |extension3_| should add it to the launcher - behind the |
| 1254 // chrome icon. | 1254 // chrome icon. |
| 1255 extension_service_->AddExtension(extension3_.get()); | 1255 extension_service_->AddExtension(extension3_.get()); |
| 1256 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus()); | 1256 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus()); |
| 1257 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 1257 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1258 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); | 1258 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 1259 } | 1259 } |
| 1260 | 1260 |
| 1261 TEST_F(ChromeLauncherControllerImplWithArcTest, | 1261 TEST_F(ChromeLauncherControllerImplWithArcTest, |
| 1262 ArcAppPinCrossPlatformWorkflow) { | 1262 ArcAppPinCrossPlatformWorkflow) { |
| 1263 // Work on Arc-disabled platform first. | 1263 // Work on ARC disabled platform first. |
| 1264 const std::string arc_app_id1 = | 1264 const std::string arc_app_id1 = |
| 1265 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); | 1265 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); |
| 1266 const std::string arc_app_id2 = | 1266 const std::string arc_app_id2 = |
| 1267 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); | 1267 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); |
| 1268 const std::string arc_app_id3 = | 1268 const std::string arc_app_id3 = |
| 1269 ArcAppTest::GetAppId(arc_test_.fake_apps()[2]); | 1269 ArcAppTest::GetAppId(arc_test_.fake_apps()[2]); |
| 1270 | 1270 |
| 1271 InitLauncherController(); | 1271 InitLauncherController(); |
| 1272 | 1272 |
| 1273 extension_service_->AddExtension(extension1_.get()); | 1273 extension_service_->AddExtension(extension1_.get()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1285 SetShelfChromeIconIndex(1); | 1285 SetShelfChromeIconIndex(1); |
| 1286 | 1286 |
| 1287 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1287 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1288 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id1)); | 1288 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id1)); |
| 1289 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); | 1289 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 1290 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2)); | 1290 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2)); |
| 1291 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 1291 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 1292 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3)); | 1292 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3)); |
| 1293 EXPECT_EQ("AppList, App1, Chrome, App2, App3", GetPinnedAppStatus()); | 1293 EXPECT_EQ("AppList, App1, Chrome, App2, App3", GetPinnedAppStatus()); |
| 1294 | 1294 |
| 1295 // Persist pin state, we don't have active pin for Arc apps yet, but pin | 1295 // Persist pin state, we don't have active pin for ARC apps yet, but pin |
| 1296 // model should have it. | 1296 // model should have it. |
| 1297 syncer::SyncDataList copy_sync_list = | 1297 syncer::SyncDataList copy_sync_list = |
| 1298 app_service_->GetAllSyncData(syncer::APP_LIST); | 1298 app_service_->GetAllSyncData(syncer::APP_LIST); |
| 1299 | 1299 |
| 1300 launcher_controller_.reset(); | 1300 launcher_controller_.reset(); |
| 1301 SendPinChanges(syncer::SyncChangeList(), true); | 1301 SendPinChanges(syncer::SyncChangeList(), true); |
| 1302 StopAppSyncService(); | 1302 StopAppSyncService(); |
| 1303 EXPECT_EQ(0U, app_service_->sync_items().size()); | 1303 EXPECT_EQ(0U, app_service_->sync_items().size()); |
| 1304 | 1304 |
| 1305 // Move to Arc-enabled platform, restart syncing with stored data. | 1305 // Move to ARC enabled platform, restart syncing with stored data. |
| 1306 StartAppSyncService(copy_sync_list); | 1306 StartAppSyncService(copy_sync_list); |
| 1307 RecreateChromeLauncher(); | 1307 RecreateChromeLauncher(); |
| 1308 | 1308 |
| 1309 // Pins must be automatically updated. | 1309 // Pins must be automatically updated. |
| 1310 SendListOfArcApps(); | 1310 SendListOfArcApps(); |
| 1311 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1311 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1312 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1)); | 1312 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1)); |
| 1313 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); | 1313 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 1314 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id2)); | 1314 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id2)); |
| 1315 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 1315 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 1316 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3)); | 1316 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3)); |
| 1317 | 1317 |
| 1318 EXPECT_EQ("AppList, App1, Chrome, Fake App 0, App2, Fake App 1, App3", | 1318 EXPECT_EQ("AppList, App1, Chrome, Fake App 0, App2, Fake App 1, App3", |
| 1319 GetPinnedAppStatus()); | 1319 GetPinnedAppStatus()); |
| 1320 | 1320 |
| 1321 // Now move pins on Arc-enabled platform. | 1321 // Now move pins on ARC enabled platform. |
| 1322 model_->Move(1, 4); | 1322 model_->Move(1, 4); |
| 1323 model_->Move(3, 1); | 1323 model_->Move(3, 1); |
| 1324 model_->Move(3, 5); | 1324 model_->Move(3, 5); |
| 1325 model_->Move(4, 2); | 1325 model_->Move(4, 2); |
| 1326 EXPECT_EQ("AppList, App2, Fake App 1, Chrome, App1, Fake App 0, App3", | 1326 EXPECT_EQ("AppList, App2, Fake App 1, Chrome, App1, Fake App 0, App3", |
| 1327 GetPinnedAppStatus()); | 1327 GetPinnedAppStatus()); |
| 1328 | 1328 |
| 1329 copy_sync_list = app_service_->GetAllSyncData(syncer::APP_LIST); | 1329 copy_sync_list = app_service_->GetAllSyncData(syncer::APP_LIST); |
| 1330 | 1330 |
| 1331 launcher_controller_.reset(); | 1331 launcher_controller_.reset(); |
| 1332 ResetPinModel(); | 1332 ResetPinModel(); |
| 1333 | 1333 |
| 1334 SendPinChanges(syncer::SyncChangeList(), true); | 1334 SendPinChanges(syncer::SyncChangeList(), true); |
| 1335 StopAppSyncService(); | 1335 StopAppSyncService(); |
| 1336 EXPECT_EQ(0U, app_service_->sync_items().size()); | 1336 EXPECT_EQ(0U, app_service_->sync_items().size()); |
| 1337 | 1337 |
| 1338 // Move back to Arc-disabled platform. | 1338 // Move back to ARC disabled platform. |
| 1339 EnableArc(false); | 1339 EnableArc(false); |
| 1340 StartAppSyncService(copy_sync_list); | 1340 StartAppSyncService(copy_sync_list); |
| 1341 RecreateChromeLauncher(); | 1341 RecreateChromeLauncher(); |
| 1342 | 1342 |
| 1343 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1343 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1344 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id1)); | 1344 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id1)); |
| 1345 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); | 1345 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 1346 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2)); | 1346 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2)); |
| 1347 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); | 1347 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); |
| 1348 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3)); | 1348 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3)); |
| 1349 EXPECT_EQ("AppList, App2, Chrome, App1, App3", GetPinnedAppStatus()); | 1349 EXPECT_EQ("AppList, App2, Chrome, App1, App3", GetPinnedAppStatus()); |
| 1350 | 1350 |
| 1351 // Now move/remove pins on Arc-disabled platform. | 1351 // Now move/remove pins on ARC disabled platform. |
| 1352 model_->Move(4, 2); | 1352 model_->Move(4, 2); |
| 1353 launcher_controller_->UnpinAppWithID(extension2_->id()); | 1353 launcher_controller_->UnpinAppWithID(extension2_->id()); |
| 1354 EXPECT_EQ("AppList, App3, Chrome, App1", GetPinnedAppStatus()); | 1354 EXPECT_EQ("AppList, App3, Chrome, App1", GetPinnedAppStatus()); |
| 1355 EnableArc(true); | 1355 EnableArc(true); |
| 1356 | 1356 |
| 1357 SendListOfArcApps(); | 1357 SendListOfArcApps(); |
| 1358 | 1358 |
| 1359 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 1359 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 1360 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1)); | 1360 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1)); |
| 1361 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); | 1361 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); |
| (...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1970 arc_test_.app_instance()->SendTaskCreated(3, arc_test_.fake_apps()[0], | 1970 arc_test_.app_instance()->SendTaskCreated(3, arc_test_.fake_apps()[0], |
| 1971 std::string()); | 1971 std::string()); |
| 1972 EXPECT_NE(ash::kInvalidShelfID, | 1972 EXPECT_NE(ash::kInvalidShelfID, |
| 1973 launcher_controller_->GetShelfIDForAppID(arc_app_id)); | 1973 launcher_controller_->GetShelfIDForAppID(arc_app_id)); |
| 1974 arc_test_.StopArcInstance(); | 1974 arc_test_.StopArcInstance(); |
| 1975 base::RunLoop().RunUntilIdle(); | 1975 base::RunLoop().RunUntilIdle(); |
| 1976 EXPECT_EQ(ash::kInvalidShelfID, | 1976 EXPECT_EQ(ash::kInvalidShelfID, |
| 1977 launcher_controller_->GetShelfIDForAppID(arc_app_id)); | 1977 launcher_controller_->GetShelfIDForAppID(arc_app_id)); |
| 1978 } | 1978 } |
| 1979 | 1979 |
| 1980 // Test race creation/deletion of Arc app. | 1980 // Test race creation/deletion of ARC app. |
| 1981 // TODO(khmel): Remove after moving everything to wayland protocol. | 1981 // TODO(khmel): Remove after moving everything to wayland protocol. |
| 1982 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcRaceCreateClose) { | 1982 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcRaceCreateClose) { |
| 1983 InitLauncherController(); | 1983 InitLauncherController(); |
| 1984 | 1984 |
| 1985 const std::string arc_app_id1 = | 1985 const std::string arc_app_id1 = |
| 1986 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); | 1986 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); |
| 1987 const std::string arc_app_id2 = | 1987 const std::string arc_app_id2 = |
| 1988 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); | 1988 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); |
| 1989 SendListOfArcApps(); | 1989 SendListOfArcApps(); |
| 1990 | 1990 |
| 1991 // Arc window created before and closed after mojom notification. | 1991 // ARC window created before and closed after mojom notification. |
| 1992 std::string window_app_id1("org.chromium.arc.1"); | 1992 std::string window_app_id1("org.chromium.arc.1"); |
| 1993 views::Widget* arc_window = CreateArcWindow(window_app_id1); | 1993 views::Widget* arc_window = CreateArcWindow(window_app_id1); |
| 1994 EXPECT_EQ(ash::kInvalidShelfID, | 1994 EXPECT_EQ(ash::kInvalidShelfID, |
| 1995 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | 1995 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); |
| 1996 ASSERT_TRUE(arc_window); | 1996 ASSERT_TRUE(arc_window); |
| 1997 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0], | 1997 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0], |
| 1998 std::string()); | 1998 std::string()); |
| 1999 EXPECT_NE(ash::kInvalidShelfID, | 1999 EXPECT_NE(ash::kInvalidShelfID, |
| 2000 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | 2000 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); |
| 2001 arc_test_.app_instance()->SendTaskDestroyed(1); | 2001 arc_test_.app_instance()->SendTaskDestroyed(1); |
| 2002 EXPECT_EQ(ash::kInvalidShelfID, | 2002 EXPECT_EQ(ash::kInvalidShelfID, |
| 2003 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | 2003 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); |
| 2004 arc_window->Close(); | 2004 arc_window->Close(); |
| 2005 base::RunLoop().RunUntilIdle(); | 2005 base::RunLoop().RunUntilIdle(); |
| 2006 EXPECT_EQ(ash::kInvalidShelfID, | 2006 EXPECT_EQ(ash::kInvalidShelfID, |
| 2007 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); | 2007 launcher_controller_->GetShelfIDForAppID(arc_app_id1)); |
| 2008 | 2008 |
| 2009 // Arc window created after and closed before mojom notification. | 2009 // ARC window created after and closed before mojom notification. |
| 2010 std::string window_app_id2("org.chromium.arc.2"); | 2010 std::string window_app_id2("org.chromium.arc.2"); |
| 2011 arc_test_.app_instance()->SendTaskCreated(2, arc_test_.fake_apps()[1], | 2011 arc_test_.app_instance()->SendTaskCreated(2, arc_test_.fake_apps()[1], |
| 2012 std::string()); | 2012 std::string()); |
| 2013 EXPECT_NE(ash::kInvalidShelfID, | 2013 EXPECT_NE(ash::kInvalidShelfID, |
| 2014 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | 2014 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); |
| 2015 arc_window = CreateArcWindow(window_app_id2); | 2015 arc_window = CreateArcWindow(window_app_id2); |
| 2016 ASSERT_TRUE(arc_window); | 2016 ASSERT_TRUE(arc_window); |
| 2017 EXPECT_NE(ash::kInvalidShelfID, | 2017 EXPECT_NE(ash::kInvalidShelfID, |
| 2018 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); | 2018 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); |
| 2019 arc_window->Close(); | 2019 arc_window->Close(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2046 base::RunLoop().RunUntilIdle(); | 2046 base::RunLoop().RunUntilIdle(); |
| 2047 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id)); | 2047 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id)); |
| 2048 | 2048 |
| 2049 arc_window = CreateArcWindow(window_app_id); | 2049 arc_window = CreateArcWindow(window_app_id); |
| 2050 ASSERT_TRUE(arc_window); | 2050 ASSERT_TRUE(arc_window); |
| 2051 base::RunLoop().RunUntilIdle(); | 2051 base::RunLoop().RunUntilIdle(); |
| 2052 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id)); | 2052 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id)); |
| 2053 } | 2053 } |
| 2054 } | 2054 } |
| 2055 | 2055 |
| 2056 // Validate that Arc app is pinned correctly and pin is removed automatically | 2056 // Validate that ARC app is pinned correctly and pin is removed automatically |
| 2057 // once app is uninstalled. | 2057 // once app is uninstalled. |
| 2058 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcAppPin) { | 2058 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcAppPin) { |
| 2059 InitLauncherController(); | 2059 InitLauncherController(); |
| 2060 | 2060 |
| 2061 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); | 2061 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); |
| 2062 | 2062 |
| 2063 SendListOfArcApps(); | 2063 SendListOfArcApps(); |
| 2064 extension_service_->AddExtension(extension1_.get()); | 2064 extension_service_->AddExtension(extension1_.get()); |
| 2065 extension_service_->AddExtension(extension2_.get()); | 2065 extension_service_->AddExtension(extension2_.get()); |
| 2066 | 2066 |
| 2067 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); | 2067 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 2068 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id)); | 2068 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id)); |
| 2069 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); | 2069 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 2070 | 2070 |
| 2071 launcher_controller_->PinAppWithID(extension1_->id()); | 2071 launcher_controller_->PinAppWithID(extension1_->id()); |
| 2072 launcher_controller_->PinAppWithID(arc_app_id); | 2072 launcher_controller_->PinAppWithID(arc_app_id); |
| 2073 launcher_controller_->PinAppWithID(extension2_->id()); | 2073 launcher_controller_->PinAppWithID(extension2_->id()); |
| 2074 | 2074 |
| 2075 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); | 2075 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); |
| 2076 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id)); | 2076 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id)); |
| 2077 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); | 2077 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); |
| 2078 | 2078 |
| 2079 EXPECT_EQ("AppList, Chrome, App1, Fake App 0, App2", GetPinnedAppStatus()); | 2079 EXPECT_EQ("AppList, Chrome, App1, Fake App 0, App2", GetPinnedAppStatus()); |
| 2080 UninstallArcApps(); | 2080 UninstallArcApps(); |
| 2081 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); | 2081 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); |
| 2082 SendListOfArcApps(); | 2082 SendListOfArcApps(); |
| 2083 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); | 2083 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); |
| 2084 | 2084 |
| 2085 // Disable/Enable Arc should persist pin state. | 2085 // Disable/Enable ARC should persist pin state. |
| 2086 launcher_controller_->PinAppWithID(arc_app_id); | 2086 launcher_controller_->PinAppWithID(arc_app_id); |
| 2087 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus()); | 2087 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus()); |
| 2088 arc::ArcSessionManager::Get()->Shutdown(); | 2088 arc::ArcSessionManager::Get()->Shutdown(); |
| 2089 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus()); | 2089 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus()); |
| 2090 arc::ArcSessionManager::Get()->OnPrimaryUserProfilePrepared(profile()); | 2090 arc::ArcSessionManager::Get()->OnPrimaryUserProfilePrepared(profile()); |
| 2091 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus()); | 2091 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus()); |
| 2092 | 2092 |
| 2093 // Opt-Out/Opt-In remove item from the shelf. | 2093 // Opt-Out/Opt-In remove item from the shelf. |
| 2094 EnableArc(false); | 2094 EnableArc(false); |
| 2095 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); | 2095 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); |
| 2096 EnableArc(true); | 2096 EnableArc(true); |
| 2097 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); | 2097 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); |
| 2098 SendListOfArcApps(); | 2098 SendListOfArcApps(); |
| 2099 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus()); | 2099 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus()); |
| 2100 } | 2100 } |
| 2101 | 2101 |
| 2102 // Validates that Arc app pins persist across OptOut/OptIn. | 2102 // Validates that ARC app pins persist across OptOut/OptIn. |
| 2103 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcAppPinOptOutOptIn) { | 2103 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcAppPinOptOutOptIn) { |
| 2104 InitLauncherController(); | 2104 InitLauncherController(); |
| 2105 | 2105 |
| 2106 const std::string arc_app_id1 = | 2106 const std::string arc_app_id1 = |
| 2107 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); | 2107 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); |
| 2108 const std::string arc_app_id2 = | 2108 const std::string arc_app_id2 = |
| 2109 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); | 2109 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); |
| 2110 | 2110 |
| 2111 SendListOfArcApps(); | 2111 SendListOfArcApps(); |
| 2112 extension_service_->AddExtension(extension1_.get()); | 2112 extension_service_->AddExtension(extension1_.get()); |
| (...skipping 1456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3569 profile()->GetTestingPrefService()->SetManagedPref( | 3569 profile()->GetTestingPrefService()->SetManagedPref( |
| 3570 prefs::kPolicyPinnedLauncherApps, policy_value.DeepCopy()); | 3570 prefs::kPolicyPinnedLauncherApps, policy_value.DeepCopy()); |
| 3571 | 3571 |
| 3572 EXPECT_TRUE(launcher_controller_->IsAppPinned(app_id)); | 3572 EXPECT_TRUE(launcher_controller_->IsAppPinned(app_id)); |
| 3573 EXPECT_EQ(AppListControllerDelegate::PIN_FIXED, | 3573 EXPECT_EQ(AppListControllerDelegate::PIN_FIXED, |
| 3574 GetPinnableForAppID(app_id, profile())); | 3574 GetPinnableForAppID(app_id, profile())); |
| 3575 } | 3575 } |
| 3576 | 3576 |
| 3577 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcManaged) { | 3577 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcManaged) { |
| 3578 extension_service_->AddExtension(arc_support_host_.get()); | 3578 extension_service_->AddExtension(arc_support_host_.get()); |
| 3579 // Test enables Arc, so turn it off for initial values. | 3579 // Test enables ARC, so turn it off for initial values. |
| 3580 EnableArc(false); | 3580 EnableArc(false); |
| 3581 | 3581 |
| 3582 InitLauncherController(); | 3582 InitLauncherController(); |
| 3583 | 3583 |
| 3584 // To prevent import legacy pins each time. | 3584 // To prevent import legacy pins each time. |
| 3585 // Initially pins are imported from legacy pref based model. | 3585 // Initially pins are imported from legacy pref based model. |
| 3586 StartPrefSyncService(syncer::SyncDataList()); | 3586 StartPrefSyncService(syncer::SyncDataList()); |
| 3587 | 3587 |
| 3588 arc::ArcSessionManager::SetShelfDelegateForTesting( | 3588 arc::ArcSessionManager::SetShelfDelegateForTesting( |
| 3589 launcher_controller_.get()); | 3589 launcher_controller_.get()); |
| 3590 | 3590 |
| 3591 // Initial run, Arc is not managed and disabled, Play Store pin should be | 3591 // Initial run, ARC is not managed and disabled, Play Store pin should be |
| 3592 // available. | 3592 // available. |
| 3593 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, | 3593 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, |
| 3594 "AppList, Chrome, Play Store"); | 3594 "AppList, Chrome, Play Store"); |
| 3595 | 3595 |
| 3596 // Arc is managed and enabled, Play Store pin should be available. | 3596 // ARC is managed and enabled, Play Store pin should be available. |
| 3597 // Note: SHOWING_TERMS_OF_SERVICE here means that opt-in flow starts. | 3597 // Note: SHOWING_TERMS_OF_SERVICE here means that opt-in flow starts. |
| 3598 profile()->GetTestingPrefService()->SetManagedPref( | 3598 profile()->GetTestingPrefService()->SetManagedPref( |
| 3599 prefs::kArcEnabled, new base::FundamentalValue(true)); | 3599 prefs::kArcEnabled, new base::FundamentalValue(true)); |
| 3600 base::RunLoop().RunUntilIdle(); | 3600 base::RunLoop().RunUntilIdle(); |
| 3601 ValidateArcState(true, true, | 3601 ValidateArcState(true, true, |
| 3602 arc::ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, | 3602 arc::ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, |
| 3603 "AppList, Chrome, Play Store"); | 3603 "AppList, Chrome, Play Store"); |
| 3604 | 3604 |
| 3605 // Arc is managed and disabled, Play Store pin should not be available. | 3605 // ARC is managed and disabled, Play Store pin should not be available. |
| 3606 profile()->GetTestingPrefService()->SetManagedPref( | 3606 profile()->GetTestingPrefService()->SetManagedPref( |
| 3607 prefs::kArcEnabled, new base::FundamentalValue(false)); | 3607 prefs::kArcEnabled, new base::FundamentalValue(false)); |
| 3608 base::RunLoop().RunUntilIdle(); | 3608 base::RunLoop().RunUntilIdle(); |
| 3609 ValidateArcState(false, true, arc::ArcSessionManager::State::STOPPED, | 3609 ValidateArcState(false, true, arc::ArcSessionManager::State::STOPPED, |
| 3610 "AppList, Chrome"); | 3610 "AppList, Chrome"); |
| 3611 | 3611 |
| 3612 // Arc is not managed and disabled, Play Store pin should be available. | 3612 // ARC is not managed and disabled, Play Store pin should be available. |
| 3613 profile()->GetTestingPrefService()->RemoveManagedPref(prefs::kArcEnabled); | 3613 profile()->GetTestingPrefService()->RemoveManagedPref(prefs::kArcEnabled); |
| 3614 base::RunLoop().RunUntilIdle(); | 3614 base::RunLoop().RunUntilIdle(); |
| 3615 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, | 3615 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, |
| 3616 "AppList, Chrome, Play Store"); | 3616 "AppList, Chrome, Play Store"); |
| 3617 | 3617 |
| 3618 // Arc is not managed and enabled, Play Store pin should be available. | 3618 // ARC is not managed and enabled, Play Store pin should be available. |
| 3619 EnableArc(true); | 3619 EnableArc(true); |
| 3620 ValidateArcState(true, false, | 3620 ValidateArcState(true, false, |
| 3621 arc::ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, | 3621 arc::ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, |
| 3622 "AppList, Chrome, Play Store"); | 3622 "AppList, Chrome, Play Store"); |
| 3623 | 3623 |
| 3624 // User disables Arc. Arc is not managed and disabled, Play Store pin should | 3624 // User disables ARC. ARC is not managed and disabled, Play Store pin should |
| 3625 // be automatically removed. | 3625 // be automatically removed. |
| 3626 EnableArc(false); | 3626 EnableArc(false); |
| 3627 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, | 3627 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, |
| 3628 "AppList, Chrome"); | 3628 "AppList, Chrome"); |
| 3629 | 3629 |
| 3630 // Even if re-enable it again, Play Store pin does not appear automatically. | 3630 // Even if re-enable it again, Play Store pin does not appear automatically. |
| 3631 EnableArc(true); | 3631 EnableArc(true); |
| 3632 ValidateArcState(true, false, | 3632 ValidateArcState(true, false, |
| 3633 arc::ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, | 3633 arc::ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, |
| 3634 "AppList, Chrome"); | 3634 "AppList, Chrome"); |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3956 | 3956 |
| 3957 const std::string app_id = | 3957 const std::string app_id = |
| 3958 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]); | 3958 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]); |
| 3959 EXPECT_EQ(ash::kInvalidShelfID, | 3959 EXPECT_EQ(ash::kInvalidShelfID, |
| 3960 launcher_controller_->GetShelfIDForAppID(app_id)); | 3960 launcher_controller_->GetShelfIDForAppID(app_id)); |
| 3961 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); | 3961 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); |
| 3962 EXPECT_TRUE(arc_test_.arc_session_manager()->IsArcPlayStoreEnabled()); | 3962 EXPECT_TRUE(arc_test_.arc_session_manager()->IsArcPlayStoreEnabled()); |
| 3963 EXPECT_NE(ash::kInvalidShelfID, | 3963 EXPECT_NE(ash::kInvalidShelfID, |
| 3964 launcher_controller_->GetShelfIDForAppID(app_id)); | 3964 launcher_controller_->GetShelfIDForAppID(app_id)); |
| 3965 | 3965 |
| 3966 // Stop Arc again. Shelf item should go away. | 3966 // Stop ARC again. Shelf item should go away. |
| 3967 EnableArc(false); | 3967 EnableArc(false); |
| 3968 EXPECT_EQ(ash::kInvalidShelfID, | 3968 EXPECT_EQ(ash::kInvalidShelfID, |
| 3969 launcher_controller_->GetShelfIDForAppID(app_id)); | 3969 launcher_controller_->GetShelfIDForAppID(app_id)); |
| 3970 | 3970 |
| 3971 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); | 3971 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); |
| 3972 EXPECT_TRUE(arc_test_.arc_session_manager()->IsArcPlayStoreEnabled()); | 3972 EXPECT_TRUE(arc_test_.arc_session_manager()->IsArcPlayStoreEnabled()); |
| 3973 | 3973 |
| 3974 EXPECT_NE(ash::kInvalidShelfID, | 3974 EXPECT_NE(ash::kInvalidShelfID, |
| 3975 launcher_controller_->GetShelfIDForAppID(app_id)); | 3975 launcher_controller_->GetShelfIDForAppID(app_id)); |
| 3976 EXPECT_TRUE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id)); | 3976 EXPECT_TRUE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id)); |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4209 EXPECT_EQ(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, | 4209 EXPECT_EQ(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, |
| 4210 shelf_controller->auto_hide()); | 4210 shelf_controller->auto_hide()); |
| 4211 EXPECT_EQ(2u, shelf_controller->auto_hide_change_count()); | 4211 EXPECT_EQ(2u, shelf_controller->auto_hide_change_count()); |
| 4212 | 4212 |
| 4213 PrefService* prefs = profile()->GetTestingPrefService(); | 4213 PrefService* prefs = profile()->GetTestingPrefService(); |
| 4214 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignmentLocal)); | 4214 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignmentLocal)); |
| 4215 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignment)); | 4215 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignment)); |
| 4216 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehaviorLocal)); | 4216 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehaviorLocal)); |
| 4217 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehavior)); | 4217 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehavior)); |
| 4218 } | 4218 } |
| OLD | NEW |