Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1614)

Unified Diff: chrome/browser/extensions/extension_service_unittest.cc

Issue 98463005: Enable/disable extensions upon changes in blacklist. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 3b88bad4a1820929ceca52da6cd5574cac92c0e0..49edb1effd4cde611b5a3bcfe62791058a583d5b 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -3554,6 +3554,182 @@ TEST_F(ExtensionServiceTest, BlacklistedInPrefsFromStartup) {
}
#endif // defined(ENABLE_BLACKLIST_TESTS)
+#if defined(ENABLE_BLACKLIST_TESTS)
+// Extension is added to blacklist with BLACKLISTED_POTENTIALLY_UNWANTED state
+// after it is installed. It is then successfully re-enabled by the user.
+TEST_F(ExtensionServiceTest, GreylistedExtensionDisabled) {
+ extensions::TestBlacklist test_blacklist;
+ // A profile with 3 extensions installed: good0, good1, and good2.
+ InitializeGoodInstalledExtensionService();
+ test_blacklist.Attach(service_->blacklist_);
+ service_->Init();
+
+ ExtensionRegistry* registry = ExtensionRegistry::Get(profile_.get());
+ const extensions::ExtensionSet& enabled_extensions =
+ registry->enabled_extensions();
+ const extensions::ExtensionSet& disabled_extensions =
+ registry->disabled_extensions();
+
+ EXPECT_TRUE(enabled_extensions.Contains(good0));
+ EXPECT_TRUE(enabled_extensions.Contains(good1));
+ EXPECT_TRUE(enabled_extensions.Contains(good2));
+
+ // Blacklist good0 and good1 (and an invalid extension ID).
+ test_blacklist.SetBlacklistState(
+ good0, extensions::BLACKLISTED_CWS_POLICY_VIOLATION, true);
+ test_blacklist.SetBlacklistState(
+ good1, extensions::BLACKLISTED_POTENTIALLY_UNWANTED, true);
+ test_blacklist.SetBlacklistState(
+ "invalid_id", extensions::BLACKLISTED_MALWARE, true);
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_FALSE(enabled_extensions.Contains(good0));
+ EXPECT_TRUE(disabled_extensions.Contains(good0));
+ EXPECT_FALSE(enabled_extensions.Contains(good1));
+ EXPECT_TRUE(disabled_extensions.Contains(good1));
+ EXPECT_TRUE(enabled_extensions.Contains(good2));
+ EXPECT_FALSE(disabled_extensions.Contains(good2));
+
+ ValidateIntegerPref(
+ good0, "blacklist_state", extensions::BLACKLISTED_CWS_POLICY_VIOLATION);
+ ValidateIntegerPref(
+ good1, "blacklist_state", extensions::BLACKLISTED_POTENTIALLY_UNWANTED);
+
+ // Now user enables good0.
+ service_->EnableExtension(good0);
+
+ EXPECT_TRUE(enabled_extensions.Contains(good0));
+ EXPECT_FALSE(disabled_extensions.Contains(good0));
+ EXPECT_FALSE(enabled_extensions.Contains(good1));
+ EXPECT_TRUE(disabled_extensions.Contains(good1));
+
+ // Remove extensions from blacklist.
+ test_blacklist.SetBlacklistState(
+ good0, extensions::NOT_BLACKLISTED, true);
+ test_blacklist.SetBlacklistState(
+ good1, extensions::NOT_BLACKLISTED, true);
+ base::RunLoop().RunUntilIdle();
+
+ // All extensions are enabled.
+ EXPECT_TRUE(enabled_extensions.Contains(good0));
+ EXPECT_FALSE(disabled_extensions.Contains(good0));
+ EXPECT_TRUE(enabled_extensions.Contains(good1));
+ EXPECT_FALSE(disabled_extensions.Contains(good1));
+ EXPECT_TRUE(enabled_extensions.Contains(good2));
+ EXPECT_FALSE(disabled_extensions.Contains(good2));
+}
+#endif // defined(ENABLE_BLACKLIST_TESTS)
+
+#if defined(ENABLE_BLACKLIST_TESTS)
+// When extension is removed from greylist, do not re-enable it if it is
+// disabled by user.
+TEST_F(ExtensionServiceTest, GreylistDontEnableManuallyDisabled) {
+ extensions::TestBlacklist test_blacklist;
+ // A profile with 3 extensions installed: good0, good1, and good2.
+ InitializeGoodInstalledExtensionService();
+ test_blacklist.Attach(service_->blacklist_);
+ service_->Init();
+
+ ExtensionRegistry* registry = ExtensionRegistry::Get(profile_.get());
+ const extensions::ExtensionSet& enabled_extensions =
+ registry->enabled_extensions();
+ const extensions::ExtensionSet& disabled_extensions =
+ registry->disabled_extensions();
+
+ // Manually disable.
+ service_->DisableExtension(good0, extensions::Extension::DISABLE_USER_ACTION);
+
+ test_blacklist.SetBlacklistState(
+ good0, extensions::BLACKLISTED_CWS_POLICY_VIOLATION, true);
+ test_blacklist.SetBlacklistState(
+ good1, extensions::BLACKLISTED_POTENTIALLY_UNWANTED, true);
+ test_blacklist.SetBlacklistState(
+ good2, extensions::BLACKLISTED_SECURITY_VULNERABILITY, true);
+ base::RunLoop().RunUntilIdle();
+
+ // All extensions disabled.
+ EXPECT_FALSE(enabled_extensions.Contains(good0));
+ EXPECT_TRUE(disabled_extensions.Contains(good0));
+ EXPECT_FALSE(enabled_extensions.Contains(good1));
+ EXPECT_TRUE(disabled_extensions.Contains(good1));
+ EXPECT_FALSE(enabled_extensions.Contains(good2));
+ EXPECT_TRUE(disabled_extensions.Contains(good2));
+
+ // Greylisted extension can be enabled.
+ service_->EnableExtension(good1);
+ EXPECT_TRUE(enabled_extensions.Contains(good1));
+ EXPECT_FALSE(disabled_extensions.Contains(good1));
+
+ // good1 is now manually disabled.
+ service_->DisableExtension(good1, extensions::Extension::DISABLE_USER_ACTION);
+ EXPECT_FALSE(enabled_extensions.Contains(good1));
+ EXPECT_TRUE(disabled_extensions.Contains(good1));
+
+ // Remove extensions from blacklist.
+ test_blacklist.SetBlacklistState(
+ good0, extensions::NOT_BLACKLISTED, true);
+ test_blacklist.SetBlacklistState(
+ good1, extensions::NOT_BLACKLISTED, true);
+ test_blacklist.SetBlacklistState(
+ good2, extensions::NOT_BLACKLISTED, true);
+ base::RunLoop().RunUntilIdle();
+
+ // good0 and good1 remain disabled.
+ EXPECT_FALSE(enabled_extensions.Contains(good0));
+ EXPECT_TRUE(disabled_extensions.Contains(good0));
+ EXPECT_FALSE(enabled_extensions.Contains(good1));
+ EXPECT_TRUE(disabled_extensions.Contains(good1));
+ EXPECT_TRUE(enabled_extensions.Contains(good2));
+ EXPECT_FALSE(disabled_extensions.Contains(good2));
+}
+#endif // defined(ENABLE_BLACKLIST_TESTS)
+
+#if defined(ENABLE_BLACKLIST_TESTS)
+// Blacklisted extension with unknown state are not enabled/disabled.
+TEST_F(ExtensionServiceTest, GreylistUnknownDontChange) {
+ extensions::TestBlacklist test_blacklist;
+ // A profile with 3 extensions installed: good0, good1, and good2.
+ InitializeGoodInstalledExtensionService();
+ test_blacklist.Attach(service_->blacklist_);
+ service_->Init();
+
+ ExtensionRegistry* registry = ExtensionRegistry::Get(profile_.get());
+ const extensions::ExtensionSet& enabled_extensions =
+ registry->enabled_extensions();
+ const extensions::ExtensionSet& disabled_extensions =
+ registry->disabled_extensions();
+
+ test_blacklist.SetBlacklistState(
+ good0, extensions::BLACKLISTED_CWS_POLICY_VIOLATION, true);
+ test_blacklist.SetBlacklistState(
+ good1, extensions::BLACKLISTED_POTENTIALLY_UNWANTED, true);
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_FALSE(enabled_extensions.Contains(good0));
+ EXPECT_TRUE(disabled_extensions.Contains(good0));
+ EXPECT_FALSE(enabled_extensions.Contains(good1));
+ EXPECT_TRUE(disabled_extensions.Contains(good1));
+ EXPECT_TRUE(enabled_extensions.Contains(good2));
+ EXPECT_FALSE(disabled_extensions.Contains(good2));
+
+ test_blacklist.SetBlacklistState(
+ good0, extensions::NOT_BLACKLISTED, true);
+ test_blacklist.SetBlacklistState(
+ good1, extensions::BLACKLISTED_UNKNOWN, true);
+ test_blacklist.SetBlacklistState(
+ good2, extensions::BLACKLISTED_UNKNOWN, true);
+ base::RunLoop().RunUntilIdle();
+
+ // good0 re-enabled, other remain as they were.
+ EXPECT_TRUE(enabled_extensions.Contains(good0));
+ EXPECT_FALSE(disabled_extensions.Contains(good0));
+ EXPECT_FALSE(enabled_extensions.Contains(good1));
+ EXPECT_TRUE(disabled_extensions.Contains(good1));
+ EXPECT_TRUE(enabled_extensions.Contains(good2));
+ EXPECT_FALSE(disabled_extensions.Contains(good2));
+}
+#endif // defined(ENABLE_BLACKLIST_TESTS)
+
// Will not install extension blacklisted by policy.
TEST_F(ExtensionServiceTest, BlacklistedByPolicyWillNotInstall) {
InitializeEmptyExtensionService();
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/browser/resources/extensions/extension_list.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698