Chromium Code Reviews| Index: chrome/browser/chromeos/login/kiosk_browsertest.cc |
| diff --git a/chrome/browser/chromeos/login/kiosk_browsertest.cc b/chrome/browser/chromeos/login/kiosk_browsertest.cc |
| index 4322d447ca9fd41684975777d4a296bcde494693..666860e720684139f750c112cee907daf7043b5e 100644 |
| --- a/chrome/browser/chromeos/login/kiosk_browsertest.cc |
| +++ b/chrome/browser/chromeos/login/kiosk_browsertest.cc |
| @@ -117,19 +117,50 @@ const char kTestLocalFsKioskApp[] = "bmbpicmpniaclbbpdkfglgipkkebnbjf"; |
| // An app to test local access to file systems via the |
| // chrome.fileSystem.requestFileSystem API. |
| // Webstore data json is in |
| -// chrome/test/data/chromeos/app_mode/webstore/inlineinstall/ |
| -// detail/aaedpojejpghjkedenggihopfhfijcko |
| +// chrome/test/data/chromeos/app_mode/webstore/inlineinstall/ |
| +// detail/aaedpojejpghjkedenggihopfhfijcko |
| const char kTestGetVolumeListKioskApp[] = "aaedpojejpghjkedenggihopfhfijcko"; |
| -// Testing apps for testing kiosk multi-app feature. |
| -const char kTestPrimaryKioskApp[] = "ceobkcclegcliomogfoeoheahogoecgl"; |
| -const char kTestSecondaryApp1[] = "ihplaomghjbeafnpnjkhppmfpnmdihgd"; |
| -const char kTestSecondaryApp2[] = "fiehokkcgaojmbhfhlpiheggjhaedjoc"; |
| -const char kTestSecondaryApp3[] = "aabnpdpieclcikafhdkkpldcaodmfoai"; |
| -const char kTestSecondaryExtension[] = "imlgadjgphbjkaceoiapiephhgeofhic"; |
| +// Testing apps for testing kiosk multi-app feature. All the crx files are in |
| +// chrome/test/data/chromeos/app_mode/webstore/downloads. |
| + |
| +// Source files are in |
| +// chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/primary_app |
| +const char kTestPrimaryKioskApp[] = "dpejijbnadgcgmabkmcoajkgongfgnii"; |
| + |
| +// Source files are in |
| +// chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/secondary_app_1 |
| +const char kTestSecondaryApp1[] = "emnbflhfbllbehnpjmjddklbkeeoaaeg"; |
| + |
| +// Source files are in |
| +// chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/secondary_app_2 |
| +const char kTestSecondaryApp2[] = "blmjgfbajihimkjmepbhgmjbopjchlda"; |
| + |
| +// Source files are in |
| +// chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/secondary_app_3 |
| +const char kTestSecondaryApp3[] = "jkofhenkpndpdflehcjpcekgecjkpggg"; |
| + |
| +// Source files are in |
| +// chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/ |
| +// secondary_extensions_1 |
| +const char kTestSecondaryExtension[] = "gdmgkkoghcihimdfoabkefdkccllcfea"; |
| + |
| +// Source files are in |
| +// chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/ |
| +// shared_module_primary_app |
| const char kTestSharedModulePrimaryApp[] = "ofmeihgcmabfalhhgooajcijiaoekhkg"; |
| + |
| +// Source files are in |
| +// chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/secondary_app |
| const char kTestSecondaryApp[] = "bbmaiojbgkkmfaglfhaplfomobgojhke"; |
| + |
| +// Source files are in |
| +// chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/shared_module |
| const char kTestSharedModuleId[] = "biebhpdepndljbnkadldcbjkiedldnmn"; |
| + |
| +// Source files are in |
| +// chrome/test/data/chromeos/app_mode/multi_app_kiosk/src/ |
| +// secondary_extension |
| const char kTestSecondaryExt[] = "kcoobopfcjmbfeppibolpaolbgbmkcjd"; |
| // Fake usb stick mount path. |
| @@ -203,14 +234,14 @@ void LockAndUnlock(scoped_ptr<base::Lock> lock) { |
| lock->Release(); |
| } |
| -bool IsAppInstalled(const std::string& app_id) { |
| +bool IsAppInstalled(const std::string& app_id, const std::string& version) { |
| Profile* app_profile = ProfileManager::GetPrimaryUserProfile(); |
| DCHECK(app_profile); |
| const extensions::Extension* app = |
| extensions::ExtensionSystem::Get(app_profile) |
| ->extension_service() |
| ->GetInstalledExtension(app_id); |
| - return app != nullptr; |
| + return app != nullptr && version == app->version()->GetString(); |
| } |
| extensions::Manifest::Type GetAppType(const std::string& app_id) { |
| @@ -1425,9 +1456,9 @@ class KioskUpdateTest : public KioskTest { |
| WaitForAppLaunchWithOptions(false, true); |
| // Verify the primary app and the secondary apps are all installed. |
| - EXPECT_EQ(primary_app.version, GetInstalledAppVersion().GetString()); |
| + EXPECT_TRUE(IsAppInstalled(primary_app.id, primary_app.version)); |
| for (const auto& app : secondary_apps) { |
| - EXPECT_TRUE(IsAppInstalled(app.id)); |
| + EXPECT_TRUE(IsAppInstalled(app.id, app.version)); |
| EXPECT_EQ(GetAppType(app.id), app.type); |
| } |
| } |
| @@ -1484,7 +1515,24 @@ class KioskUpdateTest : public KioskTest { |
| secondary_apps.push_back(shared_module); |
| LaunchKioskWithSecondaryApps(primary_app, secondary_apps); |
| - EXPECT_TRUE(IsAppInstalled(kTestSharedModuleId)); |
| + EXPECT_TRUE(IsAppInstalled(shared_module.id, shared_module.version)); |
| + } |
| + |
| + void LaunchAppWithSharedModule() { |
| + TestAppInfo primary_app( |
| + kTestSharedModulePrimaryApp, "2.0.0", |
| + std::string(kTestSharedModulePrimaryApp) + "-2.0.0.crx", |
| + extensions::Manifest::TYPE_PLATFORM_APP); |
| + |
| + std::vector<TestAppInfo> secondary_apps; |
| + // Setting up FakeCWS for shared module is the same for shared module as |
| + // for kiosk secondary apps. |
| + TestAppInfo shared_module(kTestSharedModuleId, "1.0.0", |
| + std::string(kTestSharedModuleId) + "-1.0.0.crx", |
| + extensions::Manifest::TYPE_SHARED_MODULE); |
| + secondary_apps.push_back(shared_module); |
| + |
| + LaunchKioskWithSecondaryApps(primary_app, secondary_apps); |
| } |
| private: |
| @@ -1886,9 +1934,9 @@ IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_UpdateMultiAppKioskRemoveOneApp) { |
| // from its manifest. |
| IN_PROC_BROWSER_TEST_F(KioskUpdateTest, UpdateMultiAppKioskRemoveOneApp) { |
| set_test_app_id(kTestPrimaryKioskApp); |
| - fake_cws()->SetUpdateCrx( |
| - kTestPrimaryKioskApp, |
| - std::string(kTestPrimaryKioskApp) + "-2.0.0-1app.crx", "2.0.0"); |
| + fake_cws()->SetUpdateCrx(kTestPrimaryKioskApp, |
| + std::string(kTestPrimaryKioskApp) + "-2.0.0.crx", |
| + "2.0.0"); |
| fake_cws()->SetNoUpdate(kTestSecondaryApp1); |
| fake_cws()->SetNoUpdate(kTestSecondaryApp2); |
| @@ -1899,8 +1947,8 @@ IN_PROC_BROWSER_TEST_F(KioskUpdateTest, UpdateMultiAppKioskRemoveOneApp) { |
| // Verify the secondary app kTestSecondaryApp1 is removed. |
| EXPECT_EQ("2.0.0", GetInstalledAppVersion().GetString()); |
| - EXPECT_FALSE(IsAppInstalled(kTestSecondaryApp1)); |
| - EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp2)); |
| + EXPECT_FALSE(IsAppInstalled(kTestSecondaryApp1, "1.0.0")); |
| + EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp2, "1.0.0")); |
| } |
| IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_UpdateMultiAppKioskAddOneApp) { |
| @@ -1911,9 +1959,9 @@ IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_UpdateMultiAppKioskAddOneApp) { |
| // manifest. |
| IN_PROC_BROWSER_TEST_F(KioskUpdateTest, UpdateMultiAppKioskAddOneApp) { |
| set_test_app_id(kTestPrimaryKioskApp); |
| - fake_cws()->SetUpdateCrx( |
| - kTestPrimaryKioskApp, |
| - std::string(kTestPrimaryKioskApp) + "-3.0.0-3app.crx", "3.0.0"); |
| + fake_cws()->SetUpdateCrx(kTestPrimaryKioskApp, |
| + std::string(kTestPrimaryKioskApp) + "-3.0.0.crx", |
| + "3.0.0"); |
| fake_cws()->SetNoUpdate(kTestSecondaryApp1); |
| fake_cws()->SetNoUpdate(kTestSecondaryApp2); |
| fake_cws()->SetUpdateCrx(kTestSecondaryApp3, |
| @@ -1927,9 +1975,9 @@ IN_PROC_BROWSER_TEST_F(KioskUpdateTest, UpdateMultiAppKioskAddOneApp) { |
| // Verify the secondary app kTestSecondaryApp3 is installed. |
| EXPECT_EQ("3.0.0", GetInstalledAppVersion().GetString()); |
| - EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp1)); |
| - EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp2)); |
| - EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp3)); |
| + EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp1, "1.0.0")); |
| + EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp2, "1.0.0")); |
| + EXPECT_TRUE(IsAppInstalled(kTestSecondaryApp3, "1.0.0")); |
| } |
| IN_PROC_BROWSER_TEST_F(KioskUpdateTest, LaunchKioskAppWithSecondaryExtension) { |
| @@ -1961,26 +2009,37 @@ IN_PROC_BROWSER_TEST_F(KioskUpdateTest, |
| WaitForAppLaunchWithOptions(false, true); |
| // Verify the secondary app is removed. |
| - EXPECT_TRUE(IsAppInstalled(kTestSharedModuleId)); |
| - EXPECT_FALSE(IsAppInstalled(kTestSecondaryApp1)); |
| + EXPECT_TRUE(IsAppInstalled(kTestSharedModuleId, "1.0.0")); |
| + EXPECT_FALSE(IsAppInstalled(kTestSecondaryApp1, "1.0.0")); |
| } |
| // This simulates the stand-alone ARC kiosk app case. The primary app has a |
| // shared ARC runtime but no secondary apps. |
| IN_PROC_BROWSER_TEST_F(KioskUpdateTest, LaunchAppWithSharedModuleNoSecondary) { |
| + LaunchAppWithSharedModule(); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_LaunchAppWithUpdatedModule) { |
| + LaunchAppWithSharedModule(); |
| +} |
| + |
| +// This simulates the case the shared module is updated to a newer version. |
| +// See crbug.com/555083. |
| +IN_PROC_BROWSER_TEST_F(KioskUpdateTest, LaunchAppWithUpdatedModule) { |
| TestAppInfo primary_app( |
| kTestSharedModulePrimaryApp, "2.0.0", |
| std::string(kTestSharedModulePrimaryApp) + "-2.0.0.crx", |
| extensions::Manifest::TYPE_PLATFORM_APP); |
| std::vector<TestAppInfo> secondary_apps; |
| - // Setting up FakeCWS for shared module is the same for shared module as |
| - // for kiosk secondary apps. |
| - TestAppInfo shared_module(kTestSharedModuleId, "1.0.0", |
| - std::string(kTestSharedModuleId) + "-1.0.0.crx", |
| + // Set up the shared module on FakeCWS to the new version. |
| + TestAppInfo shared_module(kTestSharedModuleId, "2.0.0", |
| + std::string(kTestSharedModuleId) + "-2.0.0.crx", |
| extensions::Manifest::TYPE_SHARED_MODULE); |
| secondary_apps.push_back(shared_module); |
| + // When the primary app is launched, the shared module should be updated to |
| + // the new version. |
| LaunchKioskWithSecondaryApps(primary_app, secondary_apps); |
| } |
|
xiyuan
2015/12/02 21:04:20
Should we do a
EXPECT_TRUE(IsAppInstalled(kTe
jennyz
2015/12/03 00:27:55
Done.
|