Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc

Issue 7382001: [ChromeOS] WebUI OOBE/Login refactoring. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" 5 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
6 6
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "base/stringprintf.h"
9 #include "chrome/browser/chromeos/cros/cros_library.h"
10 #include "chrome/browser/chromeos/cros/power_library.h"
11 #include "chrome/browser/chromeos/login/user_manager.h"
8 #include "chrome/browser/chromeos/login/webui_login_display.h" 12 #include "chrome/browser/chromeos/login/webui_login_display.h"
13 #include "chrome/common/url_constants.h"
9 #include "grit/generated_resources.h" 14 #include "grit/generated_resources.h"
10 #include "ui/base/l10n/l10n_util.h" 15 #include "ui/base/l10n/l10n_util.h"
11 16
12 namespace { 17 namespace {
13 18
14 // Sign in screen id. 19 // Sign in screen id.
15 const char kSigninScreen[] = "signin"; 20 const char kSigninScreen[] = "signin";
16 21
22 // User dictionary keys.
23 const char kKeyName[] = "name";
24 const char kKeyEmailAddress[] = "emailAddress";
25 const char kKeyCanRemove[] = "canRemove";
26 const char kKeyImageUrl[] = "imageUrl";
27
17 } // namespace 28 } // namespace
18 29
19 namespace chromeos { 30 namespace chromeos {
20 31
32 // LoginUIHandlerDelegate, public: ------------------------------------------
Nikita (slow) 2011/07/15 07:11:02 nit: LoginUIHandler > SigninScreenHandler
xiyuan 2011/07/15 18:26:23 Removed since SigninScreenHandlerDelegate is an in
33
34 void SigninScreenHandlerDelegate::set_webui_handler(
35 LoginDisplayWebUIHandler* webui_handler) {
36 webui_handler_ = webui_handler;
37 }
38
39 // LoginUIHandlerDelegate, protected: ------------------------------------------
Nikita (slow) 2011/07/15 07:11:02 nit: LoginUIHandler > SigninScreenHandler
xiyuan 2011/07/15 18:26:23 Ditto.
40
41 SigninScreenHandlerDelegate::~SigninScreenHandlerDelegate() {
42 }
43
44 // SigninScreenHandler, public: ------------------------------------------------
45
21 SigninScreenHandler::SigninScreenHandler() 46 SigninScreenHandler::SigninScreenHandler()
22 : delegate_(WebUILoginDisplay::GetInstance()), 47 : delegate_(WebUILoginDisplay::GetInstance()),
23 show_on_init_(false) { 48 show_on_init_(false) {
24 delegate_->set_login_handler(this); 49 delegate_->set_webui_handler(this);
25 } 50 }
26 51
27 void SigninScreenHandler::GetLocalizedStrings( 52 void SigninScreenHandler::GetLocalizedStrings(
28 DictionaryValue* localized_strings) { 53 DictionaryValue* localized_strings) {
29 localized_strings->SetString("signinScreenTitle", 54 localized_strings->SetString("signinScreenTitle",
30 l10n_util::GetStringUTF16(IDS_LOGIN_TITLE)); 55 l10n_util::GetStringUTF16(IDS_LOGIN_TITLE));
31 localized_strings->SetString("emailHint", 56 localized_strings->SetString("emailHint",
32 l10n_util::GetStringUTF16(IDS_LOGIN_USERNAME)); 57 l10n_util::GetStringUTF16(IDS_LOGIN_USERNAME));
33 localized_strings->SetString("passwordHint", 58 localized_strings->SetString("passwordHint",
34 l10n_util::GetStringUTF16(IDS_LOGIN_PASSWORD)); 59 l10n_util::GetStringUTF16(IDS_LOGIN_PASSWORD));
35 localized_strings->SetString("signinButton", 60 localized_strings->SetString("signinButton",
36 l10n_util::GetStringUTF16(IDS_LOGIN_BUTTON)); 61 l10n_util::GetStringUTF16(IDS_LOGIN_BUTTON));
37 } 62 }
38 63
39 void SigninScreenHandler::Show() { 64 void SigninScreenHandler::Show() {
40 if (!page_is_ready()) { 65 if (!page_is_ready()) {
41 show_on_init_ = true; 66 show_on_init_ = true;
42 return; 67 return;
43 } 68 }
44 69
45 StringValue screen(kSigninScreen); 70 StringValue screen(kSigninScreen);
46 web_ui_->CallJavascriptFunction("cr.ui.Oobe.showScreen", screen); 71 web_ui_->CallJavascriptFunction("cr.ui.Oobe.showScreen", screen);
47 } 72 }
48 73
74 // SigninScreenHandler, private: -----------------------------------------------
75
49 void SigninScreenHandler::Initialize() { 76 void SigninScreenHandler::Initialize() {
50 if (show_on_init_) { 77 if (show_on_init_) {
51 show_on_init_ = false; 78 show_on_init_ = false;
52 Show(); 79 Show();
53 } 80 }
54 } 81 }
55 82
56 void SigninScreenHandler::RegisterMessages() { 83 void SigninScreenHandler::RegisterMessages() {
57 web_ui_->RegisterMessageCallback("authenticateUser", 84 web_ui_->RegisterMessageCallback(
58 NewCallback(this, &SigninScreenHandler::HandleAuthenticateUser)); 85 "launchIncognito",
86 NewCallback(this,
87 &SigninScreenHandler::HandleLaunchIncognito));
88 web_ui_->RegisterMessageCallback(
89 "authenticateUser",
90 NewCallback(this,
91 &SigninScreenHandler::HandleAuthenticateUser));
92 web_ui_->RegisterMessageCallback(
93 "shutdownSystem",
94 NewCallback(this,
95 &SigninScreenHandler::HandleShutdownSystem));
96 web_ui_->RegisterMessageCallback(
97 "getUsers",
98 NewCallback(this,
99 &SigninScreenHandler::HandleGetUsers));
100 web_ui_->RegisterMessageCallback(
101 "removeUser",
102 NewCallback(this,
103 &SigninScreenHandler::HandleRemoveUser));
104 }
105
106 void SigninScreenHandler::HandleGetUsers(const ListValue* args) {
107 ListValue users_list;
108
109 // Grab the users from the user manager.
110 UserVector users = UserManager::Get()->GetUsers();
111 for (UserVector::const_iterator it = users.begin();
112 it != users.end(); ++it) {
113 const std::string& email = it->email();
114
115 DictionaryValue* user_dict = new DictionaryValue();
116 user_dict->SetString(kKeyName, it->GetDisplayName());
117 user_dict->SetString(kKeyEmailAddress, email);
118 user_dict->SetBoolean(kKeyCanRemove, !email.empty());
119
120 if (!email.empty()) {
121 long long timestamp = base::TimeTicks::Now().ToInternalValue();
122 std::string image_url(
123 StringPrintf("%s%s?id=%lld",
124 chrome::kChromeUIUserImageURL,
125 email.c_str(),
126 timestamp));
127 user_dict->SetString(kKeyImageUrl, image_url);
128 } else {
129 std::string image_url(std::string(chrome::kChromeUIScheme) + "://" +
130 std::string(chrome::kChromeUIThemePath) + "/IDR_LOGIN_DEFAULT_USER");
131 user_dict->SetString(kKeyImageUrl, image_url);
132 }
133
134 users_list.Append(user_dict);
135 }
136
137 // Add the Guest to the user list.
138 DictionaryValue* guest_dict = new DictionaryValue();
139 guest_dict->SetString(kKeyName, l10n_util::GetStringUTF16(IDS_GUEST));
140 guest_dict->SetString(kKeyEmailAddress, "");
141 guest_dict->SetBoolean(kKeyCanRemove, false);
142 std::string image_url(std::string(chrome::kChromeUIScheme) + "://" +
143 std::string(chrome::kChromeUIThemePath) + "/IDR_LOGIN_GUEST");
144 guest_dict->SetString(kKeyImageUrl, image_url);
145 users_list.Append(guest_dict);
146
147 // Call the Javascript callback
148 web_ui_->CallJavascriptFunction("getUsersCallback", users_list);
59 } 149 }
60 150
61 void SigninScreenHandler::ClearAndEnablePassword() { 151 void SigninScreenHandler::ClearAndEnablePassword() {
62 web_ui_->CallJavascriptFunction("login.SigninScreen.reset"); 152 web_ui_->CallJavascriptFunction("resetPrompt");
63 } 153 }
64 154
65 void SigninScreenHandler::ShowError(const std::string& error_text, 155 void SigninScreenHandler::ShowError(const std::string& error_text,
66 const std::string& help_link_text, 156 const std::string& help_link_text,
67 HelpAppLauncher::HelpTopic help_topic_id) { 157 HelpAppLauncher::HelpTopic help_topic_id) {
68 // TODO(xiyuan): Pass error + help to a propery error UI and save topic id. 158 // TODO(xiyuan): Pass error + help to a propery error UI and save topic id.
69 ClearAndEnablePassword(); 159 ClearAndEnablePassword();
70 } 160 }
71 161
72 void SigninScreenHandler::HandleAuthenticateUser(const ListValue* args) { 162 void SigninScreenHandler::HandleAuthenticateUser(const base::ListValue* args) {
73 std::string username; 163 std::string username;
74 std::string password; 164 std::string password;
75 if (!args->GetString(0, &username) || 165 if (!args->GetString(0, &username) ||
76 !args->GetString(1, &password)) { 166 !args->GetString(1, &password)) {
167 NOTREACHED();
77 return; 168 return;
78 } 169 }
79 170
80 delegate_->Login(username, password); 171 delegate_->Login(username, password);
81 } 172 }
82 173
174 void SigninScreenHandler::HandleLaunchIncognito(const base::ListValue* args) {
175 delegate_->LoginAsGuest();
176 }
177
178 void SigninScreenHandler::HandleShutdownSystem(const base::ListValue* args) {
179 DCHECK(CrosLibrary::Get()->EnsureLoaded());
180 CrosLibrary::Get()->GetPowerLibrary()->RequestShutdown();
181 }
182
183 void SigninScreenHandler::HandleRemoveUser(const base::ListValue* args) {
184 std::string email;
185 if (!args->GetString(0, &email)) {
186 NOTREACHED();
187 return;
188 }
189
190 UserManager::Get()->RemoveUserFromList(email);
191 }
192
83 } // namespace chromeos 193 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698