Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1246)

Unified Diff: chrome/browser/extensions/extension_service.cc

Issue 5968009: Change extension unload notification to indicate updates.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_service.cc
===================================================================
--- chrome/browser/extensions/extension_service.cc (revision 69996)
+++ chrome/browser/extensions/extension_service.cc (working copy)
@@ -893,7 +893,7 @@
// Unload before doing more cleanup to ensure that nothing is hanging on to
// any of these resources.
- UnloadExtension(extension_id);
+ UnloadExtension(extension_id, UnloadedExtensionInfo::UNINSTALL);
extension_prefs_->OnExtensionUninstalled(extension_id_copy, location,
external_uninstall);
@@ -971,7 +971,7 @@
ExtensionDOMUI::UnregisterChromeURLOverrides(profile_,
extension->GetChromeURLOverrides());
- NotifyExtensionUnloaded(extension);
+ NotifyExtensionUnloaded(extension, UnloadedExtensionInfo::DISABLE);
UpdateActiveExtensionsInCrashReporter();
}
@@ -1238,11 +1238,13 @@
Details<const Extension>(extension));
}
-void ExtensionService::NotifyExtensionUnloaded(const Extension* extension) {
+void ExtensionService::NotifyExtensionUnloaded(
+ const Extension* extension, UnloadedExtensionInfo::Reason reason) {
+ UnloadedExtensionInfo details(extension, reason);
NotificationService::current()->Notify(
NotificationType::EXTENSION_UNLOADED,
Source<Profile>(profile_),
- Details<const Extension>(extension));
+ Details<UnloadedExtensionInfo>(&details));
if (profile_) {
profile_->UnregisterExtensionWithRequestContexts(extension);
@@ -1372,7 +1374,7 @@
// UnloadExtension will change the extensions_ list. So, we should
// call it outside the iterator loop.
for (unsigned int i = 0; i < to_be_removed.size(); ++i) {
- UnloadExtension(to_be_removed[i]);
+ UnloadExtension(to_be_removed[i], UnloadedExtensionInfo::DISABLE);
}
}
@@ -1399,7 +1401,7 @@
// UnloadExtension will change the extensions_ list. So, we should
// call it outside the iterator loop.
for (unsigned int i = 0; i < to_be_removed.size(); ++i)
- UnloadExtension(to_be_removed[i]);
+ UnloadExtension(to_be_removed[i], UnloadedExtensionInfo::DISABLE);
}
bool ExtensionService::IsIncognitoEnabled(const Extension* extension) {
@@ -1421,7 +1423,7 @@
bool is_enabled = std::find(extensions_.begin(), extensions_.end(),
extension) != extensions_.end();
if (is_enabled) {
- NotifyExtensionUnloaded(extension);
+ NotifyExtensionUnloaded(extension, UnloadedExtensionInfo::DISABLE);
NotifyExtensionLoaded(extension);
}
}
@@ -1480,7 +1482,9 @@
new RefCountedList(list_copy))));
}
-void ExtensionService::UnloadExtension(const std::string& extension_id) {
+void ExtensionService::UnloadExtension(
+ const std::string& extension_id,
+ UnloadedExtensionInfo::Reason reason) {
// Make sure the extension gets deleted after we return from this function.
scoped_refptr<const Extension> extension(
GetExtensionByIdInternal(extension_id, true, true));
@@ -1507,11 +1511,13 @@
disabled_extensions_.end(),
extension.get());
if (iter != disabled_extensions_.end()) {
+ UnloadedExtensionInfo details(extension, reason);
+ details.already_disabled = true;
disabled_extensions_.erase(iter);
NotificationService::current()->Notify(
- NotificationType::EXTENSION_UNLOADED_DISABLED,
+ NotificationType::EXTENSION_UNLOADED,
Source<Profile>(profile_),
- Details<const Extension>(extension.get()));
+ Details<UnloadedExtensionInfo>(&details));
return;
}
@@ -1520,7 +1526,7 @@
// Remove the extension from our list.
extensions_.erase(iter);
- NotifyExtensionUnloaded(extension.get());
+ NotifyExtensionUnloaded(extension.get(), reason);
UpdateActiveExtensionsInCrashReporter();
}
@@ -1706,7 +1712,7 @@
// To upgrade an extension in place, unload the old one and
// then load the new one.
- UnloadExtension(old->id());
+ UnloadExtension(old->id(), UnloadedExtensionInfo::UPDATE);
old = NULL;
}
@@ -1996,8 +2002,10 @@
// We do it in a PostTask so that other handlers of this notification will
// still have access to the Extension and ExtensionHost.
MessageLoop::current()->PostTask(FROM_HERE,
- NewRunnableMethod(this, &ExtensionService::UnloadExtension,
- host->extension()->id()));
+ NewRunnableMethod(this,
+ &ExtensionService::UnloadExtension,
+ host->extension()->id(),
+ UnloadedExtensionInfo::DISABLE));
break;
}

Powered by Google App Engine
This is Rietveld 408576698