OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 <vector> | 5 #include <vector> |
6 | 6 |
7 #include "ash/desktop_background/desktop_background_controller.h" | 7 #include "ash/desktop_background/desktop_background_controller.h" |
8 #include "ash/desktop_background/desktop_background_controller_observer.h" | 8 #include "ash/desktop_background/desktop_background_controller_observer.h" |
9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
110 // An app to test local fs data persistence across app update. V1 app writes | 110 // An app to test local fs data persistence across app update. V1 app writes |
111 // data into local fs. V2 app reads and verifies the data. | 111 // data into local fs. V2 app reads and verifies the data. |
112 // Webstore data json is in | 112 // Webstore data json is in |
113 // chrome/test/data/chromeos/app_mode/webstore/inlineinstall/ | 113 // chrome/test/data/chromeos/app_mode/webstore/inlineinstall/ |
114 // detail/bmbpicmpniaclbbpdkfglgipkkebnbjf | 114 // detail/bmbpicmpniaclbbpdkfglgipkkebnbjf |
115 const char kTestLocalFsKioskApp[] = "bmbpicmpniaclbbpdkfglgipkkebnbjf"; | 115 const char kTestLocalFsKioskApp[] = "bmbpicmpniaclbbpdkfglgipkkebnbjf"; |
116 | 116 |
117 // An app to test local access to file systems via the | 117 // An app to test local access to file systems via the |
118 // chrome.fileSystem.requestFileSystem API. | 118 // chrome.fileSystem.requestFileSystem API. |
119 // Webstore data json is in | 119 // Webstore data json is in |
120 // chrome/test/data/chromeos/app_mode/webstore/inlineinstall/ | 120 // chrome/test/data/chromeos/app_mode/webstore/inlineinstall/ |
121 // detail/aaedpojejpghjkedenggihopfhfijcko | 121 // detail/aaedpojejpghjkedenggihopfhfijcko |
122 const char kTestGetVolumeListKioskApp[] = "aaedpojejpghjkedenggihopfhfijcko"; | 122 const char kTestGetVolumeListKioskApp[] = "aaedpojejpghjkedenggihopfhfijcko"; |
123 | 123 |
124 // Testing apps for testing kiosk multi-app feature. | 124 // Testing apps for testing kiosk multi-app feature. All the crx files are in |
125 const char kTestPrimaryKioskApp[] = "ceobkcclegcliomogfoeoheahogoecgl"; | 125 // chrome/test/data/chromeos/app_mode/webstore/downloads. |
126 const char kTestSecondaryApp1[] = "ihplaomghjbeafnpnjkhppmfpnmdihgd"; | 126 |
127 const char kTestSecondaryApp2[] = "fiehokkcgaojmbhfhlpiheggjhaedjoc"; | 127 // Source files are in |
128 const char kTestSecondaryApp3[] = "aabnpdpieclcikafhdkkpldcaodmfoai"; | 128 // chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/primary_app |
129 const char kTestSecondaryExtension[] = "imlgadjgphbjkaceoiapiephhgeofhic"; | 129 const char kTestPrimaryKioskApp[] = "dpejijbnadgcgmabkmcoajkgongfgnii"; |
130 | |
131 // Source files are in | |
132 // chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/secondary_app_1 | |
133 const char kTestSecondaryApp1[] = "emnbflhfbllbehnpjmjddklbkeeoaaeg"; | |
134 | |
135 // Source files are in | |
136 // chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/secondary_app_2 | |
137 const char kTestSecondaryApp2[] = "blmjgfbajihimkjmepbhgmjbopjchlda"; | |
138 | |
139 // Source files are in | |
140 // chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/secondary_app_3 | |
141 const char kTestSecondaryApp3[] = "jkofhenkpndpdflehcjpcekgecjkpggg"; | |
142 | |
143 // Source files are in | |
144 // chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/ | |
145 // secondary_extensions_1 | |
146 const char kTestSecondaryExtension[] = "gdmgkkoghcihimdfoabkefdkccllcfea"; | |
147 | |
148 // Source files are in | |
149 // chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/ | |
150 // shared_module_primary_app | |
130 const char kTestSharedModulePrimaryApp[] = "ofmeihgcmabfalhhgooajcijiaoekhkg"; | 151 const char kTestSharedModulePrimaryApp[] = "ofmeihgcmabfalhhgooajcijiaoekhkg"; |
152 | |
153 // Source files are in | |
154 // chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/secondary_app | |
131 const char kTestSecondaryApp[] = "bbmaiojbgkkmfaglfhaplfomobgojhke"; | 155 const char kTestSecondaryApp[] = "bbmaiojbgkkmfaglfhaplfomobgojhke"; |
156 | |
157 // Source files are in | |
158 // chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/shared_module | |
132 const char kTestSharedModuleId[] = "biebhpdepndljbnkadldcbjkiedldnmn"; | 159 const char kTestSharedModuleId[] = "biebhpdepndljbnkadldcbjkiedldnmn"; |
160 | |
161 // Source files are in | |
162 // chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/ | |
163 // secondary_extension | |
133 const char kTestSecondaryExt[] = "kcoobopfcjmbfeppibolpaolbgbmkcjd"; | 164 const char kTestSecondaryExt[] = "kcoobopfcjmbfeppibolpaolbgbmkcjd"; |
134 | 165 |
135 // Fake usb stick mount path. | 166 // Fake usb stick mount path. |
136 const char kFakeUsbMountPathUpdatePass[] = | 167 const char kFakeUsbMountPathUpdatePass[] = |
137 "chromeos/app_mode/external_update/update_pass"; | 168 "chromeos/app_mode/external_update/update_pass"; |
138 const char kFakeUsbMountPathNoManifest[] = | 169 const char kFakeUsbMountPathNoManifest[] = |
139 "chromeos/app_mode/external_update/no_manifest"; | 170 "chromeos/app_mode/external_update/no_manifest"; |
140 const char kFakeUsbMountPathBadManifest[] = | 171 const char kFakeUsbMountPathBadManifest[] = |
141 "chromeos/app_mode/external_update/bad_manifest"; | 172 "chromeos/app_mode/external_update/bad_manifest"; |
142 const char kFakeUsbMountPathLowerAppVersion[] = | 173 const char kFakeUsbMountPathLowerAppVersion[] = |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
196 void OnNetworkWaitTimedOut(const base::Closure& runner_quit_task) { | 227 void OnNetworkWaitTimedOut(const base::Closure& runner_quit_task) { |
197 runner_quit_task.Run(); | 228 runner_quit_task.Run(); |
198 } | 229 } |
199 | 230 |
200 // Helper function for LockFileThread. | 231 // Helper function for LockFileThread. |
201 void LockAndUnlock(scoped_ptr<base::Lock> lock) { | 232 void LockAndUnlock(scoped_ptr<base::Lock> lock) { |
202 lock->Acquire(); | 233 lock->Acquire(); |
203 lock->Release(); | 234 lock->Release(); |
204 } | 235 } |
205 | 236 |
206 bool IsAppInstalled(const std::string& app_id) { | 237 bool IsAppInstalled(const std::string& app_id, const std::string& version) { |
207 Profile* app_profile = ProfileManager::GetPrimaryUserProfile(); | 238 Profile* app_profile = ProfileManager::GetPrimaryUserProfile(); |
208 DCHECK(app_profile); | 239 DCHECK(app_profile); |
209 const extensions::Extension* app = | 240 const extensions::Extension* app = |
210 extensions::ExtensionSystem::Get(app_profile) | 241 extensions::ExtensionSystem::Get(app_profile) |
211 ->extension_service() | 242 ->extension_service() |
212 ->GetInstalledExtension(app_id); | 243 ->GetInstalledExtension(app_id); |
213 return app != nullptr; | 244 return app != nullptr && version == app->version()->GetString(); |
214 } | 245 } |
215 | 246 |
216 extensions::Manifest::Type GetAppType(const std::string& app_id) { | 247 extensions::Manifest::Type GetAppType(const std::string& app_id) { |
217 Profile* app_profile = ProfileManager::GetPrimaryUserProfile(); | 248 Profile* app_profile = ProfileManager::GetPrimaryUserProfile(); |
218 DCHECK(app_profile); | 249 DCHECK(app_profile); |
219 const extensions::Extension* app = | 250 const extensions::Extension* app = |
220 extensions::ExtensionSystem::Get(app_profile) | 251 extensions::ExtensionSystem::Get(app_profile) |
221 ->extension_service() | 252 ->extension_service() |
222 ->GetInstalledExtension(app_id); | 253 ->GetInstalledExtension(app_id); |
223 DCHECK(app); | 254 DCHECK(app); |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
477 } | 508 } |
478 | 509 |
479 void SetUpOnMainThread() override { | 510 void SetUpOnMainThread() override { |
480 OobeBaseTest::SetUpOnMainThread(); | 511 OobeBaseTest::SetUpOnMainThread(); |
481 // Needed to avoid showing Gaia screen instead of owner signin for | 512 // Needed to avoid showing Gaia screen instead of owner signin for |
482 // consumer network down test cases. | 513 // consumer network down test cases. |
483 StartupUtils::MarkDeviceRegistered(base::Closure()); | 514 StartupUtils::MarkDeviceRegistered(base::Closure()); |
484 settings_helper_.ReplaceProvider(kAccountsPrefDeviceLocalAccounts); | 515 settings_helper_.ReplaceProvider(kAccountsPrefDeviceLocalAccounts); |
485 owner_settings_service_ = settings_helper_.CreateOwnerSettingsService( | 516 owner_settings_service_ = settings_helper_.CreateOwnerSettingsService( |
486 ProfileManager::GetPrimaryUserProfile()); | 517 ProfileManager::GetPrimaryUserProfile()); |
518 | |
519 // Set up local cache for app update check. | |
520 CreateAndInitializeLocalCache(); | |
487 } | 521 } |
488 | 522 |
489 void TearDownOnMainThread() override { | 523 void TearDownOnMainThread() override { |
490 settings_helper_.RestoreProvider(); | 524 settings_helper_.RestoreProvider(); |
491 AppLaunchController::SetNetworkTimeoutCallbackForTesting(NULL); | 525 AppLaunchController::SetNetworkTimeoutCallbackForTesting(NULL); |
492 AppLaunchSigninScreen::SetUserManagerForTesting(NULL); | 526 AppLaunchSigninScreen::SetUserManagerForTesting(NULL); |
493 | 527 |
494 OobeBaseTest::TearDownOnMainThread(); | 528 OobeBaseTest::TearDownOnMainThread(); |
495 | 529 |
496 // Clean up while main thread still runs. | 530 // Clean up while main thread still runs. |
497 // See http://crbug.com/176659. | 531 // See http://crbug.com/176659. |
498 KioskAppManager::Get()->CleanUp(); | 532 KioskAppManager::Get()->CleanUp(); |
499 } | 533 } |
500 | 534 |
535 // The local cache is supposed to be initialized on chromeos device, and a | |
536 // ready flag file will be pre-created to mark the ready state, before chrome | |
537 // starts. In order for the tests to run without being on real chromeos | |
538 // device, we need to manually create this file. | |
539 void CreateAndInitializeLocalCache() { | |
540 base::FilePath extension_cache_dir; | |
541 CHECK(PathService::Get(chromeos::DIR_DEVICE_EXTENSION_LOCAL_CACHE, | |
542 &extension_cache_dir)); | |
xiyuan
2015/12/03 00:46:53
Oops. We really should not be doing this. We shoul
jennyz
2015/12/03 01:23:47
It looks like the path is already overrided at Reg
xiyuan
2015/12/03 03:05:38
I see. Never mind then.
| |
543 base::FilePath cache_init_file = extension_cache_dir.Append( | |
544 extensions::LocalExtensionCache::kCacheReadyFlagFileName); | |
545 EXPECT_EQ(base::WriteFile(cache_init_file, "", 0), 0); | |
546 } | |
547 | |
501 void SetUpCommandLine(base::CommandLine* command_line) override { | 548 void SetUpCommandLine(base::CommandLine* command_line) override { |
502 OobeBaseTest::SetUpCommandLine(command_line); | 549 OobeBaseTest::SetUpCommandLine(command_line); |
503 fake_cws_->Init(embedded_test_server()); | 550 fake_cws_->Init(embedded_test_server()); |
504 } | 551 } |
505 | 552 |
506 void LaunchApp(const std::string& app_id, bool diagnostic_mode) { | 553 void LaunchApp(const std::string& app_id, bool diagnostic_mode) { |
507 bool new_kiosk_ui = KioskAppMenuHandler::EnableNewKioskUI(); | 554 bool new_kiosk_ui = KioskAppMenuHandler::EnableNewKioskUI(); |
508 GetLoginUI()->CallJavascriptFunction(new_kiosk_ui ? | 555 GetLoginUI()->CallJavascriptFunction(new_kiosk_ui ? |
509 kLaunchAppForTestNewAPI : kLaunchAppForTestOldAPI, | 556 kLaunchAppForTestNewAPI : kLaunchAppForTestOldAPI, |
510 base::StringValue(app_id), | 557 base::StringValue(app_id), |
(...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1321 KioskTest::TearDown(); | 1368 KioskTest::TearDown(); |
1322 } | 1369 } |
1323 | 1370 |
1324 void SetUpOnMainThread() override { | 1371 void SetUpOnMainThread() override { |
1325 // For update tests, we cache the app in the PRE part, and then we load it | 1372 // For update tests, we cache the app in the PRE part, and then we load it |
1326 // in the test, so we need to both store the apps list on teardown (so that | 1373 // in the test, so we need to both store the apps list on teardown (so that |
1327 // the app manager would accept existing files in its extension cache on the | 1374 // the app manager would accept existing files in its extension cache on the |
1328 // next startup) and copy the list to our stub settings provider as well. | 1375 // next startup) and copy the list to our stub settings provider as well. |
1329 settings_helper_.CopyStoredValue(kAccountsPrefDeviceLocalAccounts); | 1376 settings_helper_.CopyStoredValue(kAccountsPrefDeviceLocalAccounts); |
1330 | 1377 |
1331 CreateAndInitializeLocalCache(); | |
1332 | |
1333 KioskTest::SetUpOnMainThread(); | 1378 KioskTest::SetUpOnMainThread(); |
1334 } | 1379 } |
1335 | 1380 |
1336 void TearDownOnMainThread() override { | 1381 void TearDownOnMainThread() override { |
1337 settings_helper_.StoreCachedDeviceSetting(kAccountsPrefDeviceLocalAccounts); | 1382 settings_helper_.StoreCachedDeviceSetting(kAccountsPrefDeviceLocalAccounts); |
1338 KioskTest::TearDownOnMainThread(); | 1383 KioskTest::TearDownOnMainThread(); |
1339 } | 1384 } |
1340 | 1385 |
1341 void PreCacheApp(const std::string& app_id, | 1386 void PreCacheApp(const std::string& app_id, |
1342 const std::string& version, | 1387 const std::string& version, |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1418 fake_cws()->SetUpdateCrx(app.id, app.crx_filename, app.version); | 1463 fake_cws()->SetUpdateCrx(app.id, app.crx_filename, app.version); |
1419 } | 1464 } |
1420 | 1465 |
1421 // Launch the primary app. | 1466 // Launch the primary app. |
1422 StartUIForAppLaunch(); | 1467 StartUIForAppLaunch(); |
1423 SimulateNetworkOnline(); | 1468 SimulateNetworkOnline(); |
1424 LaunchApp(test_app_id(), false); | 1469 LaunchApp(test_app_id(), false); |
1425 WaitForAppLaunchWithOptions(false, true); | 1470 WaitForAppLaunchWithOptions(false, true); |
1426 | 1471 |
1427 // Verify the primary app and the secondary apps are all installed. | 1472 // Verify the primary app and the secondary apps are all installed. |
1428 EXPECT_EQ(primary_app.version, GetInstalledAppVersion().GetString()); | 1473 EXPECT_TRUE(IsAppInstalled(primary_app.id, primary_app.version)); |
1429 for (const auto& app : secondary_apps) { | 1474 for (const auto& app : secondary_apps) { |
1430 EXPECT_TRUE(IsAppInstalled(app.id)); | 1475 EXPECT_TRUE(IsAppInstalled(app.id, app.version)); |
1431 EXPECT_EQ(GetAppType(app.id), app.type); | 1476 EXPECT_EQ(GetAppType(app.id), app.type); |
1432 } | 1477 } |
1433 } | 1478 } |
1434 | 1479 |
1435 void LaunchTestKioskAppWithTwoSecondaryApps() { | 1480 void LaunchTestKioskAppWithTwoSecondaryApps() { |
1436 TestAppInfo primary_app(kTestPrimaryKioskApp, "1.0.0", | 1481 TestAppInfo primary_app(kTestPrimaryKioskApp, "1.0.0", |
1437 std::string(kTestPrimaryKioskApp) + "-1.0.0.crx", | 1482 std::string(kTestPrimaryKioskApp) + "-1.0.0.crx", |
1438 extensions::Manifest::TYPE_PLATFORM_APP); | 1483 extensions::Manifest::TYPE_PLATFORM_APP); |
1439 | 1484 |
1440 std::vector<TestAppInfo> secondary_apps; | 1485 std::vector<TestAppInfo> secondary_apps; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1477 extensions::Manifest::TYPE_PLATFORM_APP); | 1522 extensions::Manifest::TYPE_PLATFORM_APP); |
1478 secondary_apps.push_back(secondary_app); | 1523 secondary_apps.push_back(secondary_app); |
1479 // Setting up FakeCWS for shared module is the same for shared module as | 1524 // Setting up FakeCWS for shared module is the same for shared module as |
1480 // for kiosk secondary apps. | 1525 // for kiosk secondary apps. |
1481 TestAppInfo shared_module(kTestSharedModuleId, "1.0.0", | 1526 TestAppInfo shared_module(kTestSharedModuleId, "1.0.0", |
1482 std::string(kTestSharedModuleId) + "-1.0.0.crx", | 1527 std::string(kTestSharedModuleId) + "-1.0.0.crx", |
1483 extensions::Manifest::TYPE_SHARED_MODULE); | 1528 extensions::Manifest::TYPE_SHARED_MODULE); |
1484 secondary_apps.push_back(shared_module); | 1529 secondary_apps.push_back(shared_module); |
1485 | 1530 |
1486 LaunchKioskWithSecondaryApps(primary_app, secondary_apps); | 1531 LaunchKioskWithSecondaryApps(primary_app, secondary_apps); |
1487 EXPECT_TRUE(IsAppInstalled(kTestSharedModuleId)); | 1532 EXPECT_TRUE(IsAppInstalled(shared_module.id, shared_module.version)); |
1533 } | |
1534 | |
1535 void LaunchAppWithSharedModule() { | |
1536 TestAppInfo primary_app( | |
1537 kTestSharedModulePrimaryApp, "2.0.0", | |
1538 std::string(kTestSharedModulePrimaryApp) + "-2.0.0.crx", | |
1539 extensions::Manifest::TYPE_PLATFORM_APP); | |
1540 | |
1541 std::vector<TestAppInfo> secondary_apps; | |
1542 // Setting up FakeCWS for shared module is the same for shared module as | |
1543 // for kiosk secondary apps. | |
1544 TestAppInfo shared_module(kTestSharedModuleId, "1.0.0", | |
1545 std::string(kTestSharedModuleId) + "-1.0.0.crx", | |
1546 extensions::Manifest::TYPE_SHARED_MODULE); | |
1547 secondary_apps.push_back(shared_module); | |
1548 | |
1549 LaunchKioskWithSecondaryApps(primary_app, secondary_apps); | |
1488 } | 1550 } |
1489 | 1551 |
1490 private: | 1552 private: |
1491 class KioskAppExternalUpdateWaiter : public KioskAppManagerObserver { | 1553 class KioskAppExternalUpdateWaiter : public KioskAppManagerObserver { |
1492 public: | 1554 public: |
1493 KioskAppExternalUpdateWaiter(KioskAppManager* manager, | 1555 KioskAppExternalUpdateWaiter(KioskAppManager* manager, |
1494 const std::string& app_id) | 1556 const std::string& app_id) |
1495 : runner_(NULL), | 1557 : runner_(NULL), |
1496 manager_(manager), | 1558 manager_(manager), |
1497 app_id_(app_id), | 1559 app_id_(app_id), |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1532 scoped_refptr<content::MessageLoopRunner> runner_; | 1594 scoped_refptr<content::MessageLoopRunner> runner_; |
1533 KioskAppManager* manager_; | 1595 KioskAppManager* manager_; |
1534 const std::string app_id_; | 1596 const std::string app_id_; |
1535 bool quit_; | 1597 bool quit_; |
1536 bool update_success_; | 1598 bool update_success_; |
1537 bool app_update_notified_; | 1599 bool app_update_notified_; |
1538 | 1600 |
1539 DISALLOW_COPY_AND_ASSIGN(KioskAppExternalUpdateWaiter); | 1601 DISALLOW_COPY_AND_ASSIGN(KioskAppExternalUpdateWaiter); |
1540 }; | 1602 }; |
1541 | 1603 |
1542 // The local cache is supposed to be initialized on chromeos device, and a | |
1543 // ready flag file will be pre-created to mark the ready state, before chrome | |
1544 // starts. In order for the tests to run without being on real chromeos | |
1545 // device, we need to manually create this file. | |
1546 void CreateAndInitializeLocalCache() { | |
1547 base::FilePath extension_cache_dir; | |
1548 CHECK(PathService::Get(chromeos::DIR_DEVICE_EXTENSION_LOCAL_CACHE, | |
1549 &extension_cache_dir)); | |
1550 base::FilePath cache_init_file = extension_cache_dir.Append( | |
1551 extensions::LocalExtensionCache::kCacheReadyFlagFileName); | |
1552 EXPECT_EQ(base::WriteFile(cache_init_file, "", 0), 0); | |
1553 } | |
1554 | |
1555 // Owned by DiskMountManager. | 1604 // Owned by DiskMountManager. |
1556 KioskFakeDiskMountManager* fake_disk_mount_manager_; | 1605 KioskFakeDiskMountManager* fake_disk_mount_manager_; |
1557 | 1606 |
1558 DISALLOW_COPY_AND_ASSIGN(KioskUpdateTest); | 1607 DISALLOW_COPY_AND_ASSIGN(KioskUpdateTest); |
1559 }; | 1608 }; |
1560 | 1609 |
1561 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_LaunchOfflineEnabledAppNoNetwork) { | 1610 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_LaunchOfflineEnabledAppNoNetwork) { |
1562 PreCacheAndLaunchApp(kTestOfflineEnabledKioskApp, | 1611 PreCacheAndLaunchApp(kTestOfflineEnabledKioskApp, |
1563 "1.0.0", | 1612 "1.0.0", |
1564 std::string(kTestOfflineEnabledKioskApp) + "_v1.crx"); | 1613 std::string(kTestOfflineEnabledKioskApp) + "_v1.crx"); |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1879 } | 1928 } |
1880 | 1929 |
1881 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_UpdateMultiAppKioskRemoveOneApp) { | 1930 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_UpdateMultiAppKioskRemoveOneApp) { |
1882 LaunchTestKioskAppWithTwoSecondaryApps(); | 1931 LaunchTestKioskAppWithTwoSecondaryApps(); |
1883 } | 1932 } |
1884 | 1933 |
1885 // Update the primary app to version 2 which removes one of the secondary app | 1934 // Update the primary app to version 2 which removes one of the secondary app |
1886 // from its manifest. | 1935 // from its manifest. |
1887 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, UpdateMultiAppKioskRemoveOneApp) { | 1936 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, UpdateMultiAppKioskRemoveOneApp) { |
1888 set_test_app_id(kTestPrimaryKioskApp); | 1937 set_test_app_id(kTestPrimaryKioskApp); |
1889 fake_cws()->SetUpdateCrx( | 1938 fake_cws()->SetUpdateCrx(kTestPrimaryKioskApp, |
1890 kTestPrimaryKioskApp, | 1939 std::string(kTestPrimaryKioskApp) + "-2.0.0.crx", |
1891 std::string(kTestPrimaryKioskApp) + "-2.0.0-1app.crx", "2.0.0"); | 1940 "2.0.0"); |
1892 fake_cws()->SetNoUpdate(kTestSecondaryApp1); | 1941 fake_cws()->SetNoUpdate(kTestSecondaryApp1); |
1893 fake_cws()->SetNoUpdate(kTestSecondaryApp2); | 1942 fake_cws()->SetNoUpdate(kTestSecondaryApp2); |
1894 | 1943 |
1895 StartUIForAppLaunch(); | 1944 StartUIForAppLaunch(); |
1896 SimulateNetworkOnline(); | 1945 SimulateNetworkOnline(); |
1897 LaunchApp(test_app_id(), false); | 1946 LaunchApp(test_app_id(), false); |
1898 WaitForAppLaunchWithOptions(false, true); | 1947 WaitForAppLaunchWithOptions(false, true); |
1899 | 1948 |
1900 // Verify the secondary app kTestSecondaryApp1 is removed. | 1949 // Verify the secondary app kTestSecondaryApp1 is removed. |
1901 EXPECT_EQ("2.0.0", GetInstalledAppVersion().GetString()); | 1950 EXPECT_EQ("2.0.0", GetInstalledAppVersion().GetString()); |
1902 EXPECT_FALSE(IsAppInstalled(kTestSecondaryApp1)); | 1951 EXPECT_FALSE(IsAppInstalled(kTestSecondaryApp1, "1.0.0")); |
1903 EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp2)); | 1952 EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp2, "1.0.0")); |
1904 } | 1953 } |
1905 | 1954 |
1906 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_UpdateMultiAppKioskAddOneApp) { | 1955 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_UpdateMultiAppKioskAddOneApp) { |
1907 LaunchTestKioskAppWithTwoSecondaryApps(); | 1956 LaunchTestKioskAppWithTwoSecondaryApps(); |
1908 } | 1957 } |
1909 | 1958 |
1910 // Update the primary app to version 3 which adds a new secondary app in its | 1959 // Update the primary app to version 3 which adds a new secondary app in its |
1911 // manifest. | 1960 // manifest. |
1912 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, UpdateMultiAppKioskAddOneApp) { | 1961 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, UpdateMultiAppKioskAddOneApp) { |
1913 set_test_app_id(kTestPrimaryKioskApp); | 1962 set_test_app_id(kTestPrimaryKioskApp); |
1914 fake_cws()->SetUpdateCrx( | 1963 fake_cws()->SetUpdateCrx(kTestPrimaryKioskApp, |
1915 kTestPrimaryKioskApp, | 1964 std::string(kTestPrimaryKioskApp) + "-3.0.0.crx", |
1916 std::string(kTestPrimaryKioskApp) + "-3.0.0-3app.crx", "3.0.0"); | 1965 "3.0.0"); |
1917 fake_cws()->SetNoUpdate(kTestSecondaryApp1); | 1966 fake_cws()->SetNoUpdate(kTestSecondaryApp1); |
1918 fake_cws()->SetNoUpdate(kTestSecondaryApp2); | 1967 fake_cws()->SetNoUpdate(kTestSecondaryApp2); |
1919 fake_cws()->SetUpdateCrx(kTestSecondaryApp3, | 1968 fake_cws()->SetUpdateCrx(kTestSecondaryApp3, |
1920 std::string(kTestSecondaryApp3) + "-1.0.0.crx", | 1969 std::string(kTestSecondaryApp3) + "-1.0.0.crx", |
1921 "1.0.0"); | 1970 "1.0.0"); |
1922 | 1971 |
1923 StartUIForAppLaunch(); | 1972 StartUIForAppLaunch(); |
1924 SimulateNetworkOnline(); | 1973 SimulateNetworkOnline(); |
1925 LaunchApp(test_app_id(), false); | 1974 LaunchApp(test_app_id(), false); |
1926 WaitForAppLaunchWithOptions(false, true); | 1975 WaitForAppLaunchWithOptions(false, true); |
1927 | 1976 |
1928 // Verify the secondary app kTestSecondaryApp3 is installed. | 1977 // Verify the secondary app kTestSecondaryApp3 is installed. |
1929 EXPECT_EQ("3.0.0", GetInstalledAppVersion().GetString()); | 1978 EXPECT_EQ("3.0.0", GetInstalledAppVersion().GetString()); |
1930 EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp1)); | 1979 EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp1, "1.0.0")); |
1931 EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp2)); | 1980 EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp2, "1.0.0")); |
1932 EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp3)); | 1981 EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp3, "1.0.0")); |
1933 } | 1982 } |
1934 | 1983 |
1935 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, LaunchKioskAppWithSecondaryExtension) { | 1984 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, LaunchKioskAppWithSecondaryExtension) { |
1936 LaunchTestKioskAppWithSeconadayExtension(); | 1985 LaunchTestKioskAppWithSeconadayExtension(); |
1937 } | 1986 } |
1938 | 1987 |
1939 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, | 1988 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, |
1940 LaunchAppWithSharedModuleAndSecondaryApp) { | 1989 LaunchAppWithSharedModuleAndSecondaryApp) { |
1941 LaunchAppWithSharedModuleAndSecondaryApp(); | 1990 LaunchAppWithSharedModuleAndSecondaryApp(); |
1942 } | 1991 } |
(...skipping 11 matching lines...) Expand all Loading... | |
1954 std::string(kTestSharedModulePrimaryApp) + "-2.0.0.crx", "2.0.0"); | 2003 std::string(kTestSharedModulePrimaryApp) + "-2.0.0.crx", "2.0.0"); |
1955 fake_cws()->SetNoUpdate(kTestSecondaryApp1); | 2004 fake_cws()->SetNoUpdate(kTestSecondaryApp1); |
1956 fake_cws()->SetNoUpdate(kTestSharedModuleId); | 2005 fake_cws()->SetNoUpdate(kTestSharedModuleId); |
1957 | 2006 |
1958 StartUIForAppLaunch(); | 2007 StartUIForAppLaunch(); |
1959 SimulateNetworkOnline(); | 2008 SimulateNetworkOnline(); |
1960 LaunchApp(test_app_id(), false); | 2009 LaunchApp(test_app_id(), false); |
1961 WaitForAppLaunchWithOptions(false, true); | 2010 WaitForAppLaunchWithOptions(false, true); |
1962 | 2011 |
1963 // Verify the secondary app is removed. | 2012 // Verify the secondary app is removed. |
1964 EXPECT_TRUE(IsAppInstalled(kTestSharedModuleId)); | 2013 EXPECT_TRUE(IsAppInstalled(kTestSharedModuleId, "1.0.0")); |
1965 EXPECT_FALSE(IsAppInstalled(kTestSecondaryApp1)); | 2014 EXPECT_FALSE(IsAppInstalled(kTestSecondaryApp1, "1.0.0")); |
1966 } | 2015 } |
1967 | 2016 |
1968 // This simulates the stand-alone ARC kiosk app case. The primary app has a | 2017 // This simulates the stand-alone ARC kiosk app case. The primary app has a |
1969 // shared ARC runtime but no secondary apps. | 2018 // shared ARC runtime but no secondary apps. |
1970 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, LaunchAppWithSharedModuleNoSecondary) { | 2019 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, LaunchAppWithSharedModuleNoSecondary) { |
1971 TestAppInfo primary_app( | 2020 LaunchAppWithSharedModule(); |
1972 kTestSharedModulePrimaryApp, "2.0.0", | 2021 } |
1973 std::string(kTestSharedModulePrimaryApp) + "-2.0.0.crx", | |
1974 extensions::Manifest::TYPE_PLATFORM_APP); | |
1975 | 2022 |
1976 std::vector<TestAppInfo> secondary_apps; | 2023 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_LaunchAppWithUpdatedModule) { |
1977 // Setting up FakeCWS for shared module is the same for shared module as | 2024 LaunchAppWithSharedModule(); |
1978 // for kiosk secondary apps. | 2025 // Verify the shared module is installed with version 1.0.0. |
1979 TestAppInfo shared_module(kTestSharedModuleId, "1.0.0", | 2026 EXPECT_TRUE(IsAppInstalled(kTestSharedModuleId, "1.0.0")); |
1980 std::string(kTestSharedModuleId) + "-1.0.0.crx", | 2027 } |
1981 extensions::Manifest::TYPE_SHARED_MODULE); | |
1982 secondary_apps.push_back(shared_module); | |
1983 | 2028 |
1984 LaunchKioskWithSecondaryApps(primary_app, secondary_apps); | 2029 // This simulates the case the shared module is updated to a newer version. |
2030 // See crbug.com/555083. | |
2031 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, LaunchAppWithUpdatedModule) { | |
2032 // No update for primary app, while the shared module is set up to a new | |
2033 // version on cws. | |
2034 set_test_app_id(kTestSharedModulePrimaryApp); | |
2035 fake_cws()->SetNoUpdate(kTestSharedModulePrimaryApp); | |
2036 fake_cws()->SetUpdateCrx(kTestSharedModuleId, | |
2037 std::string(kTestSharedModuleId) + "-2.0.0.crx", | |
2038 "2.0.0"); | |
2039 | |
2040 StartUIForAppLaunch(); | |
2041 SimulateNetworkOnline(); | |
2042 LaunchApp(test_app_id(), false); | |
2043 WaitForAppLaunchWithOptions(false, true); | |
2044 | |
2045 // Verify the shared module is updated to the new version after primary app | |
2046 // is launched. | |
2047 EXPECT_TRUE(IsAppInstalled(kTestSharedModuleId, "2.0.0")); | |
1985 } | 2048 } |
1986 | 2049 |
1987 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, | 2050 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, |
1988 LaunchAppWithSecondaryArcLikeAppAndExtension) { | 2051 LaunchAppWithSecondaryArcLikeAppAndExtension) { |
1989 TestAppInfo primary_app( | 2052 TestAppInfo primary_app( |
1990 kTestSharedModulePrimaryApp, "3.0.0", | 2053 kTestSharedModulePrimaryApp, "3.0.0", |
1991 std::string(kTestSharedModulePrimaryApp) + "-3.0.0.crx", | 2054 std::string(kTestSharedModulePrimaryApp) + "-3.0.0.crx", |
1992 extensions::Manifest::TYPE_PLATFORM_APP); | 2055 extensions::Manifest::TYPE_PLATFORM_APP); |
1993 | 2056 |
1994 std::vector<TestAppInfo> secondary_apps; | 2057 std::vector<TestAppInfo> secondary_apps; |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2252 content::WindowedNotificationObserver( | 2315 content::WindowedNotificationObserver( |
2253 chrome::NOTIFICATION_KIOSK_AUTOLAUNCH_WARNING_VISIBLE, | 2316 chrome::NOTIFICATION_KIOSK_AUTOLAUNCH_WARNING_VISIBLE, |
2254 content::NotificationService::AllSources()).Wait(); | 2317 content::NotificationService::AllSources()).Wait(); |
2255 | 2318 |
2256 // Wait for the wallpaper to load. | 2319 // Wait for the wallpaper to load. |
2257 WaitForWallpaper(); | 2320 WaitForWallpaper(); |
2258 EXPECT_TRUE(wallpaper_loaded()); | 2321 EXPECT_TRUE(wallpaper_loaded()); |
2259 } | 2322 } |
2260 | 2323 |
2261 } // namespace chromeos | 2324 } // namespace chromeos |
OLD | NEW |