Chromium Code Reviews| Index: chrome/browser/extensions/extension_service_unittest.cc |
| diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc |
| index e06cdfa242f84bd241096ec352e9193e64eb2eb3..93bdc9c9056145eb0374192f27e46a11420de55f 100644 |
| --- a/chrome/browser/extensions/extension_service_unittest.cc |
| +++ b/chrome/browser/extensions/extension_service_unittest.cc |
| @@ -2786,6 +2786,119 @@ TEST_F(ExtensionServiceTest, BlacklistedExtensionWillNotInstall) { |
| ValidateBooleanPref(good_crx, "blacklist", true); |
| } |
| +// Unload blacklisted extension on policy change. |
| +TEST_F(ExtensionServiceTest, UnloadBlacklistedExtensionPolicy) { |
| + InitializeEmptyExtensionService(); |
| + |
| + FilePath path = data_dir_.AppendASCII("good.crx"); |
| + |
| + const Extension* good = InstallCRX(path, INSTALL_NEW); |
| + EXPECT_EQ(good_crx, good->id()); |
| + UpdateExtension(good_crx, path, FAILED_SILENTLY); |
| + EXPECT_EQ(1u, service_->extensions()->size()); |
| + |
| + base::ListValue whitelist; |
| + PrefService* prefs = service_->extension_prefs()->pref_service(); |
| + whitelist.Append(base::Value::CreateStringValue(good_crx)); |
| + prefs->Set(prefs::kExtensionInstallAllowList, whitelist); |
| + |
| + std::vector<std::string> blacklist; |
| + blacklist.push_back(good_crx); |
| + service_->UpdateExtensionBlacklist(blacklist); |
| + // Make sure pref is updated |
|
Mattias Nissler (ping if slow)
2012/08/08 08:08:37
Missing period.
Also, pref read writes don't requi
qfel
2012/08/13 16:03:02
Uh, I was going to ask for the same, and forgot to
|
| + loop_.RunAllPending(); |
| + |
| + // Now, the good_crx is blacklisted but whitelist negates it. |
| + ValidateBooleanPref(good_crx, "blacklist", true); |
| + EXPECT_EQ(1u, service_->extensions()->size()); |
| + |
| + whitelist.Clear(); |
| + prefs->Set(prefs::kExtensionInstallAllowList, whitelist); |
| + loop_.RunAllPending(); |
| + |
| + // Now, the good_crx is blacklisted for good. |
| + ValidateBooleanPref(good_crx, "blacklist", true); |
| + EXPECT_EQ(0u, service_->extensions()->size()); |
| +} |
| + |
| +// Allow Google-blacklisted extension if policy explicitly allows it (blacklist |
| +// then set policy). |
| +TEST_F(ExtensionServiceTest, WhitelistGoogleBlacklistedExtension) { |
| + InitializeEmptyExtensionService(); |
| + |
| + std::vector<std::string> blacklist; |
| + blacklist.push_back(good_crx); |
| + EXPECT_FALSE(IsPrefExist(good_crx, "blacklist")); |
| + service_->UpdateExtensionBlacklist(blacklist); |
| + loop_.RunAllPending(); |
| + EXPECT_TRUE(IsPrefExist(good_crx, "blacklist")); |
| + |
| + PrefService* prefs = service_->extension_prefs()->pref_service(); |
| + base::ListValue whitelist; |
| + whitelist.Append(base::Value::CreateStringValue(good_crx)); |
| + prefs->Set(prefs::kExtensionInstallAllowList, whitelist); |
| + loop_.RunAllPending(); |
| + EXPECT_FALSE(service_->extension_prefs()->IsExtensionBlacklisted(good_crx)); |
| +} |
| + |
| +// Allow Google-blacklisted extension if policy requires it (blacklist then set |
| +// policy). |
| +TEST_F(ExtensionServiceTest, ForcelistGoogleBlacklistedExtension) { |
| + InitializeEmptyExtensionService(); |
| + |
| + std::vector<std::string> blacklist; |
| + blacklist.push_back(good_crx); |
| + EXPECT_FALSE(IsPrefExist(good_crx, "blacklist")); |
| + service_->UpdateExtensionBlacklist(blacklist); |
| + loop_.RunAllPending(); |
| + EXPECT_TRUE(IsPrefExist(good_crx, "blacklist")); |
| + |
| + PrefService* prefs = service_->extension_prefs()->pref_service(); |
| + base::ListValue forcelist; |
| + forcelist.Append(base::Value::CreateStringValue(good_crx)); |
| + prefs->Set(prefs::kExtensionInstallForceList, forcelist); |
| + loop_.RunAllPending(); |
| + EXPECT_FALSE(service_->extension_prefs()->IsExtensionBlacklisted(good_crx)); |
| +} |
| + |
| +// Allow Google-blacklisted extension if policy explicitly allows it (set policy |
| +// then blacklist). |
|
Mattias Nissler (ping if slow)
2012/08/08 08:08:37
I'm not sure we really need to test different orde
qfel
2012/08/13 16:03:02
Considering you knowing the implementation, it's a
|
| +TEST_F(ExtensionServiceTest, GoogleBlacklistWhitelistedExtension) { |
| + InitializeEmptyExtensionService(); |
| + |
| + PrefService* prefs = service_->extension_prefs()->pref_service(); |
| + base::ListValue whitelist; |
| + whitelist.Append(base::Value::CreateStringValue(good_crx)); |
| + prefs->Set(prefs::kExtensionInstallAllowList, whitelist); |
| + loop_.RunAllPending(); |
| + |
| + std::vector<std::string> blacklist; |
| + blacklist.push_back(good_crx); |
| + EXPECT_FALSE(IsPrefExist(good_crx, "blacklist")); |
| + service_->UpdateExtensionBlacklist(blacklist); |
| + loop_.RunAllPending(); |
| + EXPECT_FALSE(service_->extension_prefs()->IsExtensionBlacklisted(good_crx)); |
| +} |
| + |
| +// Allow Google-blacklisted extension if policy requires it (set policy then |
| +// blacklist). |
| +TEST_F(ExtensionServiceTest, GoogleBlacklistForcelistedExtension) { |
| + InitializeEmptyExtensionService(); |
| + |
| + PrefService* prefs = service_->extension_prefs()->pref_service(); |
| + base::ListValue forcelist; |
| + forcelist.Append(base::Value::CreateStringValue(good_crx)); |
| + prefs->Set(prefs::kExtensionInstallForceList, forcelist); |
| + loop_.RunAllPending(); |
| + |
| + std::vector<std::string> blacklist; |
| + blacklist.push_back(good_crx); |
| + EXPECT_FALSE(IsPrefExist(good_crx, "blacklist")); |
| + service_->UpdateExtensionBlacklist(blacklist); |
| + loop_.RunAllPending(); |
| + EXPECT_FALSE(service_->extension_prefs()->IsExtensionBlacklisted(good_crx)); |
| +} |
| + |
| // Test loading extensions from the profile directory, except |
| // blacklisted ones. |
| TEST_F(ExtensionServiceTest, WillNotLoadBlacklistedExtensionsFromDirectory) { |