diff options
author | mek@chromium.org <mek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-06 04:58:05 +0000 |
---|---|---|
committer | mek@chromium.org <mek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-06 04:58:05 +0000 |
commit | 2a94720ff7860b9b1eee9c50885f5f4b3c577c63 (patch) | |
tree | a4b37abf57dd59efa6adb585de2294706a7620c0 /chrome/browser/extensions/extension_service_unittest.cc | |
parent | 98adfa35e969586a0b2c869c662d4b7ad3a3a146 (diff) | |
download | chromium_src-2a94720ff7860b9b1eee9c50885f5f4b3c577c63.zip chromium_src-2a94720ff7860b9b1eee9c50885f5f4b3c577c63.tar.gz chromium_src-2a94720ff7860b9b1eee9c50885f5f4b3c577c63.tar.bz2 |
Add unit test to ensure calling ReloadExtension twice in a row works, and fix the code to make this test pass.
BUG=179599
Review URL: https://chromiumcodereview.appspot.com/12497007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@186369 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_service_unittest.cc')
-rw-r--r-- | chrome/browser/extensions/extension_service_unittest.cc | 37 |
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); |