Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / system_indicator / system_indicator_manager.h
index a7d7eda..719144e 100644 (file)
 #include "base/memory/linked_ptr.h"
 #include "base/scoped_observer.h"
 #include "base/threading/thread_checker.h"
+#include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
 #include "chrome/browser/extensions/extension_action_icon_factory.h"
 #include "components/keyed_service/core/keyed_service.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
 #include "extensions/browser/extension_registry_observer.h"
 
 class ExtensionAction;
@@ -30,8 +29,8 @@ class ExtensionRegistry;
 // Keeps track of all the systemIndicator icons created for a given Profile
 // that are currently visible in the UI.  Use SystemIndicatorManagerFactory to
 // create a SystemIndicatorManager object.
-class SystemIndicatorManager : public content::NotificationObserver,
-                               public ExtensionRegistryObserver,
+class SystemIndicatorManager : public ExtensionRegistryObserver,
+                               public ExtensionActionAPI::Observer,
                                public KeyedService {
  public:
   SystemIndicatorManager(Profile* profile, StatusTray* status_tray);
@@ -43,20 +42,17 @@ class SystemIndicatorManager : public content::NotificationObserver,
  private:
   FRIEND_TEST_ALL_PREFIXES(::SystemIndicatorApiTest, SystemIndicator);
 
-  // content::NotificationDelegate implementation.
-  virtual void Observe(int type,
-                       const content::NotificationSource& source,
-                       const content::NotificationDetails& details) OVERRIDE;
-
   // ExtensionRegistryObserver implementation.
   virtual void OnExtensionUnloaded(
       content::BrowserContext* browser_context,
       const Extension* extension,
       UnloadedExtensionInfo::Reason reason) OVERRIDE;
 
-  // Determines whether the indicator should be hidden or shown and calls the
-  // appropriate function.
-  void OnSystemIndicatorChanged(const ExtensionAction* extension_action);
+  // ExtensionActionAPI::Observer implementation.
+  virtual void OnExtensionActionUpdated(
+      ExtensionAction* extension_action,
+      content::WebContents* web_contents,
+      content::BrowserContext* browser_context) OVERRIDE;
 
   // Causes a call to OnStatusIconClicked for the specified extension_id.
   // Returns false if no ExtensionIndicatorIcon is found for the extension.
@@ -77,9 +73,11 @@ class SystemIndicatorManager : public content::NotificationObserver,
   Profile* profile_;
   StatusTray* status_tray_;
   SystemIndicatorMap system_indicators_;
-  content::NotificationRegistrar registrar_;
   base::ThreadChecker thread_checker_;
 
+  ScopedObserver<ExtensionActionAPI, ExtensionActionAPI::Observer>
+      extension_action_observer_;
+
   // Listen to extension unloaded notifications.
   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
       extension_registry_observer_;