diff options
author | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-23 22:14:27 +0000 |
---|---|---|
committer | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-23 22:14:27 +0000 |
commit | a9f39a313b7ecc11d98727d869e15094481f3a65 (patch) | |
tree | 314811ad11e00470fe2bf0cbb00b0fb204d6019f /chrome/browser/automation/automation_extension_tracker.cc | |
parent | 2c6ed18ba01a4f0451517411bf1d98812078f19d (diff) | |
download | chromium_src-a9f39a313b7ecc11d98727d869e15094481f3a65.zip chromium_src-a9f39a313b7ecc11d98727d869e15094481f3a65.tar.gz chromium_src-a9f39a313b7ecc11d98727d869e15094481f3a65.tar.bz2 |
Change extension unload notification to indicate updates.
When an extension in being unloaded, some listeners want to know if it's
because the extension is being updated to a newer version, or disabled. This
changes the details sent to include a reason.
Also this removes the EXTENSION_UNLOADED_DISABLED notification, since only a
small number of places actually cared about the disctinction between
EXTENSION_UNLOADED and EXTENSION_UNLOADED_DISABLED, and puts that information
into the details as well.
BUG=65510
TEST=Should be covered by existing unit & browser tests.
Review URL: http://codereview.chromium.org/5968009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70104 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/automation/automation_extension_tracker.cc')
-rw-r--r-- | chrome/browser/automation/automation_extension_tracker.cc | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/chrome/browser/automation/automation_extension_tracker.cc b/chrome/browser/automation/automation_extension_tracker.cc index 18a480d..88ed0e9 100644 --- a/chrome/browser/automation/automation_extension_tracker.cc +++ b/chrome/browser/automation/automation_extension_tracker.cc @@ -13,8 +13,6 @@ AutomationExtensionTracker::AutomationExtensionTracker( : AutomationResourceTracker<const Extension*>(automation) { registrar_.Add(this, NotificationType::EXTENSION_UNLOADED, NotificationService::AllSources()); - registrar_.Add(this, NotificationType::EXTENSION_UNLOADED_DISABLED, - NotificationService::AllSources()); } AutomationExtensionTracker::~AutomationExtensionTracker() { @@ -27,20 +25,18 @@ void AutomationExtensionTracker::RemoveObserver(const Extension* resource) {} void AutomationExtensionTracker::Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details) { - if (type != NotificationType::EXTENSION_UNLOADED && - type != NotificationType::EXTENSION_UNLOADED_DISABLED) + if (type != NotificationType::EXTENSION_UNLOADED) { + NOTREACHED(); return; - - const Extension* extension = Details<const Extension>(details).ptr(); + } + UnloadedExtensionInfo* info = Details<UnloadedExtensionInfo>(details).ptr(); + const Extension* extension = info->extension; Profile* profile = Source<Profile>(source).ptr(); if (profile) { ExtensionService* service = profile->GetExtensionService(); - if (service) { + if (service && info->reason == UnloadedExtensionInfo::UNINSTALL) { // Remove this extension only if it is uninstalled, not just disabled. - // If it is being uninstalled, the extension will not be in the regular - // or disabled list. - if (!service->GetExtensionById(extension->id(), true)) - CloseResource(extension); + CloseResource(extension); } } } |