diff options
Diffstat (limited to 'chrome/browser/extensions/extension_service_unittest.cc')
-rw-r--r-- | chrome/browser/extensions/extension_service_unittest.cc | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc index bbbff27..58933ef 100644 --- a/chrome/browser/extensions/extension_service_unittest.cc +++ b/chrome/browser/extensions/extension_service_unittest.cc @@ -165,6 +165,7 @@ using extensions::FeatureSwitch; using extensions::Manifest; using extensions::PermissionSet; using extensions::TestExtensionSystem; +using extensions::UnloadedExtensionInfo; using extensions::URLPatternSet; namespace keys = extensions::manifest_keys; @@ -666,10 +667,12 @@ class ExtensionServiceTest : public ExtensionServiceTestBase, public content::NotificationObserver { public: ExtensionServiceTest() - : installed_(NULL), + : unloaded_reason_(UnloadedExtensionInfo::REASON_UNDEFINED), + installed_(NULL), was_update_(false), override_external_install_prompt_( - FeatureSwitch::prompt_for_external_extensions(), false) { + FeatureSwitch::prompt_for_external_extensions(), + false) { registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, content::NotificationService::AllSources()); @@ -694,10 +697,11 @@ class ExtensionServiceTest } case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: { - const Extension* e = - content::Details<extensions::UnloadedExtensionInfo>( - details)->extension; + UnloadedExtensionInfo* unloaded_info = + content::Details<UnloadedExtensionInfo>(details).ptr(); + const Extension* e = unloaded_info->extension; unloaded_id_ = e->id(); + unloaded_reason_ = unloaded_info->reason; extensions::ExtensionList::iterator i = std::find(loaded_.begin(), loaded_.end(), e); // TODO(erikkay) fix so this can be an assert. Right now the tests @@ -1250,6 +1254,7 @@ class ExtensionServiceTest protected: extensions::ExtensionList loaded_; std::string unloaded_id_; + UnloadedExtensionInfo::Reason unloaded_reason_; const Extension* installed_; bool was_update_; std::string old_name_; @@ -4167,6 +4172,7 @@ TEST_F(ExtensionServiceTest, UninstallExtension) { EXPECT_EQ(1u, registry_->enabled_extensions().size()); UninstallExtension(good_crx, false); EXPECT_EQ(0u, registry_->enabled_extensions().size()); + EXPECT_EQ(UnloadedExtensionInfo::REASON_UNINSTALL, unloaded_reason_); } TEST_F(ExtensionServiceTest, UninstallTerminatedExtension) { @@ -4174,6 +4180,7 @@ TEST_F(ExtensionServiceTest, UninstallTerminatedExtension) { InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); TerminateExtension(good_crx); UninstallExtension(good_crx, false); + EXPECT_EQ(UnloadedExtensionInfo::REASON_TERMINATE, unloaded_reason_); } // Tests the uninstaller helper. @@ -4181,6 +4188,7 @@ TEST_F(ExtensionServiceTest, UninstallExtensionHelper) { InitializeEmptyExtensionService(); InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); UninstallExtension(good_crx, true); + EXPECT_EQ(UnloadedExtensionInfo::REASON_UNINSTALL, unloaded_reason_); } TEST_F(ExtensionServiceTest, UninstallExtensionHelperTerminated) { @@ -4188,6 +4196,7 @@ TEST_F(ExtensionServiceTest, UninstallExtensionHelperTerminated) { InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); TerminateExtension(good_crx); UninstallExtension(good_crx, true); + EXPECT_EQ(UnloadedExtensionInfo::REASON_TERMINATE, unloaded_reason_); } // An extension disabled because of unsupported requirements should re-enabled @@ -6917,3 +6926,24 @@ TEST_F(ExtensionServiceTest, ReconcileKnownDisabledWithSideEnable) { EXPECT_EQ(expected_disabled_extensions, registry_->disabled_extensions().GetIDs()); } + +// Tests a profile being destroyed correctly disables extensions. +TEST_F(ExtensionServiceTest, DestroyingProfileClearsExtensions) { + InitializeEmptyExtensionService(); + + InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); + EXPECT_NE(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); + EXPECT_EQ(1u, registry_->enabled_extensions().size()); + EXPECT_EQ(0u, registry_->disabled_extensions().size()); + EXPECT_EQ(0u, registry_->terminated_extensions().size()); + EXPECT_EQ(0u, registry_->blacklisted_extensions().size()); + + service_->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, + content::Source<Profile>(profile_.get()), + content::NotificationService::NoDetails()); + EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); + EXPECT_EQ(0u, registry_->enabled_extensions().size()); + EXPECT_EQ(0u, registry_->disabled_extensions().size()); + EXPECT_EQ(0u, registry_->terminated_extensions().size()); + EXPECT_EQ(0u, registry_->blacklisted_extensions().size()); +} |