| 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 e8f3def592637bd3aa5a1f933f2012b83c1fa3ba..bfa27f6bed66920b56b7e5ac4f50c4b976067400 100644
|
| --- a/chrome/browser/extensions/extension_service_unittest.cc
|
| +++ b/chrome/browser/extensions/extension_service_unittest.cc
|
| @@ -2786,6 +2786,112 @@ 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
|
| +
|
| + // 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);
|
| +
|
| + // 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);
|
| + service_->UpdateExtensionBlacklist(blacklist);
|
| +
|
| + FilePath path = data_dir_.AppendASCII("good.crx");
|
| + InstallCRX(path, INSTALL_FAILED);
|
| +
|
| + base::ListValue whitelist;
|
| + whitelist.Append(base::Value::CreateStringValue(good_crx));
|
| + service_->extension_prefs()->pref_service()->Set(
|
| + prefs::kExtensionInstallAllowList, whitelist);
|
| +
|
| + InstallCRX(path, INSTALL_NEW);
|
| +}
|
| +
|
| +// 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);
|
| + service_->UpdateExtensionBlacklist(blacklist);
|
| +
|
| + FilePath path = data_dir_.AppendASCII("good.crx");
|
| + InstallCRX(path, INSTALL_FAILED);
|
| +
|
| + base::ListValue forcelist;
|
| + forcelist.Append(base::Value::CreateStringValue(good_crx));
|
| + service_->extension_prefs()->pref_service()->Set(
|
| + prefs::kExtensionInstallAllowList, forcelist);
|
| +
|
| + InstallCRX(path, INSTALL_NEW);
|
| +}
|
| +
|
| +// Allow Google-blacklisted extension if policy explicitly allows it (set policy
|
| +// then blacklist).
|
| +TEST_F(ExtensionServiceTest, GoogleBlacklistWhitelistedExtension) {
|
| + InitializeEmptyExtensionService();
|
| +
|
| + base::ListValue whitelist;
|
| + whitelist.Append(base::Value::CreateStringValue(good_crx));
|
| + service_->extension_prefs()->pref_service()->Set(
|
| + prefs::kExtensionInstallAllowList, whitelist);
|
| +
|
| + std::vector<std::string> blacklist;
|
| + blacklist.push_back(good_crx);
|
| + service_->UpdateExtensionBlacklist(blacklist);
|
| +
|
| + InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW);
|
| +}
|
| +
|
| +// Allow Google-blacklisted extension if policy requires it (set policy then
|
| +// blacklist).
|
| +TEST_F(ExtensionServiceTest, GoogleBlacklistForcelistedExtension) {
|
| + InitializeEmptyExtensionService();
|
| +
|
| + base::ListValue forcelist;
|
| + forcelist.Append(base::Value::CreateStringValue(good_crx));
|
| + service_->extension_prefs()->pref_service()->Set(
|
| + prefs::kExtensionInstallAllowList, forcelist);
|
| +
|
| + std::vector<std::string> blacklist;
|
| + blacklist.push_back(good_crx);
|
| + service_->UpdateExtensionBlacklist(blacklist);
|
| +
|
| + InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW);
|
| +}
|
| +
|
| // Test loading extensions from the profile directory, except
|
| // blacklisted ones.
|
| TEST_F(ExtensionServiceTest, WillNotLoadBlacklistedExtensionsFromDirectory) {
|
| @@ -3067,7 +3173,7 @@ TEST_F(ExtensionServiceTest, ManagementPolicyUnloadsAllProhibited) {
|
| management_policy_->RegisterProvider(&provider);
|
|
|
| // Run the policy check.
|
| - service_->CheckAdminBlacklist();
|
| + service_->CheckManagementPolicy();
|
| EXPECT_EQ(0u, service_->extensions()->size());
|
| EXPECT_EQ(0u, service_->disabled_extensions()->size());
|
| }
|
|
|