summaryrefslogtreecommitdiffstats
path: root/chrome/browser/automation/automation_extension_tracker.cc
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-23 22:14:27 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-23 22:14:27 +0000
commita9f39a313b7ecc11d98727d869e15094481f3a65 (patch)
tree314811ad11e00470fe2bf0cbb00b0fb204d6019f /chrome/browser/automation/automation_extension_tracker.cc
parent2c6ed18ba01a4f0451517411bf1d98812078f19d (diff)
downloadchromium_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.cc18
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);
}
}
}