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 a5ed2ba5673364700b8df66e07658ec214909fe8..0fef7adcb47fdec325c3b54f9b9f20c68706c630 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_; |
@@ -4197,6 +4202,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) { |
@@ -4204,6 +4210,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. |
@@ -4211,6 +4218,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) { |
@@ -4218,6 +4226,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 |
@@ -6953,3 +6962,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()); |
+} |