Pass Reason as a parameter with OnExtensionUnloaded.
BUG=354046
Review URL: https://codereview.chromium.org/222903002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264837 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/active_tab_permission_granter.cc b/chrome/browser/extensions/active_tab_permission_granter.cc
index 87b3ce2..51ea1f2 100644
--- a/chrome/browser/extensions/active_tab_permission_granter.cc
+++ b/chrome/browser/extensions/active_tab_permission_granter.cc
@@ -94,7 +94,9 @@
}
void ActiveTabPermissionGranter::OnExtensionUnloaded(
- content::BrowserContext* browser_context, const Extension* extension) {
+ content::BrowserContext* browser_context,
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {
// Note: don't need to clear the permissions (nor tell the renderer about it)
// because it's being unloaded anyway.
granted_extensions_.Remove(extension->id());
diff --git a/chrome/browser/extensions/active_tab_permission_granter.h b/chrome/browser/extensions/active_tab_permission_granter.h
index 24bb4ad..be02bd08 100644
--- a/chrome/browser/extensions/active_tab_permission_granter.h
+++ b/chrome/browser/extensions/active_tab_permission_granter.h
@@ -50,7 +50,9 @@
// extensions::ExtensionRegistryObserver implementation.
virtual void OnExtensionUnloaded(content::BrowserContext* browser_context,
- const Extension* extension) OVERRIDE;
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason)
+ OVERRIDE;
// Clears any tab-specific permissions for all extensions on |tab_id_| and
// notifies renderers.
diff --git a/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc b/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc
index 3629f38f..6b11c14 100644
--- a/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc
+++ b/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.cc
@@ -208,7 +208,8 @@
void GalleryWatchStateTracker::OnExtensionUnloaded(
content::BrowserContext* browser_context,
- const Extension* extension) {
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
if (!ContainsKey(watched_extensions_map_, extension->id()))
return;
diff --git a/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.h b/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.h
index 985f63c..53e082b7 100644
--- a/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.h
+++ b/chrome/browser/extensions/api/media_galleries_private/gallery_watch_state_tracker.h
@@ -93,7 +93,9 @@
virtual void OnExtensionLoaded(content::BrowserContext* browser_context,
const Extension* extension) OVERRIDE;
virtual void OnExtensionUnloaded(content::BrowserContext* browser_context,
- const Extension* extension) OVERRIDE;
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason)
+ OVERRIDE;
// Syncs media gallery watch data for the given extension to/from the state
// storage.
diff --git a/chrome/browser/extensions/error_console/error_console.cc b/chrome/browser/extensions/error_console/error_console.cc
index c689ad4..bdfc201 100644
--- a/chrome/browser/extensions/error_console/error_console.cc
+++ b/chrome/browser/extensions/error_console/error_console.cc
@@ -226,7 +226,8 @@
}
void ErrorConsole::OnExtensionUnloaded(content::BrowserContext* browser_context,
- const Extension* extension) {
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {
CheckEnabled();
}
diff --git a/chrome/browser/extensions/error_console/error_console.h b/chrome/browser/extensions/error_console/error_console.h
index dacea855..3176ce9 100644
--- a/chrome/browser/extensions/error_console/error_console.h
+++ b/chrome/browser/extensions/error_console/error_console.h
@@ -131,7 +131,9 @@
// ExtensionRegistry implementation. If the Apps Developer Tools app is
// installed or uninstalled, we may need to turn the ErrorConsole on/off.
virtual void OnExtensionUnloaded(content::BrowserContext* browser_context,
- const Extension* extension) OVERRIDE;
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason)
+ OVERRIDE;
virtual void OnExtensionLoaded(content::BrowserContext* browser_context,
const Extension* extension) OVERRIDE;
diff --git a/chrome/browser/extensions/error_console/error_console_unittest.cc b/chrome/browser/extensions/error_console/error_console_unittest.cc
index 2b4e43d9..dcfa60b 100644
--- a/chrome/browser/extensions/error_console/error_console_unittest.cc
+++ b/chrome/browser/extensions/error_console/error_console_unittest.cc
@@ -118,7 +118,7 @@
// Unloading the Apps Developer Tools should disable error console.
registry->RemoveEnabled(adt->id());
- registry->TriggerOnUnloaded(adt);
+ registry->TriggerOnUnloaded(adt, UnloadedExtensionInfo::REASON_DISABLE);
EXPECT_FALSE(error_console_->enabled());
EXPECT_FALSE(error_console_->IsEnabledForChromeExtensionsPage());
EXPECT_FALSE(error_console_->IsEnabledForAppsDeveloperTools());
diff --git a/chrome/browser/extensions/extension_action_manager.cc b/chrome/browser/extensions/extension_action_manager.cc
index 781fd03..98e2466 100644
--- a/chrome/browser/extensions/extension_action_manager.cc
+++ b/chrome/browser/extensions/extension_action_manager.cc
@@ -82,7 +82,9 @@
}
void ExtensionActionManager::OnExtensionUnloaded(
- content::BrowserContext* browser_context, const Extension* extension) {
+ content::BrowserContext* browser_context,
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {
page_actions_.erase(extension->id());
browser_actions_.erase(extension->id());
system_indicators_.erase(extension->id());
diff --git a/chrome/browser/extensions/extension_action_manager.h b/chrome/browser/extensions/extension_action_manager.h
index d8f5b91..3315bdc9 100644
--- a/chrome/browser/extensions/extension_action_manager.h
+++ b/chrome/browser/extensions/extension_action_manager.h
@@ -45,7 +45,9 @@
private:
// Implement ExtensionRegistryObserver.
virtual void OnExtensionUnloaded(content::BrowserContext* browser_context,
- const Extension* extension) OVERRIDE;
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason)
+ OVERRIDE;
Profile* profile_;
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 5ab5f6f..9a05d90 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -1067,9 +1067,10 @@
void ExtensionService::NotifyExtensionUnloaded(
const Extension* extension,
UnloadedExtensionInfo::Reason reason) {
- registry_->TriggerOnUnloaded(extension);
-
UnloadedExtensionInfo details(extension, reason);
+
+ registry_->TriggerOnUnloaded(extension, reason);
+
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED,
content::Source<Profile>(profile_),
diff --git a/chrome/browser/extensions/extension_storage_monitor.cc b/chrome/browser/extensions/extension_storage_monitor.cc
index a5ddf478..ae42ee69 100644
--- a/chrome/browser/extensions/extension_storage_monitor.cc
+++ b/chrome/browser/extensions/extension_storage_monitor.cc
@@ -223,7 +223,8 @@
void ExtensionStorageMonitor::OnExtensionUnloaded(
content::BrowserContext* browser_context,
- const Extension* extension) {
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {
DCHECK(extension);
StopMonitoringStorage(extension->id());
}
diff --git a/chrome/browser/extensions/extension_storage_monitor.h b/chrome/browser/extensions/extension_storage_monitor.h
index 42cb8ed..245f6ed 100644
--- a/chrome/browser/extensions/extension_storage_monitor.h
+++ b/chrome/browser/extensions/extension_storage_monitor.h
@@ -54,7 +54,9 @@
virtual void OnExtensionLoaded(content::BrowserContext* browser_context,
const Extension* extension) OVERRIDE;
virtual void OnExtensionUnloaded(content::BrowserContext* browser_context,
- const Extension* extension) OVERRIDE;
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason)
+ OVERRIDE;
std::string GetNotificationId(const std::string& extension_id);
diff --git a/chrome/browser/extensions/extension_warning_service.cc b/chrome/browser/extensions/extension_warning_service.cc
index 17284e5..bfb99779 100644
--- a/chrome/browser/extensions/extension_warning_service.cc
+++ b/chrome/browser/extensions/extension_warning_service.cc
@@ -122,7 +122,9 @@
}
void ExtensionWarningService::OnExtensionUnloaded(
- content::BrowserContext* browser_context, const Extension* extension) {
+ content::BrowserContext* browser_context,
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {
// Unloading one extension might have solved the problems of others.
// Therefore, we clear warnings of this type for all extensions.
std::set<ExtensionWarning::WarningType> warning_types =
diff --git a/chrome/browser/extensions/extension_warning_service.h b/chrome/browser/extensions/extension_warning_service.h
index 99755ef..5a6ecf71 100644
--- a/chrome/browser/extensions/extension_warning_service.h
+++ b/chrome/browser/extensions/extension_warning_service.h
@@ -75,7 +75,9 @@
// ExtensionRegistryObserver implementation.
virtual void OnExtensionUnloaded(content::BrowserContext* browser_context,
- const Extension* extension) OVERRIDE;
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason)
+ OVERRIDE;
// Currently existing warnings.
ExtensionWarningSet warnings_;
diff --git a/chrome/browser/media_galleries/media_scan_manager.cc b/chrome/browser/media_galleries/media_scan_manager.cc
index e880b98..b631a68 100644
--- a/chrome/browser/media_galleries/media_scan_manager.cc
+++ b/chrome/browser/media_galleries/media_scan_manager.cc
@@ -428,7 +428,8 @@
void MediaScanManager::OnExtensionUnloaded(
content::BrowserContext* browser_context,
- const extensions::Extension* extension) {
+ const extensions::Extension* extension,
+ extensions::UnloadedExtensionInfo::Reason reason) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
CancelScan(Profile::FromBrowserContext(browser_context), extension);
}
diff --git a/chrome/browser/media_galleries/media_scan_manager.h b/chrome/browser/media_galleries/media_scan_manager.h
index 24417584..707bd0e 100644
--- a/chrome/browser/media_galleries/media_scan_manager.h
+++ b/chrome/browser/media_galleries/media_scan_manager.h
@@ -72,7 +72,8 @@
// extensions::ExtensionRegistryObserver implementation.
virtual void OnExtensionUnloaded(
content::BrowserContext* browser_context,
- const extensions::Extension* extension) OVERRIDE;
+ const extensions::Extension* extension,
+ extensions::UnloadedExtensionInfo::Reason reason) OVERRIDE;
bool ScanInProgress() const;
diff --git a/extensions/browser/extension_registry.cc b/extensions/browser/extension_registry.cc
index 9f6b71f09..ac6c274 100644
--- a/extensions/browser/extension_registry.cc
+++ b/extensions/browser/extension_registry.cc
@@ -44,11 +44,13 @@
OnExtensionLoaded(browser_context_, extension));
}
-void ExtensionRegistry::TriggerOnUnloaded(const Extension* extension) {
+void ExtensionRegistry::TriggerOnUnloaded(
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {
DCHECK(!enabled_extensions_.Contains(extension->id()));
FOR_EACH_OBSERVER(ExtensionRegistryObserver,
observers_,
- OnExtensionUnloaded(browser_context_, extension));
+ OnExtensionUnloaded(browser_context_, extension, reason));
}
const Extension* ExtensionRegistry::GetExtensionById(const std::string& id,
diff --git a/extensions/browser/extension_registry.h b/extensions/browser/extension_registry.h
index 26e30159..d8df24b36 100644
--- a/extensions/browser/extension_registry.h
+++ b/extensions/browser/extension_registry.h
@@ -71,7 +71,8 @@
// Invokes the observer method OnExtensionUnloaded(). The extension must not
// be enabled at the time of the call.
- void TriggerOnUnloaded(const Extension* extension);
+ void TriggerOnUnloaded(const Extension* extension,
+ UnloadedExtensionInfo::Reason reason);
// Find an extension by ID using |include_mask| to pick the sets to search:
// * enabled_extensions() --> ExtensionRegistry::ENABLED
diff --git a/extensions/browser/extension_registry_observer.h b/extensions/browser/extension_registry_observer.h
index 3b7114b..5880add 100644
--- a/extensions/browser/extension_registry_observer.h
+++ b/extensions/browser/extension_registry_observer.h
@@ -5,6 +5,8 @@
#ifndef EXTENSIONS_BROWSER_EXTENSION_REGISTRY_OBSERVER_H_
#define EXTENSIONS_BROWSER_EXTENSION_REGISTRY_OBSERVER_H_
+#include "extensions/common/extension.h"
+
namespace content {
class BrowserContext;
}
@@ -12,6 +14,7 @@
namespace extensions {
class Extension;
+struct UnloadedExtensionInfo;
// Observer for ExtensionRegistry. Exists in a separate header file to reduce
// the include file burden for typical clients of ExtensionRegistry.
@@ -27,9 +30,9 @@
// Called after an extension is unloaded. The extension no longer exists in
// any of the ExtensionRegistry sets (enabled, disabled, etc.).
- virtual void OnExtensionUnloaded(
- content::BrowserContext* browser_context,
- const Extension* extension) {}
+ virtual void OnExtensionUnloaded(content::BrowserContext* browser_context,
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {}
};
} // namespace extensions
diff --git a/extensions/browser/extension_registry_unittest.cc b/extensions/browser/extension_registry_unittest.cc
index 11ca3fc..f212f6c8 100644
--- a/extensions/browser/extension_registry_unittest.cc
+++ b/extensions/browser/extension_registry_unittest.cc
@@ -49,7 +49,9 @@
}
virtual void OnExtensionUnloaded(content::BrowserContext* browser_context,
- const Extension* extension) OVERRIDE {
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason)
+ OVERRIDE {
unloaded_.push_back(extension);
}
@@ -225,7 +227,7 @@
observer.Reset();
registry.RemoveEnabled(extension->id());
- registry.TriggerOnUnloaded(extension);
+ registry.TriggerOnUnloaded(extension, UnloadedExtensionInfo::REASON_DISABLE);
EXPECT_TRUE(observer.loaded().empty());
EXPECT_TRUE(HasSingleExtension(observer.unloaded(), extension.get()));
diff --git a/extensions/browser/runtime_data.cc b/extensions/browser/runtime_data.cc
index ea5568b..8f359bc 100644
--- a/extensions/browser/runtime_data.cc
+++ b/extensions/browser/runtime_data.cc
@@ -53,9 +53,9 @@
extension_flags_.clear();
}
-void RuntimeData::OnExtensionUnloaded(
- content::BrowserContext* browser_context,
- const Extension* extension) {
+void RuntimeData::OnExtensionUnloaded(content::BrowserContext* browser_context,
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason) {
extension_flags_.erase(extension->id());
}
diff --git a/extensions/browser/runtime_data.h b/extensions/browser/runtime_data.h
index 77f475b..0dd2cb3 100644
--- a/extensions/browser/runtime_data.h
+++ b/extensions/browser/runtime_data.h
@@ -53,7 +53,9 @@
// ExtensionRegistryObserver overrides. Public for testing.
virtual void OnExtensionUnloaded(content::BrowserContext* browser_context,
- const Extension* extension) OVERRIDE;
+ const Extension* extension,
+ UnloadedExtensionInfo::Reason reason)
+ OVERRIDE;
private:
// Bitmasks for runtime states.
diff --git a/extensions/browser/runtime_data_unittest.cc b/extensions/browser/runtime_data_unittest.cc
index 48c1bbc..f0cbf4e 100644
--- a/extensions/browser/runtime_data_unittest.cc
+++ b/extensions/browser/runtime_data_unittest.cc
@@ -100,7 +100,8 @@
runtime_data_.SetBackgroundPageReady(extension, true);
ASSERT_TRUE(runtime_data_.HasExtensionForTesting(extension));
- runtime_data_.OnExtensionUnloaded(NULL, extension);
+ runtime_data_.OnExtensionUnloaded(
+ NULL, extension, UnloadedExtensionInfo::REASON_DISABLE);
EXPECT_FALSE(runtime_data_.HasExtensionForTesting(extension));
}
diff --git a/extensions/common/extension.h b/extensions/common/extension.h
index c7b84581..3354fa6 100644
--- a/extensions/common/extension.h
+++ b/extensions/common/extension.h
@@ -511,6 +511,7 @@
};
struct UnloadedExtensionInfo {
+ // TODO(DHNishi): Move this enum to ExtensionRegistryObserver.
enum Reason {
REASON_DISABLE, // Extension is being disabled.
REASON_UPDATE, // Extension is being updated to a newer version.