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.
|