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 f1cb439b049ad8e91bb62a99fb9843b1be840596..43baccea70957ca4cbdf16287ef4bc42c4812bf5 100644 |
--- a/chrome/browser/extensions/extension_service_unittest.cc |
+++ b/chrome/browser/extensions/extension_service_unittest.cc |
@@ -6924,3 +6924,25 @@ TEST_F(ExtensionServiceTest, DestroyingProfileClearsExtensions) { |
EXPECT_EQ(0u, registry()->terminated_extensions().size()); |
EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); |
} |
+ |
+// Test that updating a corrupt extension removes the DISABLE_CORRUPTED disable |
+// reason. |
+TEST_F(ExtensionServiceTest, CorruptExtensionUpdate) { |
+ InitializeEmptyExtensionService(); |
+ |
+ base::FilePath v1_path = data_dir().AppendASCII("good.crx"); |
+ const Extension* v1 = InstallCRX(v1_path, INSTALL_NEW); |
+ std::string id = v1->id(); |
+ |
+ service()->DisableExtension(id, Extension::DISABLE_CORRUPTED); |
+ |
+ ExtensionPrefs* prefs = ExtensionPrefs::Get(profile()); |
+ EXPECT_TRUE(registry()->disabled_extensions().Contains(id)); |
+ EXPECT_TRUE(prefs->HasDisableReason(id, Extension::DISABLE_CORRUPTED)); |
+ |
+ base::FilePath v2_path = data_dir().AppendASCII("good2.crx"); |
+ UpdateExtension(id, v2_path, ENABLED); |
+ |
+ EXPECT_FALSE(registry()->disabled_extensions().Contains(id)); |
+ EXPECT_FALSE(prefs->HasDisableReason(id, Extension::DISABLE_CORRUPTED)); |
+} |