4a35394a00ba8a6e42353c42f776ba888fb46786
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / chromeos / login / locally_managed_user_creation_screen_handler.h
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/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"
16
17 namespace base {
18 class ListValue;
19 }
20
21 namespace chromeos {
22
23 class LocallyManagedUserCreationScreenHandler : public BaseScreenHandler {
24  public:
25   class Delegate : public CameraPresenceNotifier::Observer {
26    public:
27     virtual ~Delegate() {}
28
29     // CameraPresenceNotifier::Observer implementation:
30     virtual void OnCameraPresenceCheckDone(bool is_camera_present) = 0;
31
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;
36
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;
41
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;
47
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,
50     // false otherwise.
51     virtual bool FindUserByDisplayName(const base::string16& display_name,
52                                        std::string *out_id) const = 0;
53
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;
60
61     virtual void AbortFlow() = 0;
62     virtual void FinishFlow() = 0;
63
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;
69   };
70
71   LocallyManagedUserCreationScreenHandler();
72   virtual ~LocallyManagedUserCreationScreenHandler();
73
74   virtual void PrepareToShow();
75   virtual void Show();
76   virtual void Hide();
77   virtual void SetDelegate(Delegate* delegate);
78
79   void ShowManagerPasswordError();
80
81   void ShowIntroPage();
82   void ShowManagerSelectionPage();
83   void ShowUsernamePage();
84
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();
89
90   void ShowErrorPage(const base::string16& title,
91                      const base::string16& message,
92                      const base::string16& button_text);
93
94   // Navigates to specified page.
95   void ShowPage(const std::string& page);
96
97   void SetCameraPresent(bool enabled);
98
99   void ShowExistingManagedUsers(const base::ListValue* users);
100
101   // BaseScreenHandler implementation:
102   virtual void DeclareLocalizedValues(LocalizedValuesBuilder* builder) OVERRIDE;
103   virtual void Initialize() OVERRIDE;
104
105   // WebUIMessageHandler implementation:
106   virtual void RegisterMessages() OVERRIDE;
107
108  private:
109   // WebUI message handlers.
110   void HandleCheckLocallyManagedUserName(const base::string16& name);
111
112   void HandleManagerSelected(const std::string& manager_id);
113   void HandleImportUserSelected(const std::string& user_id);
114
115   void HandleFinishLocalManagedUserCreation();
116   void HandleAbortLocalManagedUserCreation();
117   void HandleRetryLocalManagedUserCreation(const base::ListValue* args);
118   void HandleCurrentSupervisedUserPage(const std::string& current_page);
119
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);
127
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);
134
135   void UpdateText(const std::string& element_id, const base::string16& text);
136
137   Delegate* delegate_;
138
139   DISALLOW_COPY_AND_ASSIGN(LocallyManagedUserCreationScreenHandler);
140 };
141
142 }  // namespace chromeos
143
144 #endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_LOCALLY_MANAGED_USER_CREATION_SCREEN_HANDLER_H_