Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / options / managed_user_import_handler.h
index dafb416..55dbd9c 100644 (file)
@@ -5,7 +5,9 @@
 #ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_MANAGED_USER_IMPORT_HANDLER_H_
 #define CHROME_BROWSER_UI_WEBUI_OPTIONS_MANAGED_USER_IMPORT_HANDLER_H_
 
+#include "base/callback_list.h"
 #include "base/memory/weak_ptr.h"
+#include "chrome/browser/managed_mode/managed_user_sync_service_observer.h"
 #include "chrome/browser/ui/webui/options/options_ui.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
@@ -18,8 +20,13 @@ class ListValue;
 namespace options {
 
 // Handler for the 'import existing managed user' dialog.
-class ManagedUserImportHandler : public OptionsPageUIHandler {
+class ManagedUserImportHandler : public OptionsPageUIHandler,
+                                 public content::NotificationObserver,
+                                 public ManagedUserSyncServiceObserver {
  public:
+  typedef base::CallbackList<void(const std::string&, const std::string&)>
+      CallbackList;
+
   ManagedUserImportHandler();
   virtual ~ManagedUserImportHandler();
 
@@ -35,7 +42,18 @@ class ManagedUserImportHandler : public OptionsPageUIHandler {
   virtual void Observe(int type,
                        const content::NotificationSource& source,
                        const content::NotificationDetails& details) OVERRIDE;
+
+  // ManagedUserSyncServiceObserver implementation.
+  virtual void OnManagedUserAcknowledged(const std::string& managed_user_id)
+      OVERRIDE {}
+  virtual void OnManagedUsersSyncingStopped() OVERRIDE {}
+  virtual void OnManagedUsersChanged() OVERRIDE;
+
  private:
+  // Clears the cached list of managed users and fetches the new list of managed
+  // users.
+  void FetchManagedUsers();
+
   // Callback for the "requestManagedUserImportUpdate" message.
   // Checks the sign-in status of the custodian and accordingly
   // sends an update to the WebUI. The update can be to show/hide
@@ -61,6 +79,13 @@ class ManagedUserImportHandler : public OptionsPageUIHandler {
   bool IsAccountConnected() const;
   bool HasAuthError() const;
 
+  // Called when a managed user shared setting is changed. If the avatar was
+  // changed, FetchManagedUsers() is called.
+  void OnSharedSettingChanged(const std::string& managed_user_id,
+                              const std::string& key);
+
+  scoped_ptr<CallbackList::Subscription> subscription_;
+
   base::WeakPtrFactory<ManagedUserImportHandler> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(ManagedUserImportHandler);