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

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

Issue 2707133006: Start ARC and sign in after Chrome OS login (Closed)
Patch Set: rebase to ToT Created 3 years, 9 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 <algorithm> 9 #include <algorithm>
10 #include <map> 10 #include <map>
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 #include "chrome/common/chrome_constants.h" 75 #include "chrome/common/chrome_constants.h"
76 #include "chrome/common/chrome_switches.h" 76 #include "chrome/common/chrome_switches.h"
77 #include "chrome/common/extensions/extension_constants.h" 77 #include "chrome/common/extensions/extension_constants.h"
78 #include "chrome/common/pref_names.h" 78 #include "chrome/common/pref_names.h"
79 #include "chrome/test/base/browser_with_test_window_test.h" 79 #include "chrome/test/base/browser_with_test_window_test.h"
80 #include "chrome/test/base/test_browser_window_aura.h" 80 #include "chrome/test/base/test_browser_window_aura.h"
81 #include "chrome/test/base/testing_browser_process.h" 81 #include "chrome/test/base/testing_browser_process.h"
82 #include "chrome/test/base/testing_profile.h" 82 #include "chrome/test/base/testing_profile.h"
83 #include "chrome/test/base/testing_profile_manager.h" 83 #include "chrome/test/base/testing_profile_manager.h"
84 #include "chromeos/chromeos_switches.h" 84 #include "chromeos/chromeos_switches.h"
85 #include "components/arc/arc_util.h"
85 #include "components/arc/common/app.mojom.h" 86 #include "components/arc/common/app.mojom.h"
86 #include "components/arc/test/fake_app_instance.h" 87 #include "components/arc/test/fake_app_instance.h"
87 #include "components/exo/shell_surface.h" 88 #include "components/exo/shell_surface.h"
88 #include "components/prefs/pref_notifier_impl.h" 89 #include "components/prefs/pref_notifier_impl.h"
89 #include "components/signin/core/account_id/account_id.h" 90 #include "components/signin/core/account_id/account_id.h"
90 #include "components/sync/model/attachments/attachment_service_proxy_for_test.h" 91 #include "components/sync/model/attachments/attachment_service_proxy_for_test.h"
91 #include "components/sync/model/fake_sync_change_processor.h" 92 #include "components/sync/model/fake_sync_change_processor.h"
92 #include "components/sync/model/sync_error_factory_mock.h" 93 #include "components/sync/model/sync_error_factory_mock.h"
93 #include "components/sync/protocol/sync.pb.h" 94 #include "components/sync/protocol/sync.pb.h"
94 #include "components/sync_preferences/pref_model_associator.h" 95 #include "components/sync_preferences/pref_model_associator.h"
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 arc_test_.app_instance()->RefreshAppList(); 871 arc_test_.app_instance()->RefreshAppList();
871 arc_test_.app_instance()->SendRefreshAppList(arc_test_.fake_apps()); 872 arc_test_.app_instance()->SendRefreshAppList(arc_test_.fake_apps());
872 } 873 }
873 874
874 void UninstallArcApps() { 875 void UninstallArcApps() {
875 arc_test_.app_instance()->RefreshAppList(); 876 arc_test_.app_instance()->RefreshAppList();
876 arc_test_.app_instance()->SendRefreshAppList( 877 arc_test_.app_instance()->SendRefreshAppList(
877 std::vector<arc::mojom::AppInfo>()); 878 std::vector<arc::mojom::AppInfo>());
878 } 879 }
879 880
880 void EnableArc(bool enabled) { 881 // TODO(victorhsieh): Add test coverage for when ARC is started regardless
882 // Play Store opt-in status, and the followed opt-in and opt-out.
883 void EnablePlayStore(bool enabled) {
881 arc::SetArcPlayStoreEnabledForProfile(profile(), enabled); 884 arc::SetArcPlayStoreEnabledForProfile(profile(), enabled);
882 base::RunLoop().RunUntilIdle(); 885 base::RunLoop().RunUntilIdle();
883 } 886 }
884 887
885 void EnableTabletMode(bool enable) { 888 void EnableTabletMode(bool enable) {
886 ash::MaximizeModeController* controller = 889 ash::MaximizeModeController* controller =
887 ash::WmShell::Get()->maximize_mode_controller(); 890 ash::WmShell::Get()->maximize_mode_controller();
888 controller->EnableMaximizeModeWindowManager(enable); 891 controller->EnableMaximizeModeWindowManager(enable);
889 } 892 }
890 893
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
991 aura::client::ParentWindowWithContext(window.get(), GetContext(), 994 aura::client::ParentWindowWithContext(window.get(), GetContext(),
992 gfx::Rect(200, 200)); 995 gfx::Rect(200, 200));
993 996
994 return new TestBrowserWindowAura(std::move(window)); 997 return new TestBrowserWindowAura(std::move(window));
995 } 998 }
996 999
997 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerImplTest); 1000 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerImplTest);
998 }; 1001 };
999 1002
1000 class ChromeLauncherControllerImplWithArcTest 1003 class ChromeLauncherControllerImplWithArcTest
1001 : public ChromeLauncherControllerImplTest { 1004 : public ChromeLauncherControllerImplTest,
1005 public ::testing::WithParamInterface<bool> {
1002 protected: 1006 protected:
1003 ChromeLauncherControllerImplWithArcTest() { auto_start_arc_test_ = true; } 1007 ChromeLauncherControllerImplWithArcTest() { auto_start_arc_test_ = true; }
1004 ~ChromeLauncherControllerImplWithArcTest() override {} 1008 ~ChromeLauncherControllerImplWithArcTest() override {}
1005 1009
1010 void SetUp() override {
1011 if (GetParam())
1012 arc::SetArcAlwaysStartForTesting();
1013 ChromeLauncherControllerImplTest::SetUp();
1014 }
1015
1006 private: 1016 private:
1007 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerImplWithArcTest); 1017 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerImplWithArcTest);
1008 }; 1018 };
1009 1019
1020 INSTANTIATE_TEST_CASE_P(,
1021 ChromeLauncherControllerImplWithArcTest,
1022 ::testing::Bool());
1023
1010 // Watches WebContents and blocks until it is destroyed. This is needed for 1024 // Watches WebContents and blocks until it is destroyed. This is needed for
1011 // the destruction of a V2 application. 1025 // the destruction of a V2 application.
1012 class WebContentsDestroyedWatcher : public content::WebContentsObserver { 1026 class WebContentsDestroyedWatcher : public content::WebContentsObserver {
1013 public: 1027 public:
1014 explicit WebContentsDestroyedWatcher(content::WebContents* web_contents) 1028 explicit WebContentsDestroyedWatcher(content::WebContents* web_contents)
1015 : content::WebContentsObserver(web_contents), 1029 : content::WebContentsObserver(web_contents),
1016 message_loop_runner_(new content::MessageLoopRunner) { 1030 message_loop_runner_(new content::MessageLoopRunner) {
1017 EXPECT_TRUE(web_contents != NULL); 1031 EXPECT_TRUE(web_contents != NULL);
1018 } 1032 }
1019 ~WebContentsDestroyedWatcher() override {} 1033 ~WebContentsDestroyedWatcher() override {}
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 1284
1271 ash::test::TestShellDelegate* shell_delegate_; 1285 ash::test::TestShellDelegate* shell_delegate_;
1272 1286
1273 ProfileToNameMap created_profiles_; 1287 ProfileToNameMap created_profiles_;
1274 1288
1275 DISALLOW_COPY_AND_ASSIGN( 1289 DISALLOW_COPY_AND_ASSIGN(
1276 MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest); 1290 MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest);
1277 }; 1291 };
1278 1292
1279 class ChromeLauncherControllerImplMultiProfileWithArcTest 1293 class ChromeLauncherControllerImplMultiProfileWithArcTest
1280 : public MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest { // NOLINT(whitespace/line_length) 1294 : public MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest , // NOLINT(whitespace/line_length)
1295 public ::testing::WithParamInterface<bool> {
1281 protected: 1296 protected:
1282 ChromeLauncherControllerImplMultiProfileWithArcTest() { 1297 ChromeLauncherControllerImplMultiProfileWithArcTest() {
1283 auto_start_arc_test_ = true; 1298 auto_start_arc_test_ = true;
1284 } 1299 }
1285 ~ChromeLauncherControllerImplMultiProfileWithArcTest() override {} 1300 ~ChromeLauncherControllerImplMultiProfileWithArcTest() override {}
1286 1301
1302 void SetUp() override {
1303 if (GetParam())
1304 arc::SetArcAlwaysStartForTesting();
1305 MultiProfileMultiBrowserShelfLayoutChromeLauncherControllerImplTest::
1306 SetUp();
1307 }
1308
1287 private: 1309 private:
1288 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerImplMultiProfileWithArcTest); 1310 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerImplMultiProfileWithArcTest);
1289 }; 1311 };
1290 1312
1313 INSTANTIATE_TEST_CASE_P(,
1314 ChromeLauncherControllerImplMultiProfileWithArcTest,
1315 ::testing::Bool());
1316
1291 TEST_F(ChromeLauncherControllerImplTest, DefaultApps) { 1317 TEST_F(ChromeLauncherControllerImplTest, DefaultApps) {
1292 InitLauncherController(); 1318 InitLauncherController();
1293 // Model should only contain the browser shortcut and app list items. 1319 // Model should only contain the browser shortcut and app list items.
1294 EXPECT_EQ(2, model_->item_count()); 1320 EXPECT_EQ(2, model_->item_count());
1295 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); 1321 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
1296 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); 1322 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id()));
1297 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id())); 1323 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension3_->id()));
1298 1324
1299 // Installing |extension3_| should add it to the launcher - behind the 1325 // Installing |extension3_| should add it to the launcher - behind the
1300 // chrome icon. 1326 // chrome icon.
1301 extension_service_->AddExtension(extension3_.get()); 1327 extension_service_->AddExtension(extension3_.get());
1302 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus()); 1328 EXPECT_EQ("AppList, Chrome, App3", GetPinnedAppStatus());
1303 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); 1329 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
1304 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); 1330 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id()));
1305 } 1331 }
1306 1332
1307 TEST_F(ChromeLauncherControllerImplWithArcTest, 1333 TEST_P(ChromeLauncherControllerImplWithArcTest,
1308 ArcAppPinCrossPlatformWorkflow) { 1334 ArcAppPinCrossPlatformWorkflow) {
1309 // Work on ARC disabled platform first. 1335 // Work on ARC disabled platform first.
1310 const std::string arc_app_id1 = 1336 const std::string arc_app_id1 =
1311 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); 1337 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]);
1312 const std::string arc_app_id2 = 1338 const std::string arc_app_id2 =
1313 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); 1339 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]);
1314 const std::string arc_app_id3 = 1340 const std::string arc_app_id3 =
1315 ArcAppTest::GetAppId(arc_test_.fake_apps()[2]); 1341 ArcAppTest::GetAppId(arc_test_.fake_apps()[2]);
1316 1342
1317 InitLauncherController(); 1343 InitLauncherController();
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1375 copy_sync_list = app_service_->GetAllSyncData(syncer::APP_LIST); 1401 copy_sync_list = app_service_->GetAllSyncData(syncer::APP_LIST);
1376 1402
1377 launcher_controller_.reset(); 1403 launcher_controller_.reset();
1378 ResetPinModel(); 1404 ResetPinModel();
1379 1405
1380 SendPinChanges(syncer::SyncChangeList(), true); 1406 SendPinChanges(syncer::SyncChangeList(), true);
1381 StopAppSyncService(); 1407 StopAppSyncService();
1382 EXPECT_EQ(0U, app_service_->sync_items().size()); 1408 EXPECT_EQ(0U, app_service_->sync_items().size());
1383 1409
1384 // Move back to ARC disabled platform. 1410 // Move back to ARC disabled platform.
1385 EnableArc(false); 1411 // TODO(victorhsieh): Implement opt-out.
1412 if (arc::ShouldArcAlwaysStart())
1413 return;
1414 EnablePlayStore(false);
1386 StartAppSyncService(copy_sync_list); 1415 StartAppSyncService(copy_sync_list);
1387 RecreateChromeLauncher(); 1416 RecreateChromeLauncher();
1388 1417
1389 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); 1418 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id()));
1390 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id1)); 1419 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id1));
1391 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); 1420 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id()));
1392 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2)); 1421 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2));
1393 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); 1422 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id()));
1394 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3)); 1423 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3));
1395 EXPECT_EQ("AppList, App2, Chrome, App1, App3", GetPinnedAppStatus()); 1424 EXPECT_EQ("AppList, App2, Chrome, App1, App3", GetPinnedAppStatus());
1396 1425
1397 // Now move/remove pins on ARC disabled platform. 1426 // Now move/remove pins on ARC disabled platform.
1398 model_->Move(4, 2); 1427 model_->Move(4, 2);
1399 launcher_controller_->UnpinAppWithID(extension2_->id()); 1428 launcher_controller_->UnpinAppWithID(extension2_->id());
1400 EXPECT_EQ("AppList, App3, Chrome, App1", GetPinnedAppStatus()); 1429 EXPECT_EQ("AppList, App3, Chrome, App1", GetPinnedAppStatus());
1401 EnableArc(true); 1430 EnablePlayStore(true);
1402 1431
1403 SendListOfArcApps(); 1432 SendListOfArcApps();
1404 1433
1405 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); 1434 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id()));
1406 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1)); 1435 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1));
1407 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); 1436 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id()));
1408 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id2)); 1437 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id2));
1409 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id())); 1438 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension3_->id()));
1410 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3)); 1439 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id3));
1411 EXPECT_EQ("AppList, Fake App 1, App3, Chrome, App1, Fake App 0", 1440 EXPECT_EQ("AppList, Fake App 1, App3, Chrome, App1, Fake App 0",
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
1828 1857
1829 // Check that removing more items does not crash and changes nothing. 1858 // Check that removing more items does not crash and changes nothing.
1830 launcher_controller_->UnlockV1AppWithID(extension2_->id()); 1859 launcher_controller_->UnlockV1AppWithID(extension2_->id());
1831 RestoreUnpinnedRunningApplicationOrder(current_account_id); 1860 RestoreUnpinnedRunningApplicationOrder(current_account_id);
1832 EXPECT_EQ("AppList, Chrome, app3", GetPinnedAppStatus()); 1861 EXPECT_EQ("AppList, Chrome, app3", GetPinnedAppStatus());
1833 launcher_controller_->UnlockV1AppWithID(extension3_->id()); 1862 launcher_controller_->UnlockV1AppWithID(extension3_->id());
1834 RestoreUnpinnedRunningApplicationOrder(current_account_id); 1863 RestoreUnpinnedRunningApplicationOrder(current_account_id);
1835 EXPECT_EQ("AppList, Chrome", GetPinnedAppStatus()); 1864 EXPECT_EQ("AppList, Chrome", GetPinnedAppStatus());
1836 } 1865 }
1837 1866
1838 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcDeferredLaunch) { 1867 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcDeferredLaunch) {
1839 RecreateChromeLauncher(); 1868 RecreateChromeLauncher();
1840 1869
1841 const arc::mojom::AppInfo& app1 = arc_test_.fake_apps()[0]; 1870 const arc::mojom::AppInfo& app1 = arc_test_.fake_apps()[0];
1842 const arc::mojom::AppInfo& app2 = arc_test_.fake_apps()[1]; 1871 const arc::mojom::AppInfo& app2 = arc_test_.fake_apps()[1];
1843 const arc::mojom::AppInfo& app3 = arc_test_.fake_apps()[2]; 1872 const arc::mojom::AppInfo& app3 = arc_test_.fake_apps()[2];
1844 const std::string arc_app_id1 = ArcAppTest::GetAppId(app1); 1873 const std::string arc_app_id1 = ArcAppTest::GetAppId(app1);
1845 const std::string arc_app_id2 = ArcAppTest::GetAppId(app2); 1874 const std::string arc_app_id2 = ArcAppTest::GetAppId(app2);
1846 const std::string arc_app_id3 = ArcAppTest::GetAppId(app3); 1875 const std::string arc_app_id3 = ArcAppTest::GetAppId(app3);
1847 1876
1848 SendListOfArcApps(); 1877 SendListOfArcApps();
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1903 1932
1904 const arc::FakeAppInstance::Request* request1 = 1933 const arc::FakeAppInstance::Request* request1 =
1905 arc_test_.app_instance()->launch_requests()[0].get(); 1934 arc_test_.app_instance()->launch_requests()[0].get();
1906 const arc::FakeAppInstance::Request* request2 = 1935 const arc::FakeAppInstance::Request* request2 =
1907 arc_test_.app_instance()->launch_requests()[1].get(); 1936 arc_test_.app_instance()->launch_requests()[1].get();
1908 1937
1909 EXPECT_TRUE((request1->IsForApp(app2) && request2->IsForApp(app3)) || 1938 EXPECT_TRUE((request1->IsForApp(app2) && request2->IsForApp(app3)) ||
1910 (request1->IsForApp(app3) && request2->IsForApp(app2))); 1939 (request1->IsForApp(app3) && request2->IsForApp(app2)));
1911 } 1940 }
1912 1941
1913 TEST_F(ChromeLauncherControllerImplMultiProfileWithArcTest, ArcMultiUser) { 1942 TEST_P(ChromeLauncherControllerImplMultiProfileWithArcTest, ArcMultiUser) {
1914 SendListOfArcApps(); 1943 SendListOfArcApps();
1915 1944
1916 InitLauncherController(); 1945 InitLauncherController();
1917 SetLauncherControllerHelper(new TestLauncherControllerHelper); 1946 SetLauncherControllerHelper(new TestLauncherControllerHelper);
1918 1947
1919 // App1 exists all the time. 1948 // App1 exists all the time.
1920 // App2 is created when primary user is active and destroyed when secondary 1949 // App2 is created when primary user is active and destroyed when secondary
1921 // user is active. 1950 // user is active.
1922 // App3 created when secondary user is active. 1951 // App3 created when secondary user is active.
1923 1952
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1975 EXPECT_EQ(ash::kInvalidShelfID, 2004 EXPECT_EQ(ash::kInvalidShelfID,
1976 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); 2005 launcher_controller_->GetShelfIDForAppID(arc_app_id2));
1977 EXPECT_NE(ash::kInvalidShelfID, 2006 EXPECT_NE(ash::kInvalidShelfID,
1978 launcher_controller_->GetShelfIDForAppID(arc_app_id3)); 2007 launcher_controller_->GetShelfIDForAppID(arc_app_id3));
1979 2008
1980 // Close active window to let test passes. 2009 // Close active window to let test passes.
1981 arc_window1->CloseNow(); 2010 arc_window1->CloseNow();
1982 arc_window3->CloseNow(); 2011 arc_window3->CloseNow();
1983 } 2012 }
1984 2013
1985 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcRunningApp) { 2014 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcRunningApp) {
1986 InitLauncherController(); 2015 InitLauncherController();
1987 2016
1988 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); 2017 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]);
1989 SendListOfArcApps(); 2018 SendListOfArcApps();
1990 EXPECT_EQ(ash::kInvalidShelfID, 2019 EXPECT_EQ(ash::kInvalidShelfID,
1991 launcher_controller_->GetShelfIDForAppID(arc_app_id)); 2020 launcher_controller_->GetShelfIDForAppID(arc_app_id));
1992 2021
1993 // Normal flow, create/destroy tasks. 2022 // Normal flow, create/destroy tasks.
1994 std::string window_app_id1("org.chromium.arc.1"); 2023 std::string window_app_id1("org.chromium.arc.1");
1995 std::string window_app_id2("org.chromium.arc.2"); 2024 std::string window_app_id2("org.chromium.arc.2");
(...skipping 22 matching lines...) Expand all
2018 EXPECT_NE(ash::kInvalidShelfID, 2047 EXPECT_NE(ash::kInvalidShelfID,
2019 launcher_controller_->GetShelfIDForAppID(arc_app_id)); 2048 launcher_controller_->GetShelfIDForAppID(arc_app_id));
2020 arc_test_.StopArcInstance(); 2049 arc_test_.StopArcInstance();
2021 base::RunLoop().RunUntilIdle(); 2050 base::RunLoop().RunUntilIdle();
2022 EXPECT_EQ(ash::kInvalidShelfID, 2051 EXPECT_EQ(ash::kInvalidShelfID,
2023 launcher_controller_->GetShelfIDForAppID(arc_app_id)); 2052 launcher_controller_->GetShelfIDForAppID(arc_app_id));
2024 } 2053 }
2025 2054
2026 // Test race creation/deletion of ARC app. 2055 // Test race creation/deletion of ARC app.
2027 // TODO(khmel): Remove after moving everything to wayland protocol. 2056 // TODO(khmel): Remove after moving everything to wayland protocol.
2028 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcRaceCreateClose) { 2057 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcRaceCreateClose) {
2029 InitLauncherController(); 2058 InitLauncherController();
2030 2059
2031 const std::string arc_app_id1 = 2060 const std::string arc_app_id1 =
2032 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); 2061 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]);
2033 const std::string arc_app_id2 = 2062 const std::string arc_app_id2 =
2034 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); 2063 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]);
2035 SendListOfArcApps(); 2064 SendListOfArcApps();
2036 2065
2037 // ARC window created before and closed after mojom notification. 2066 // ARC window created before and closed after mojom notification.
2038 std::string window_app_id1("org.chromium.arc.1"); 2067 std::string window_app_id1("org.chromium.arc.1");
(...skipping 26 matching lines...) Expand all
2065 arc_window->Close(); 2094 arc_window->Close();
2066 base::RunLoop().RunUntilIdle(); 2095 base::RunLoop().RunUntilIdle();
2067 // Closing window does not close shelf item. It is closed on task destroy. 2096 // Closing window does not close shelf item. It is closed on task destroy.
2068 EXPECT_NE(ash::kInvalidShelfID, 2097 EXPECT_NE(ash::kInvalidShelfID,
2069 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); 2098 launcher_controller_->GetShelfIDForAppID(arc_app_id2));
2070 arc_test_.app_instance()->SendTaskDestroyed(2); 2099 arc_test_.app_instance()->SendTaskDestroyed(2);
2071 EXPECT_EQ(ash::kInvalidShelfID, 2100 EXPECT_EQ(ash::kInvalidShelfID,
2072 launcher_controller_->GetShelfIDForAppID(arc_app_id2)); 2101 launcher_controller_->GetShelfIDForAppID(arc_app_id2));
2073 } 2102 }
2074 2103
2075 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcWindowRecreation) { 2104 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcWindowRecreation) {
2076 InitLauncherController(); 2105 InitLauncherController();
2077 2106
2078 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); 2107 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]);
2079 SendListOfArcApps(); 2108 SendListOfArcApps();
2080 2109
2081 std::string window_app_id("org.chromium.arc.1"); 2110 std::string window_app_id("org.chromium.arc.1");
2082 views::Widget* arc_window = CreateArcWindow(window_app_id); 2111 views::Widget* arc_window = CreateArcWindow(window_app_id);
2083 ASSERT_TRUE(arc_window); 2112 ASSERT_TRUE(arc_window);
2084 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0], 2113 arc_test_.app_instance()->SendTaskCreated(1, arc_test_.fake_apps()[0],
2085 std::string()); 2114 std::string());
2086 const ash::ShelfID shelf_id = 2115 const ash::ShelfID shelf_id =
2087 launcher_controller_->GetShelfIDForAppID(arc_app_id); 2116 launcher_controller_->GetShelfIDForAppID(arc_app_id);
2088 EXPECT_NE(ash::kInvalidShelfID, shelf_id); 2117 EXPECT_NE(ash::kInvalidShelfID, shelf_id);
2089 2118
2090 for (int i = 0; i < 3; ++i) { 2119 for (int i = 0; i < 3; ++i) {
2091 arc_window->Close(); 2120 arc_window->Close();
2092 base::RunLoop().RunUntilIdle(); 2121 base::RunLoop().RunUntilIdle();
2093 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id)); 2122 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id));
2094 2123
2095 arc_window = CreateArcWindow(window_app_id); 2124 arc_window = CreateArcWindow(window_app_id);
2096 ASSERT_TRUE(arc_window); 2125 ASSERT_TRUE(arc_window);
2097 base::RunLoop().RunUntilIdle(); 2126 base::RunLoop().RunUntilIdle();
2098 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id)); 2127 EXPECT_EQ(shelf_id, launcher_controller_->GetShelfIDForAppID(arc_app_id));
2099 } 2128 }
2100 } 2129 }
2101 2130
2102 // Validate that ARC app is pinned correctly and pin is removed automatically 2131 // Validate that ARC app is pinned correctly and pin is removed automatically
2103 // once app is uninstalled. 2132 // once app is uninstalled.
2104 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcAppPin) { 2133 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcAppPin) {
2105 InitLauncherController(); 2134 InitLauncherController();
2106 2135
2107 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); 2136 const std::string arc_app_id = ArcAppTest::GetAppId(arc_test_.fake_apps()[0]);
2108 2137
2109 SendListOfArcApps(); 2138 SendListOfArcApps();
2110 extension_service_->AddExtension(extension1_.get()); 2139 extension_service_->AddExtension(extension1_.get());
2111 extension_service_->AddExtension(extension2_.get()); 2140 extension_service_->AddExtension(extension2_.get());
2112 2141
2113 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id())); 2142 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension1_->id()));
2114 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id)); 2143 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id));
2115 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id())); 2144 EXPECT_FALSE(launcher_controller_->IsAppPinned(extension2_->id()));
2116 2145
2117 launcher_controller_->PinAppWithID(extension1_->id()); 2146 launcher_controller_->PinAppWithID(extension1_->id());
2118 launcher_controller_->PinAppWithID(arc_app_id); 2147 launcher_controller_->PinAppWithID(arc_app_id);
2119 launcher_controller_->PinAppWithID(extension2_->id()); 2148 launcher_controller_->PinAppWithID(extension2_->id());
2120 2149
2121 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); 2150 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id()));
2122 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id)); 2151 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id));
2123 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); 2152 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id()));
2124 2153
2125 EXPECT_EQ("AppList, Chrome, App1, Fake App 0, App2", GetPinnedAppStatus()); 2154 EXPECT_EQ("AppList, Chrome, App1, Fake App 0, App2", GetPinnedAppStatus());
2155 // In opt-out mode, only system apps are available and can't be uninstalled.
2156 // Skip the rest of the test.
2157 if (arc::ShouldArcAlwaysStart())
2158 return;
2126 UninstallArcApps(); 2159 UninstallArcApps();
2160 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id));
2127 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); 2161 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus());
2128 SendListOfArcApps(); 2162 SendListOfArcApps();
2163 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id));
2129 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); 2164 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus());
2130 2165
2131 // Opt-Out/Opt-In remove item from the shelf. 2166 // Opt-Out/Opt-In remove item from the shelf.
2132 launcher_controller_->PinAppWithID(arc_app_id); 2167 launcher_controller_->PinAppWithID(arc_app_id);
2133 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus()); 2168 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus());
2134 EnableArc(false); 2169 EnablePlayStore(false);
2135 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); 2170 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus());
2136 EnableArc(true); 2171 EnablePlayStore(true);
2137 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); 2172 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus());
2138 SendListOfArcApps(); 2173 SendListOfArcApps();
2139 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus()); 2174 EXPECT_EQ("AppList, Chrome, App1, App2, Fake App 0", GetPinnedAppStatus());
2140 } 2175 }
2141 2176
2142 // Validates that ARC app pins persist across OptOut/OptIn. 2177 // Validates that ARC app pins persist across OptOut/OptIn.
2143 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcAppPinOptOutOptIn) { 2178 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcAppPinOptOutOptIn) {
2144 InitLauncherController(); 2179 InitLauncherController();
2145 2180
2146 const std::string arc_app_id1 = 2181 const std::string arc_app_id1 =
2147 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]); 2182 ArcAppTest::GetAppId(arc_test_.fake_apps()[0]);
2148 const std::string arc_app_id2 = 2183 const std::string arc_app_id2 =
2149 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]); 2184 ArcAppTest::GetAppId(arc_test_.fake_apps()[1]);
2150 2185
2151 SendListOfArcApps(); 2186 SendListOfArcApps();
2152 extension_service_->AddExtension(extension1_.get()); 2187 extension_service_->AddExtension(extension1_.get());
2153 extension_service_->AddExtension(extension2_.get()); 2188 extension_service_->AddExtension(extension2_.get());
2154 2189
2155 launcher_controller_->PinAppWithID(extension1_->id()); 2190 launcher_controller_->PinAppWithID(extension1_->id());
2156 launcher_controller_->PinAppWithID(arc_app_id2); 2191 launcher_controller_->PinAppWithID(arc_app_id2);
2157 launcher_controller_->PinAppWithID(extension2_->id()); 2192 launcher_controller_->PinAppWithID(extension2_->id());
2158 launcher_controller_->PinAppWithID(arc_app_id1); 2193 launcher_controller_->PinAppWithID(arc_app_id1);
2159 2194
2160 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); 2195 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id()));
2161 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1)); 2196 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1));
2162 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); 2197 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id()));
2163 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id2)); 2198 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id2));
2164 EXPECT_EQ("AppList, Chrome, App1, Fake App 1, App2, Fake App 0", 2199 EXPECT_EQ("AppList, Chrome, App1, Fake App 1, App2, Fake App 0",
2165 GetPinnedAppStatus()); 2200 GetPinnedAppStatus());
2166 2201
2167 EnableArc(false); 2202 // TODO(victorhsieh): Implement opt-out.
2203 if (arc::ShouldArcAlwaysStart())
2204 return;
2205 EnablePlayStore(false);
2168 2206
2169 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus()); 2207 EXPECT_EQ("AppList, Chrome, App1, App2", GetPinnedAppStatus());
2170 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); 2208 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id()));
2171 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id1)); 2209 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id1));
2172 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); 2210 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id()));
2173 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2)); 2211 EXPECT_FALSE(launcher_controller_->IsAppPinned(arc_app_id2));
2174 2212
2175 EnableArc(true); 2213 EnablePlayStore(true);
2176 SendListOfArcApps(); 2214 SendListOfArcApps();
2177 base::RunLoop().RunUntilIdle(); 2215 base::RunLoop().RunUntilIdle();
2178 2216
2179 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id())); 2217 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension1_->id()));
2180 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1)); 2218 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id1));
2181 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id())); 2219 EXPECT_TRUE(launcher_controller_->IsAppPinned(extension2_->id()));
2182 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id2)); 2220 EXPECT_TRUE(launcher_controller_->IsAppPinned(arc_app_id2));
2183 2221
2184 EXPECT_EQ("AppList, Chrome, App1, Fake App 1, App2, Fake App 0", 2222 EXPECT_EQ("AppList, Chrome, App1, Fake App 1, App2, Fake App 0",
2185 GetPinnedAppStatus()); 2223 GetPinnedAppStatus());
(...skipping 1417 matching lines...) Expand 10 before | Expand all | Expand 10 after
3603 EXPECT_EQ(1, app_icon_loader2->fetch_count()); 3641 EXPECT_EQ(1, app_icon_loader2->fetch_count());
3604 EXPECT_EQ(1, app_icon_loader2->clear_count()); 3642 EXPECT_EQ(1, app_icon_loader2->clear_count());
3605 3643
3606 launcher_controller_->CloseLauncherItem(shelfId3); 3644 launcher_controller_->CloseLauncherItem(shelfId3);
3607 EXPECT_EQ(1, app_icon_loader1->fetch_count()); 3645 EXPECT_EQ(1, app_icon_loader1->fetch_count());
3608 EXPECT_EQ(1, app_icon_loader1->clear_count()); 3646 EXPECT_EQ(1, app_icon_loader1->clear_count());
3609 EXPECT_EQ(1, app_icon_loader2->fetch_count()); 3647 EXPECT_EQ(1, app_icon_loader2->fetch_count());
3610 EXPECT_EQ(1, app_icon_loader2->clear_count()); 3648 EXPECT_EQ(1, app_icon_loader2->clear_count());
3611 } 3649 }
3612 3650
3613 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcAppPinPolicy) { 3651 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcAppPinPolicy) {
3614 InitLauncherControllerWithBrowser(); 3652 InitLauncherControllerWithBrowser();
3615 arc::mojom::AppInfo appinfo = CreateAppInfo( 3653 arc::mojom::AppInfo appinfo = CreateAppInfo(
3616 "Some App", "SomeActivity", "com.example.app", OrientationLock::NONE); 3654 "Some App", "SomeActivity", "com.example.app", OrientationLock::NONE);
3617 const std::string app_id = AddArcAppAndShortcut(appinfo); 3655 const std::string app_id = AddArcAppAndShortcut(appinfo);
3618 3656
3619 // Set policy, that makes pins ARC app. Unlike native extension, for ARC app 3657 // Set policy, that makes pins ARC app. Unlike native extension, for ARC app
3620 // package_name (not hash) specified as id. In this test we check that 3658 // package_name (not hash) specified as id. In this test we check that
3621 // by hash we can determine that appropriate package was set by policy. 3659 // by hash we can determine that appropriate package was set by policy.
3622 base::ListValue policy_value; 3660 base::ListValue policy_value;
3623 InsertPrefValue(&policy_value, 0, appinfo.package_name); 3661 InsertPrefValue(&policy_value, 0, appinfo.package_name);
3624 profile()->GetTestingPrefService()->SetManagedPref( 3662 profile()->GetTestingPrefService()->SetManagedPref(
3625 prefs::kPolicyPinnedLauncherApps, policy_value.DeepCopy()); 3663 prefs::kPolicyPinnedLauncherApps, policy_value.DeepCopy());
3626 3664
3627 EXPECT_TRUE(launcher_controller_->IsAppPinned(app_id)); 3665 EXPECT_TRUE(launcher_controller_->IsAppPinned(app_id));
3628 EXPECT_EQ(AppListControllerDelegate::PIN_FIXED, 3666 EXPECT_EQ(AppListControllerDelegate::PIN_FIXED,
3629 GetPinnableForAppID(app_id, profile())); 3667 GetPinnableForAppID(app_id, profile()));
3630 } 3668 }
3631 3669
3632 TEST_F(ChromeLauncherControllerImplWithArcTest, ArcManaged) { 3670 TEST_P(ChromeLauncherControllerImplWithArcTest, ArcManaged) {
3671 // TODO(victorhsieh): Implement opt-in and opt-out.
3672 if (arc::ShouldArcAlwaysStart())
3673 return;
3674
3633 extension_service_->AddExtension(arc_support_host_.get()); 3675 extension_service_->AddExtension(arc_support_host_.get());
3634 // Test enables ARC, so turn it off for initial values. 3676 // Test enables ARC, so turn it off for initial values.
3635 EnableArc(false); 3677 EnablePlayStore(false);
3636 3678
3637 InitLauncherController(); 3679 InitLauncherController();
3638 3680
3639 // To prevent import legacy pins each time. 3681 // To prevent import legacy pins each time.
3640 // Initially pins are imported from legacy pref based model. 3682 // Initially pins are imported from legacy pref based model.
3641 StartPrefSyncService(syncer::SyncDataList()); 3683 StartPrefSyncService(syncer::SyncDataList());
3642 3684
3643 // Inject |launcher_controller_| as ShelfDelegate to verify the behavior 3685 // Inject |launcher_controller_| as ShelfDelegate to verify the behavior
3644 // of removing pinned icon in ArcSessionManager::OnOptInPreferenceChanged(). 3686 // of removing pinned icon in ArcSessionManager::OnOptInPreferenceChanged().
3645 SetShelfDelegate(); 3687 SetShelfDelegate();
(...skipping 19 matching lines...) Expand all
3665 ValidateArcState(false, true, arc::ArcSessionManager::State::STOPPED, 3707 ValidateArcState(false, true, arc::ArcSessionManager::State::STOPPED,
3666 "AppList, Chrome"); 3708 "AppList, Chrome");
3667 3709
3668 // ARC is not managed and disabled, Play Store pin should be available. 3710 // ARC is not managed and disabled, Play Store pin should be available.
3669 profile()->GetTestingPrefService()->RemoveManagedPref(prefs::kArcEnabled); 3711 profile()->GetTestingPrefService()->RemoveManagedPref(prefs::kArcEnabled);
3670 base::RunLoop().RunUntilIdle(); 3712 base::RunLoop().RunUntilIdle();
3671 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, 3713 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED,
3672 "AppList, Chrome, Play Store"); 3714 "AppList, Chrome, Play Store");
3673 3715
3674 // ARC is not managed and enabled, Play Store pin should be available. 3716 // ARC is not managed and enabled, Play Store pin should be available.
3675 EnableArc(true); 3717 EnablePlayStore(true);
3676 ValidateArcState(true, false, 3718 ValidateArcState(true, false,
3677 arc::ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, 3719 arc::ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE,
3678 "AppList, Chrome, Play Store"); 3720 "AppList, Chrome, Play Store");
3679 3721
3680 // User disables ARC. ARC is not managed and disabled, Play Store pin should 3722 // User disables ARC. ARC is not managed and disabled, Play Store pin should
3681 // be automatically removed. 3723 // be automatically removed.
3682 EnableArc(false); 3724 EnablePlayStore(false);
3683 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED, 3725 ValidateArcState(false, false, arc::ArcSessionManager::State::STOPPED,
3684 "AppList, Chrome"); 3726 "AppList, Chrome");
3685 3727
3686 // Even if re-enable it again, Play Store pin does not appear automatically. 3728 // Even if re-enable it again, Play Store pin does not appear automatically.
3687 EnableArc(true); 3729 EnablePlayStore(true);
3688 ValidateArcState(true, false, 3730 ValidateArcState(true, false,
3689 arc::ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE, 3731 arc::ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE,
3690 "AppList, Chrome"); 3732 "AppList, Chrome");
3691 } 3733 }
3692 3734
3693 namespace { 3735 namespace {
3694 3736
3695 class ChromeLauncherControllerOrientationTest 3737 class ChromeLauncherControllerOrientationTest
3696 : public ChromeLauncherControllerImplWithArcTest { 3738 : public ChromeLauncherControllerImplWithArcTest {
3697 public: 3739 public:
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
3759 3801
3760 views::Widget* window_none_ = nullptr; 3802 views::Widget* window_none_ = nullptr;
3761 views::Widget* window_landscape_ = nullptr; 3803 views::Widget* window_landscape_ = nullptr;
3762 views::Widget* window_portrait_ = nullptr; 3804 views::Widget* window_portrait_ = nullptr;
3763 views::Widget* window_current_ = nullptr; 3805 views::Widget* window_current_ = nullptr;
3764 3806
3765 private: 3807 private:
3766 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerOrientationTest); 3808 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerOrientationTest);
3767 }; 3809 };
3768 3810
3811 INSTANTIATE_TEST_CASE_P(,
3812 ChromeLauncherControllerOrientationTest,
3813 ::testing::Bool());
3814
3769 class ChromeLauncherControllerArcDefaultAppsTest 3815 class ChromeLauncherControllerArcDefaultAppsTest
3770 : public ChromeLauncherControllerImplTest { 3816 : public ChromeLauncherControllerImplTest,
3817 public ::testing::WithParamInterface<bool> {
3771 public: 3818 public:
3772 ChromeLauncherControllerArcDefaultAppsTest() {} 3819 ChromeLauncherControllerArcDefaultAppsTest() {}
3773 ~ChromeLauncherControllerArcDefaultAppsTest() override {} 3820 ~ChromeLauncherControllerArcDefaultAppsTest() override {}
3774 3821
3775 protected: 3822 protected:
3776 void SetUp() override { 3823 void SetUp() override {
3824 if (GetParam())
3825 arc::SetArcAlwaysStartForTesting();
3777 ArcDefaultAppList::UseTestAppsDirectory(); 3826 ArcDefaultAppList::UseTestAppsDirectory();
3778 ChromeLauncherControllerImplTest::SetUp(); 3827 ChromeLauncherControllerImplTest::SetUp();
3779 } 3828 }
3780 3829
3781 private: 3830 private:
3782 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerArcDefaultAppsTest); 3831 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerArcDefaultAppsTest);
3783 }; 3832 };
3784 3833
3834 INSTANTIATE_TEST_CASE_P(,
3835 ChromeLauncherControllerArcDefaultAppsTest,
3836 ::testing::Bool());
3837
3785 } // namespace 3838 } // namespace
3786 3839
3787 TEST_F(ChromeLauncherControllerOrientationTest, 3840 TEST_P(ChromeLauncherControllerOrientationTest,
3788 ArcOrientationLockBeforeWindowReady) { 3841 ArcOrientationLockBeforeWindowReady) {
3789 ASSERT_TRUE(display::Display::HasInternalDisplay()); 3842 ASSERT_TRUE(display::Display::HasInternalDisplay());
3790 3843
3791 extension_service_->AddExtension(arc_support_host_.get()); 3844 extension_service_->AddExtension(arc_support_host_.get());
3792 EnableArc(true); 3845 EnablePlayStore(true);
3793 3846
3794 InitLauncherController(); 3847 InitLauncherController();
3795 3848
3796 ash::ScreenOrientationController* controller = 3849 ash::ScreenOrientationController* controller =
3797 ash::Shell::GetInstance()->screen_orientation_controller(); 3850 ash::Shell::GetInstance()->screen_orientation_controller();
3798 3851
3799 std::string app_id1("org.chromium.arc.1"); 3852 std::string app_id1("org.chromium.arc.1");
3800 int task_id1 = 1; 3853 int task_id1 = 1;
3801 arc::mojom::AppInfo appinfo1 = 3854 arc::mojom::AppInfo appinfo1 =
3802 CreateAppInfo("Test1", "test", "com.example.app", OrientationLock::NONE); 3855 CreateAppInfo("Test1", "test", "com.example.app", OrientationLock::NONE);
(...skipping 24 matching lines...) Expand all
3827 EXPECT_EQ(display::Display::ROTATE_90, 3880 EXPECT_EQ(display::Display::ROTATE_90,
3828 display::Screen::GetScreen()->GetPrimaryDisplay().rotation()); 3881 display::Screen::GetScreen()->GetPrimaryDisplay().rotation());
3829 3882
3830 // The screen will be locked when the window is created. 3883 // The screen will be locked when the window is created.
3831 CreateArcWindow(app_id2); 3884 CreateArcWindow(app_id2);
3832 EXPECT_TRUE(controller->rotation_locked()); 3885 EXPECT_TRUE(controller->rotation_locked());
3833 EXPECT_EQ(display::Display::ROTATE_0, 3886 EXPECT_EQ(display::Display::ROTATE_0,
3834 display::Screen::GetScreen()->GetPrimaryDisplay().rotation()); 3887 display::Screen::GetScreen()->GetPrimaryDisplay().rotation());
3835 } 3888 }
3836 3889
3837 TEST_F(ChromeLauncherControllerOrientationTest, ArcOrientationLock) { 3890 TEST_P(ChromeLauncherControllerOrientationTest, ArcOrientationLock) {
3838 ASSERT_TRUE(display::Display::HasInternalDisplay()); 3891 ASSERT_TRUE(display::Display::HasInternalDisplay());
3839 3892
3840 extension_service_->AddExtension(arc_support_host_.get()); 3893 extension_service_->AddExtension(arc_support_host_.get());
3841 EnableArc(true); 3894 EnablePlayStore(true);
3842 EnableTabletMode(true); 3895 EnableTabletMode(true);
3843 3896
3844 InitLauncherController(); 3897 InitLauncherController();
3845 3898
3846 InitApps(); 3899 InitApps();
3847 ash::ScreenOrientationController* controller = 3900 ash::ScreenOrientationController* controller =
3848 ash::Shell::GetInstance()->screen_orientation_controller(); 3901 ash::Shell::GetInstance()->screen_orientation_controller();
3849 3902
3850 // Activating a window with NON orientation unlocks the screen. 3903 // Activating a window with NON orientation unlocks the screen.
3851 window_none_->Activate(); 3904 window_none_->Activate();
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
3924 EnableTabletMode(true); 3977 EnableTabletMode(true);
3925 EXPECT_TRUE(controller->rotation_locked()); 3978 EXPECT_TRUE(controller->rotation_locked());
3926 EXPECT_EQ(display::Display::ROTATE_90, 3979 EXPECT_EQ(display::Display::ROTATE_90,
3927 display::Screen::GetScreen()->GetPrimaryDisplay().rotation()); 3980 display::Screen::GetScreen()->GetPrimaryDisplay().rotation());
3928 3981
3929 // Manually unlock first. 3982 // Manually unlock first.
3930 NotifyOnTaskOrientationLockRequested(task_id_none_, OrientationLock::NONE); 3983 NotifyOnTaskOrientationLockRequested(task_id_none_, OrientationLock::NONE);
3931 EXPECT_FALSE(controller->rotation_locked()); 3984 EXPECT_FALSE(controller->rotation_locked());
3932 } 3985 }
3933 3986
3934 TEST_F(ChromeLauncherControllerOrientationTest, CurrentWithLandscapeDisplay) { 3987 TEST_P(ChromeLauncherControllerOrientationTest, CurrentWithLandscapeDisplay) {
3935 ASSERT_TRUE(display::Display::HasInternalDisplay()); 3988 ASSERT_TRUE(display::Display::HasInternalDisplay());
3936 3989
3937 extension_service_->AddExtension(arc_support_host_.get()); 3990 extension_service_->AddExtension(arc_support_host_.get());
3938 EnableArc(true); 3991 EnablePlayStore(true);
3939 EnableTabletMode(true); 3992 EnableTabletMode(true);
3940 3993
3941 InitLauncherController(); 3994 InitLauncherController();
3942 3995
3943 InitApps(); 3996 InitApps();
3944 ash::ScreenOrientationController* controller = 3997 ash::ScreenOrientationController* controller =
3945 ash::Shell::GetInstance()->screen_orientation_controller(); 3998 ash::Shell::GetInstance()->screen_orientation_controller();
3946 3999
3947 // Start with portrait. 4000 // Start with portrait.
3948 window_portrait_->Activate(); 4001 window_portrait_->Activate();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3985 EXPECT_EQ(display::Display::ROTATE_0, 4038 EXPECT_EQ(display::Display::ROTATE_0,
3986 display::Screen::GetScreen()->GetPrimaryDisplay().rotation()); 4039 display::Screen::GetScreen()->GetPrimaryDisplay().rotation());
3987 4040
3988 NotifyOnTaskOrientationLockRequested(task_id_current_, 4041 NotifyOnTaskOrientationLockRequested(task_id_current_,
3989 OrientationLock::CURRENT); 4042 OrientationLock::CURRENT);
3990 EXPECT_TRUE(controller->rotation_locked()); 4043 EXPECT_TRUE(controller->rotation_locked());
3991 EXPECT_EQ(display::Display::ROTATE_0, 4044 EXPECT_EQ(display::Display::ROTATE_0,
3992 display::Screen::GetScreen()->GetPrimaryDisplay().rotation()); 4045 display::Screen::GetScreen()->GetPrimaryDisplay().rotation());
3993 } 4046 }
3994 4047
3995 TEST_F(ChromeLauncherControllerArcDefaultAppsTest, DefaultApps) { 4048 TEST_P(ChromeLauncherControllerArcDefaultAppsTest, DefaultApps) {
3996 arc_test_.SetUp(profile()); 4049 arc_test_.SetUp(profile());
3997 InitLauncherController(); 4050 InitLauncherController();
3998 ChromeLauncherController::set_instance_for_test(launcher_controller_.get()); 4051 ChromeLauncherController::set_instance_for_test(launcher_controller_.get());
3999 4052
4000 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs(); 4053 ArcAppListPrefs* const prefs = arc_test_.arc_app_list_prefs();
4001 EnableArc(false); 4054 EnablePlayStore(false);
4002 EXPECT_FALSE(arc::IsArcPlayStoreEnabledForProfile(profile())); 4055 EXPECT_FALSE(arc::IsArcPlayStoreEnabledForProfile(profile()));
4003 ASSERT_TRUE(prefs->GetAppIds().size()); 4056 ASSERT_TRUE(prefs->GetAppIds().size());
4004 4057
4005 const std::string app_id = 4058 const std::string app_id =
4006 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]); 4059 ArcAppTest::GetAppId(arc_test_.fake_default_apps()[0]);
4007 EXPECT_EQ(ash::kInvalidShelfID, 4060 EXPECT_EQ(ash::kInvalidShelfID,
4008 launcher_controller_->GetShelfIDForAppID(app_id)); 4061 launcher_controller_->GetShelfIDForAppID(app_id));
4009 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); 4062 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON));
4010 EXPECT_TRUE(arc::IsArcPlayStoreEnabledForProfile(profile())); 4063 EXPECT_TRUE(arc::IsArcPlayStoreEnabledForProfile(profile()));
4011 EXPECT_NE(ash::kInvalidShelfID, 4064 EXPECT_NE(ash::kInvalidShelfID,
4012 launcher_controller_->GetShelfIDForAppID(app_id)); 4065 launcher_controller_->GetShelfIDForAppID(app_id));
4013 4066
4014 // Stop ARC again. Shelf item should go away. 4067 // Stop ARC again. Shelf item should go away.
4015 EnableArc(false); 4068 EnablePlayStore(false);
4016 EXPECT_EQ(ash::kInvalidShelfID, 4069 EXPECT_EQ(ash::kInvalidShelfID,
4017 launcher_controller_->GetShelfIDForAppID(app_id)); 4070 launcher_controller_->GetShelfIDForAppID(app_id));
4018 4071
4019 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON)); 4072 EXPECT_TRUE(arc::LaunchApp(profile(), app_id, ui::EF_LEFT_MOUSE_BUTTON));
4020 EXPECT_TRUE(arc::IsArcPlayStoreEnabledForProfile(profile())); 4073 EXPECT_TRUE(arc::IsArcPlayStoreEnabledForProfile(profile()));
4021 4074
4022 EXPECT_NE(ash::kInvalidShelfID, 4075 EXPECT_NE(ash::kInvalidShelfID,
4023 launcher_controller_->GetShelfIDForAppID(app_id)); 4076 launcher_controller_->GetShelfIDForAppID(app_id));
4024 EXPECT_TRUE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id)); 4077 EXPECT_TRUE(launcher_controller_->GetArcDeferredLauncher()->HasApp(app_id));
4025 4078
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
4257 EXPECT_EQ(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, 4310 EXPECT_EQ(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
4258 shelf_controller->auto_hide()); 4311 shelf_controller->auto_hide());
4259 EXPECT_EQ(2u, shelf_controller->auto_hide_change_count()); 4312 EXPECT_EQ(2u, shelf_controller->auto_hide_change_count());
4260 4313
4261 PrefService* prefs = profile()->GetTestingPrefService(); 4314 PrefService* prefs = profile()->GetTestingPrefService();
4262 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignmentLocal)); 4315 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignmentLocal));
4263 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignment)); 4316 EXPECT_EQ("Left", prefs->GetString(prefs::kShelfAlignment));
4264 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehaviorLocal)); 4317 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehaviorLocal));
4265 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehavior)); 4318 EXPECT_EQ("Always", prefs->GetString(prefs::kShelfAutoHideBehavior));
4266 } 4319 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/app_list/arc/arc_app_utils.cc ('k') | chrome/browser/ui/webui/options/browser_options_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698