1 // Copyright (c) 2012 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_CHROMEOS_LOGIN_LOCALLY_MANAGED_USER_CREATION_SCREEN_HANDLER_H_ 6 #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_LOCALLY_MANAGED_USER_CREATION_SCREEN_HANDLER_H_ 7 8 #include <string> 9 10 #include "base/compiler_specific.h" 11 #include "base/strings/string16.h" 12 #include "chrome/browser/chromeos/login/default_user_images.h" 13 #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h" 14 #include "content/public/browser/web_ui.h" 15 16 namespace base { 17 class DictionaryValue; 18 } 19 20 namespace chromeos { 21 22 class LocallyManagedUserCreationScreenHandler : public BaseScreenHandler { 23 public: 24 class Delegate { 25 public: 26 virtual ~Delegate() {} 27 28 // Called when screen is exited. 29 virtual void OnExit() = 0; 30 31 // This method is called, when actor is being destroyed. Note, if Delegate 32 // is destroyed earlier then it has to call SetDelegate(NULL). 33 virtual void OnActorDestroyed( 34 LocallyManagedUserCreationScreenHandler* actor) = 0; 35 36 // Starts managed user creation flow, with manager identified by 37 // |manager_id| and |manager_password|. 38 virtual void AuthenticateManager(const std::string& manager_id, 39 const std::string& manager_password) = 0; 40 41 // Starts managed user creation flow, with manager identified by 42 // |manager_id| and |manager_password|, and locally managed user that would 43 // have |display_name| and authenticated by the |managed_user_password|. 44 virtual void CreateManagedUser( 45 const string16& display_name, 46 const std::string& managed_user_password) = 0; 47 48 virtual void AbortFlow() = 0; 49 virtual void FinishFlow() = 0; 50 51 virtual void CheckCameraPresence() = 0; 52 virtual void OnPhotoTaken(const std::string& raw_data) = 0; 53 virtual void OnImageSelected(const std::string& image_url, 54 const std::string& image_type) = 0; 55 virtual void OnImageAccepted() = 0; 56 }; 57 58 LocallyManagedUserCreationScreenHandler(); 59 virtual ~LocallyManagedUserCreationScreenHandler(); 60 61 virtual void PrepareToShow(); 62 virtual void Show(); 63 virtual void Hide(); 64 virtual void SetDelegate(Delegate* delegate); 65 66 void ShowManagerPasswordError(); 67 68 void ShowIntroPage(); 69 void ShowManagerSelectionPage(); 70 void ShowUsernamePage(); 71 72 // Shows progress or error message close in the button area. |is_progress| is 73 // true for progress messages and false for error messages. 74 void ShowStatusMessage(bool is_progress, const string16& message); 75 void ShowTutorialPage(); 76 77 void ShowErrorPage(const string16& title, 78 const string16& message, 79 const string16& button_text); 80 81 void SetCameraPresent(bool enabled); 82 83 // BaseScreenHandler implementation: 84 virtual void DeclareLocalizedValues(LocalizedValuesBuilder* builder) OVERRIDE; 85 virtual void Initialize() OVERRIDE; 86 87 // WebUIMessageHandler implementation: 88 virtual void RegisterMessages() OVERRIDE; 89 90 private: 91 // WebUI message handlers. 92 void HandleCheckLocallyManagedUserName(const string16& name); 93 94 void HandleManagerSelected(const std::string& manager_id); 95 96 void HandleFinishLocalManagedUserCreation(); 97 void HandleAbortLocalManagedUserCreation(); 98 void HandleRetryLocalManagedUserCreation(const base::ListValue* args); 99 100 void HandleAuthenticateManager(const std::string& raw_manager_username, 101 const std::string& manager_password); 102 void HandleCreateManagedUser(const string16& new_raw_user_name, 103 const std::string& new_user_password); 104 105 void HandleGetImages(); 106 void HandlePhotoTaken(const std::string& image_url); 107 void HandleCheckCameraPresence(); 108 void HandleSelectImage(const std::string& image_url, 109 const std::string& image_type); 110 111 void UpdateText(const std::string& element_id, const string16& text); 112 113 Delegate* delegate_; 114 115 DISALLOW_COPY_AND_ASSIGN(LocallyManagedUserCreationScreenHandler); 116 }; 117 118 } // namespace chromeos 119 120 #endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_LOCALLY_MANAGED_USER_CREATION_SCREEN_HANDLER_H_ 121