summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_service_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/extension_service_unittest.cc')
-rw-r--r--chrome/browser/extensions/extension_service_unittest.cc37
1 files changed, 37 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index ad6816a..57d0638 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -3600,6 +3600,43 @@ TEST_F(ExtensionServiceTest, ReloadExtensions) {
EXPECT_EQ(0u, service_->disabled_extensions()->size());
}
+// Tests reloading an extension.
+TEST_F(ExtensionServiceTest, ReloadExtension) {
+ InitializeEmptyExtensionService();
+ InitializeExtensionProcessManager();
+
+ // Simple extension that should install without error.
+ const char* extension_id = "behllobkkfkfnphdnhnkndlbkcpglgmj";
+ base::FilePath ext = data_dir_
+ .AppendASCII("good")
+ .AppendASCII("Extensions")
+ .AppendASCII(extension_id)
+ .AppendASCII("1.0.0.0");
+ extensions::UnpackedInstaller::Create(service_)->Load(ext);
+ loop_.RunUntilIdle();
+
+ EXPECT_EQ(1u, service_->extensions()->size());
+ EXPECT_EQ(0u, service_->disabled_extensions()->size());
+
+ service_->ReloadExtension(extension_id);
+
+ // Extension should be disabled now, waiting to be reloaded.
+ EXPECT_EQ(0u, service_->extensions()->size());
+ EXPECT_EQ(1u, service_->disabled_extensions()->size());
+ EXPECT_EQ(Extension::DISABLE_RELOAD,
+ service_->extension_prefs()->GetDisableReasons(extension_id));
+
+ // Reloading again should not crash.
+ service_->ReloadExtension(extension_id);
+
+ // Finish reloading
+ loop_.RunUntilIdle();
+
+ // Extension should be enabled again.
+ EXPECT_EQ(1u, service_->extensions()->size());
+ EXPECT_EQ(0u, service_->disabled_extensions()->size());
+}
+
TEST_F(ExtensionServiceTest, UninstallExtension) {
InitializeEmptyExtensionService();
InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW);