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.
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_
10 #include "base/compiler_specific.h"
11 #include "base/strings/string16.h"
12 #include "chrome/browser/chromeos/camera_presence_notifier.h"
13 #include "chrome/browser/chromeos/login/default_user_images.h"
14 #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
15 #include "content/public/browser/web_ui.h"
23 class LocallyManagedUserCreationScreenHandler : public BaseScreenHandler {
25 class Delegate : public CameraPresenceNotifier::Observer {
27 virtual ~Delegate() {}
29 // CameraPresenceNotifier::Observer implementation:
30 virtual void OnCameraPresenceCheckDone(bool is_camera_present) = 0;
32 // This method is called, when actor is being destroyed. Note, if Delegate
33 // is destroyed earlier then it has to call SetDelegate(NULL).
34 virtual void OnActorDestroyed(
35 LocallyManagedUserCreationScreenHandler* actor) = 0;
37 // Starts managed user creation flow, with manager identified by
38 // |manager_id| and |manager_password|.
39 virtual void AuthenticateManager(const std::string& manager_id,
40 const std::string& manager_password) = 0;
42 // Starts managed user creation flow, with supervised user that would have
43 // |display_name| and authenticated by the |managed_user_password|.
44 virtual void CreateManagedUser(
45 const base::string16& display_name,
46 const std::string& managed_user_password) = 0;
48 // Look up if user with name |display_name| already exist and can be
49 // imported. Returns user ID in |out_id|. Returns true if user was found,
51 virtual bool FindUserByDisplayName(const base::string16& display_name,
52 std::string *out_id) const = 0;
54 // Starts managed user import flow for user identified with |user_id|.
55 virtual void ImportManagedUser(const std::string& user_id) = 0;
56 // Starts managed user import flow for user identified with |user_id| and
57 // additional |password|.
58 virtual void ImportManagedUserWithPassword(const std::string& user_id,
59 const std::string& password) = 0;
61 virtual void AbortFlow() = 0;
62 virtual void FinishFlow() = 0;
64 virtual void OnPhotoTaken(const std::string& raw_data) = 0;
65 virtual void OnImageSelected(const std::string& image_url,
66 const std::string& image_type) = 0;
67 virtual void OnImageAccepted() = 0;
68 virtual void OnPageSelected(const std::string& page) = 0;
71 LocallyManagedUserCreationScreenHandler();
72 virtual ~LocallyManagedUserCreationScreenHandler();
74 virtual void PrepareToShow();
77 virtual void SetDelegate(Delegate* delegate);
79 void ShowManagerPasswordError();
82 void ShowManagerSelectionPage();
83 void ShowUsernamePage();
85 // Shows progress or error message close in the button area. |is_progress| is
86 // true for progress messages and false for error messages.
87 void ShowStatusMessage(bool is_progress, const base::string16& message);
88 void ShowTutorialPage();
90 void ShowErrorPage(const base::string16& title,
91 const base::string16& message,
92 const base::string16& button_text);
94 // Navigates to specified page.
95 void ShowPage(const std::string& page);
97 void SetCameraPresent(bool enabled);
99 void ShowExistingManagedUsers(const base::ListValue* users);
101 // BaseScreenHandler implementation:
102 virtual void DeclareLocalizedValues(LocalizedValuesBuilder* builder) OVERRIDE;
103 virtual void Initialize() OVERRIDE;
105 // WebUIMessageHandler implementation:
106 virtual void RegisterMessages() OVERRIDE;
109 // WebUI message handlers.
110 void HandleCheckLocallyManagedUserName(const base::string16& name);
112 void HandleManagerSelected(const std::string& manager_id);
113 void HandleImportUserSelected(const std::string& user_id);
115 void HandleFinishLocalManagedUserCreation();
116 void HandleAbortLocalManagedUserCreation();
117 void HandleRetryLocalManagedUserCreation(const base::ListValue* args);
118 void HandleCurrentSupervisedUserPage(const std::string& current_page);
120 void HandleAuthenticateManager(const std::string& raw_manager_username,
121 const std::string& manager_password);
122 void HandleCreateManagedUser(const base::string16& new_raw_user_name,
123 const std::string& new_user_password);
124 void HandleImportSupervisedUser(const std::string& user_id);
125 void HandleImportSupervisedUserWithPassword(const std::string& user_id,
126 const std::string& password);
128 void HandleGetImages();
129 void HandlePhotoTaken(const std::string& image_url);
130 void HandleTakePhoto();
131 void HandleDiscardPhoto();
132 void HandleSelectImage(const std::string& image_url,
133 const std::string& image_type);
135 void UpdateText(const std::string& element_id, const base::string16& text);
139 DISALLOW_COPY_AND_ASSIGN(LocallyManagedUserCreationScreenHandler);
142 } // namespace chromeos
144 #endif // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_LOCALLY_MANAGED_USER_CREATION_SCREEN_HANDLER_H_