Index: chrome/browser/extensions/api/management/management_api.cc |
diff --git a/chrome/browser/extensions/api/management/management_api.cc b/chrome/browser/extensions/api/management/management_api.cc |
index 58c957ff0228a08760ad5b4fc72572a7e970b3ec..6c205d89d7235c7de9b235e94c9d9506d7c50686 100644 |
--- a/chrome/browser/extensions/api/management/management_api.cc |
+++ b/chrome/browser/extensions/api/management/management_api.cc |
@@ -39,8 +39,6 @@ |
#include "chrome/common/extensions/features/feature_channel.h" |
#include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
#include "chrome/common/extensions/manifest_url_handler.h" |
-#include "content/public/browser/notification_details.h" |
-#include "content/public/browser/notification_source.h" |
#include "content/public/browser/utility_process_host.h" |
#include "content/public/browser/utility_process_host_client.h" |
#include "extensions/browser/event_router.h" |
@@ -939,73 +937,73 @@ bool ManagementGenerateAppForLinkFunction::RunAsync() { |
return true; |
} |
-ManagementEventRouter::ManagementEventRouter(Profile* profile) |
- : profile_(profile) { |
- int types[] = {chrome::NOTIFICATION_EXTENSION_INSTALLED_DEPRECATED, |
- chrome::NOTIFICATION_EXTENSION_UNINSTALLED_DEPRECATED, |
- chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, |
- chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED}; |
- |
- CHECK(registrar_.IsEmpty()); |
- for (size_t i = 0; i < arraysize(types); i++) { |
- registrar_.Add(this, |
- types[i], |
- content::Source<Profile>(profile_)); |
- } |
+ManagementEventRouter::ManagementEventRouter(content::BrowserContext* context) |
+ : browser_context_(context), extension_registry_observer_(this) { |
+ extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context_)); |
} |
ManagementEventRouter::~ManagementEventRouter() {} |
-void ManagementEventRouter::Observe( |
- int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) { |
- const char* event_name = NULL; |
- const Extension* extension = NULL; |
- Profile* profile = content::Source<Profile>(source).ptr(); |
- CHECK(profile); |
- CHECK(profile_->IsSameProfile(profile)); |
- |
- switch (type) { |
- case chrome::NOTIFICATION_EXTENSION_INSTALLED_DEPRECATED: |
- event_name = management::OnInstalled::kEventName; |
- extension = |
- content::Details<const InstalledExtensionInfo>(details)->extension; |
- break; |
- case chrome::NOTIFICATION_EXTENSION_UNINSTALLED_DEPRECATED: |
- event_name = management::OnUninstalled::kEventName; |
- extension = content::Details<const Extension>(details).ptr(); |
- break; |
- case chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: |
- event_name = management::OnEnabled::kEventName; |
- extension = content::Details<const Extension>(details).ptr(); |
- break; |
- case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: |
- event_name = management::OnDisabled::kEventName; |
- extension = |
- content::Details<const UnloadedExtensionInfo>(details)->extension; |
- break; |
- default: |
- NOTREACHED(); |
- return; |
- } |
- DCHECK(event_name); |
- DCHECK(extension); |
+void ManagementEventRouter::OnExtensionLoaded( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension) { |
+ if (ui_util::ShouldNotBeVisible(extension, browser_context_)) |
Devlin
2014/06/17 16:28:31
Let's go ahead and move this stuff into one functi
limasdf
2014/06/17 18:25:48
Done. Except OnExtensionUninstalled. It has differ
|
+ return; // Don't dispatch events for built-in extensions. |
+ scoped_ptr<base::ListValue> args(new base::ListValue()); |
+ scoped_ptr<management::ExtensionInfo> info = |
+ CreateExtensionInfo(*extension, ExtensionSystem::Get(browser_context)); |
+ args->Append(info->ToValue().release()); |
- if (ui_util::ShouldNotBeVisible(extension, profile_)) |
- return; // Don't dispatch events for built-in extensions. |
+ scoped_ptr<Event> event( |
+ new Event(management::OnEnabled::kEventName, args.Pass())); |
+ EventRouter::Get(browser_context)->BroadcastEvent(event.Pass()); |
+} |
+void ManagementEventRouter::OnExtensionUnloaded( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension, |
+ UnloadedExtensionInfo::Reason reason) { |
+ if (ui_util::ShouldNotBeVisible(extension, browser_context_)) |
+ return; |
scoped_ptr<base::ListValue> args(new base::ListValue()); |
- if (event_name == management::OnUninstalled::kEventName) { |
- args->Append(new base::StringValue(extension->id())); |
- } else { |
- scoped_ptr<management::ExtensionInfo> info = CreateExtensionInfo( |
- *extension, ExtensionSystem::Get(profile)); |
- args->Append(info->ToValue().release()); |
- } |
+ scoped_ptr<management::ExtensionInfo> info = |
+ CreateExtensionInfo(*extension, ExtensionSystem::Get(browser_context)); |
+ args->Append(info->ToValue().release()); |
+ |
+ scoped_ptr<Event> event( |
+ new Event(management::OnDisabled::kEventName, args.Pass())); |
+ EventRouter::Get(browser_context)->BroadcastEvent(event.Pass()); |
+} |
+ |
+void ManagementEventRouter::OnExtensionWillBeInstalled( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension, |
+ bool is_update, |
+ bool from_ephemeral, |
+ const std::string& old_name) { |
+ if (ui_util::ShouldNotBeVisible(extension, browser_context_)) |
+ return; |
+ scoped_ptr<base::ListValue> args(new base::ListValue()); |
+ scoped_ptr<management::ExtensionInfo> info = |
+ CreateExtensionInfo(*extension, ExtensionSystem::Get(browser_context)); |
+ args->Append(info->ToValue().release()); |
+ |
+ scoped_ptr<Event> event( |
+ new Event(management::OnInstalled::kEventName, args.Pass())); |
+ EventRouter::Get(browser_context)->BroadcastEvent(event.Pass()); |
+} |
+ |
+void ManagementEventRouter::OnExtensionUninstalled( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension) { |
+ if (ui_util::ShouldNotBeVisible(extension, browser_context_)) |
+ return; |
+ scoped_ptr<base::ListValue> args(new base::ListValue()); |
+ args->Append(new base::StringValue(extension->id())); |
- scoped_ptr<Event> event(new Event(event_name, args.Pass())); |
- EventRouter::Get(profile)->BroadcastEvent(event.Pass()); |
+ scoped_ptr<Event> event( |
+ new Event(management::OnUninstalled::kEventName, args.Pass())); |
+ EventRouter::Get(browser_context)->BroadcastEvent(event.Pass()); |
} |
ManagementAPI::ManagementAPI(content::BrowserContext* context) |
@@ -1034,8 +1032,7 @@ ManagementAPI::GetFactoryInstance() { |
} |
void ManagementAPI::OnListenerAdded(const EventListenerInfo& details) { |
- management_event_router_.reset( |
- new ManagementEventRouter(Profile::FromBrowserContext(browser_context_))); |
+ management_event_router_.reset(new ManagementEventRouter(browser_context_)); |
EventRouter::Get(browser_context_)->UnregisterObserver(this); |
} |