Index: chrome/browser/extensions/api/omnibox/omnibox_api.h |
diff --git a/chrome/browser/extensions/api/omnibox/omnibox_api.h b/chrome/browser/extensions/api/omnibox/omnibox_api.h |
index 2949990c00d1f06d298ae297e96a55ad393ac81b..5508ae2434854d63bfb17174972d2c322e6dd632 100644 |
--- a/chrome/browser/extensions/api/omnibox/omnibox_api.h |
+++ b/chrome/browser/extensions/api/omnibox/omnibox_api.h |
@@ -10,6 +10,7 @@ |
#include <vector> |
#include "base/memory/scoped_ptr.h" |
+#include "base/scoped_observer.h" |
#include "base/strings/string16.h" |
#include "chrome/browser/autocomplete/autocomplete_match.h" |
#include "chrome/browser/extensions/chrome_extension_function.h" |
@@ -19,6 +20,7 @@ |
#include "content/public/browser/notification_observer.h" |
#include "content/public/browser/notification_registrar.h" |
#include "extensions/browser/browser_context_keyed_api_factory.h" |
+#include "extensions/browser/extension_registry_observer.h" |
#include "ui/base/window_open_disposition.h" |
class Profile; |
@@ -39,6 +41,7 @@ class Image; |
} |
namespace extensions { |
+class ExtensionRegistry; |
// Event router class for events related to the omnibox API. |
class ExtensionOmniboxEventRouter { |
@@ -84,7 +87,7 @@ class OmniboxSendSuggestionsFunction : public ChromeSyncExtensionFunction { |
}; |
class OmniboxAPI : public BrowserContextKeyedAPI, |
- public content::NotificationObserver { |
+ public ExtensionRegistryObserver { |
public: |
explicit OmniboxAPI(content::BrowserContext* context); |
virtual ~OmniboxAPI(); |
@@ -95,11 +98,6 @@ class OmniboxAPI : public BrowserContextKeyedAPI, |
// Convenience method to get the OmniboxAPI for a profile. |
static OmniboxAPI* Get(content::BrowserContext* context); |
- // content::NotificationObserver implementation. |
- virtual void Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) OVERRIDE; |
- |
// KeyedService implementation. |
virtual void Shutdown() OVERRIDE; |
@@ -117,6 +115,14 @@ class OmniboxAPI : public BrowserContextKeyedAPI, |
void OnTemplateURLsLoaded(); |
+ // ExtensionRegistryObserver implementation. |
+ virtual void OnExtensionLoaded(content::BrowserContext* browser_context, |
+ const Extension* extension) OVERRIDE; |
+ virtual void OnExtensionUnloaded( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension, |
+ UnloadedExtensionInfo::Reason reason) OVERRIDE; |
+ |
// BrowserContextKeyedAPI implementation. |
static const char* service_name() { |
return "OmniboxAPI"; |
@@ -131,7 +137,9 @@ class OmniboxAPI : public BrowserContextKeyedAPI, |
// have keywords registered. |
PendingExtensions pending_extensions_; |
- content::NotificationRegistrar registrar_; |
+ // Listen to extension load, unloaded notifications. |
+ ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> |
+ scoped_extension_registry_observer_; |
// Keeps track of favicon-sized omnibox icons for extensions. |
ExtensionIconManager omnibox_icon_manager_; |