supervised_user_import_handler.h revision 116680a4aac90f2aa7413d9095a592090648e557
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_SUPERVISED_USER_IMPORT_HANDLER_H_ 6#define CHROME_BROWSER_UI_WEBUI_OPTIONS_SUPERVISED_USER_IMPORT_HANDLER_H_ 7 8#include "base/callback_list.h" 9#include "base/memory/weak_ptr.h" 10#include "base/scoped_observer.h" 11#include "chrome/browser/supervised_user/supervised_user_sync_service_observer.h" 12#include "chrome/browser/ui/webui/options/options_ui.h" 13#include "components/signin/core/browser/signin_error_controller.h" 14 15namespace base { 16class DictionaryValue; 17class ListValue; 18} 19 20namespace options { 21 22// Handler for the 'import existing supervised user' dialog. 23class SupervisedUserImportHandler : public OptionsPageUIHandler, 24 public SupervisedUserSyncServiceObserver, 25 public SigninErrorController::Observer { 26 public: 27 typedef base::CallbackList<void(const std::string&, const std::string&)> 28 CallbackList; 29 30 SupervisedUserImportHandler(); 31 virtual ~SupervisedUserImportHandler(); 32 33 // OptionsPageUIHandler implementation. 34 virtual void GetLocalizedValues( 35 base::DictionaryValue* localized_strings) OVERRIDE; 36 virtual void InitializeHandler() OVERRIDE; 37 38 // WebUIMessageHandler implementation. 39 virtual void RegisterMessages() OVERRIDE; 40 41 // SupervisedUserSyncServiceObserver implementation. 42 virtual void OnSupervisedUserAcknowledged( 43 const std::string& supervised_user_id) OVERRIDE {} 44 virtual void OnSupervisedUsersSyncingStopped() OVERRIDE {} 45 virtual void OnSupervisedUsersChanged() OVERRIDE; 46 47 // SigninErrorController::Observer implementation. 48 virtual void OnErrorChanged() OVERRIDE; 49 50 private: 51 // Clears the cached list of supervised users and fetches the new list of 52 // supervised users. 53 void FetchSupervisedUsers(); 54 55 // Callback for the "requestManagedUserImportUpdate" message. 56 // Checks the sign-in status of the custodian and accordingly 57 // sends an update to the WebUI. The update can be to show/hide 58 // an error bubble and update/clear the supervised user list. 59 void RequestSupervisedUserImportUpdate(const base::ListValue* args); 60 61 // Sends an array of supervised users to WebUI. Each entry is of the form: 62 // supervisedProfile = { 63 // id: "Supervised User ID", 64 // name: "Supervised User Name", 65 // iconURL: "chrome://path/to/icon/image", 66 // onCurrentDevice: true or false, 67 // needAvatar: true or false 68 // } 69 // The array holds all existing supervised users attached to the 70 // custodian's profile which initiated the request. 71 void SendExistingSupervisedUsers(const base::DictionaryValue* dict); 72 73 // Sends messages to the JS side to clear supervised users and show an error 74 // bubble. 75 void ClearSupervisedUsersAndShowError(); 76 77 bool IsAccountConnected() const; 78 bool HasAuthError() const; 79 80 // Called when a supervised user shared setting is changed. If the avatar was 81 // changed, FetchSupervisedUsers() is called. 82 void OnSharedSettingChanged(const std::string& supervised_user_id, 83 const std::string& key); 84 85 scoped_ptr<CallbackList::Subscription> subscription_; 86 87 ScopedObserver<SigninErrorController, SupervisedUserImportHandler> observer_; 88 89 base::WeakPtrFactory<SupervisedUserImportHandler> weak_ptr_factory_; 90 91 DISALLOW_COPY_AND_ASSIGN(SupervisedUserImportHandler); 92}; 93 94} // namespace options 95 96#endif // CHROME_BROWSER_UI_WEBUI_OPTIONS_SUPERVISED_USER_IMPORT_HANDLER_H_ 97