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

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: sync and address comments in set #1 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
21 SigninScreenHandler::SigninScreenHandler() 32 SigninScreenHandler::SigninScreenHandler()
22 : delegate_(WebUILoginDisplay::GetInstance()), 33 : delegate_(WebUILoginDisplay::GetInstance()),
23 show_on_init_(false) { 34 show_on_init_(false) {
24 delegate_->set_login_handler(this); 35 delegate_->SetWebUIHandler(this);
25 } 36 }
26 37
27 void SigninScreenHandler::GetLocalizedStrings( 38 void SigninScreenHandler::GetLocalizedStrings(
28 DictionaryValue* localized_strings) { 39 DictionaryValue* localized_strings) {
29 localized_strings->SetString("signinScreenTitle", 40 localized_strings->SetString("signinScreenTitle",
30 l10n_util::GetStringUTF16(IDS_LOGIN_TITLE)); 41 l10n_util::GetStringUTF16(IDS_LOGIN_TITLE));
31 localized_strings->SetString("emailHint", 42 localized_strings->SetString("emailHint",
32 l10n_util::GetStringUTF16(IDS_LOGIN_USERNAME)); 43 l10n_util::GetStringUTF16(IDS_LOGIN_USERNAME));
33 localized_strings->SetString("passwordHint", 44 localized_strings->SetString("passwordHint",
34 l10n_util::GetStringUTF16(IDS_LOGIN_PASSWORD)); 45 l10n_util::GetStringUTF16(IDS_LOGIN_PASSWORD));
35 localized_strings->SetString("signinButton", 46 localized_strings->SetString("signinButton",
36 l10n_util::GetStringUTF16(IDS_LOGIN_BUTTON)); 47 l10n_util::GetStringUTF16(IDS_LOGIN_BUTTON));
37 } 48 }
38 49
39 void SigninScreenHandler::Show() { 50 void SigninScreenHandler::Show() {
40 if (!page_is_ready()) { 51 if (!page_is_ready()) {
41 show_on_init_ = true; 52 show_on_init_ = true;
42 return; 53 return;
43 } 54 }
44 55
45 StringValue screen(kSigninScreen); 56 StringValue screen(kSigninScreen);
46 web_ui_->CallJavascriptFunction("cr.ui.Oobe.showScreen", screen); 57 web_ui_->CallJavascriptFunction("cr.ui.Oobe.showScreen", screen);
47 } 58 }
48 59
60 // SigninScreenHandler, private: -----------------------------------------------
61
49 void SigninScreenHandler::Initialize() { 62 void SigninScreenHandler::Initialize() {
50 if (show_on_init_) { 63 if (show_on_init_) {
51 show_on_init_ = false; 64 show_on_init_ = false;
52 Show(); 65 Show();
53 } 66 }
54 } 67 }
55 68
56 void SigninScreenHandler::RegisterMessages() { 69 void SigninScreenHandler::RegisterMessages() {
57 web_ui_->RegisterMessageCallback("authenticateUser", 70 web_ui_->RegisterMessageCallback(
58 NewCallback(this, &SigninScreenHandler::HandleAuthenticateUser)); 71 "launchIncognito",
72 NewCallback(this,
73 &SigninScreenHandler::HandleLaunchIncognito));
74 web_ui_->RegisterMessageCallback(
75 "authenticateUser",
76 NewCallback(this,
77 &SigninScreenHandler::HandleAuthenticateUser));
78 web_ui_->RegisterMessageCallback(
79 "shutdownSystem",
80 NewCallback(this,
81 &SigninScreenHandler::HandleShutdownSystem));
82 web_ui_->RegisterMessageCallback(
83 "getUsers",
84 NewCallback(this,
85 &SigninScreenHandler::HandleGetUsers));
86 web_ui_->RegisterMessageCallback(
87 "removeUser",
88 NewCallback(this,
89 &SigninScreenHandler::HandleRemoveUser));
90 }
91
92 void SigninScreenHandler::HandleGetUsers(const ListValue* args) {
93 ListValue users_list;
94
95 // Grab the users from the user manager.
96 UserVector users = UserManager::Get()->GetUsers();
97 for (UserVector::const_iterator it = users.begin();
98 it != users.end(); ++it) {
99 const std::string& email = it->email();
100
101 DictionaryValue* user_dict = new DictionaryValue();
102 user_dict->SetString(kKeyName, it->GetDisplayName());
103 user_dict->SetString(kKeyEmailAddress, email);
104 user_dict->SetBoolean(kKeyCanRemove, !email.empty());
105
106 if (!email.empty()) {
107 long long timestamp = base::TimeTicks::Now().ToInternalValue();
108 std::string image_url(
109 StringPrintf("%s%s?id=%lld",
110 chrome::kChromeUIUserImageURL,
111 email.c_str(),
112 timestamp));
113 user_dict->SetString(kKeyImageUrl, image_url);
114 } else {
115 std::string image_url(std::string(chrome::kChromeUIScheme) + "://" +
116 std::string(chrome::kChromeUIThemePath) + "/IDR_LOGIN_DEFAULT_USER");
117 user_dict->SetString(kKeyImageUrl, image_url);
118 }
119
120 users_list.Append(user_dict);
121 }
122
123 // Add the Guest to the user list.
124 DictionaryValue* guest_dict = new DictionaryValue();
125 guest_dict->SetString(kKeyName, l10n_util::GetStringUTF16(IDS_GUEST));
126 guest_dict->SetString(kKeyEmailAddress, "");
127 guest_dict->SetBoolean(kKeyCanRemove, false);
128 std::string image_url(std::string(chrome::kChromeUIScheme) + "://" +
129 std::string(chrome::kChromeUIThemePath) + "/IDR_LOGIN_GUEST");
130 guest_dict->SetString(kKeyImageUrl, image_url);
131 users_list.Append(guest_dict);
132
133 // Call the Javascript callback
134 web_ui_->CallJavascriptFunction("getUsersCallback", users_list);
59 } 135 }
60 136
61 void SigninScreenHandler::ClearAndEnablePassword() { 137 void SigninScreenHandler::ClearAndEnablePassword() {
62 web_ui_->CallJavascriptFunction("login.SigninScreen.reset"); 138 web_ui_->CallJavascriptFunction("login.SigninScreen.reset");
63 } 139 }
64 140
65 void SigninScreenHandler::ShowError(const std::string& error_text, 141 void SigninScreenHandler::ShowError(const std::string& error_text,
66 const std::string& help_link_text, 142 const std::string& help_link_text,
67 HelpAppLauncher::HelpTopic help_topic_id) { 143 HelpAppLauncher::HelpTopic help_topic_id) {
68 // TODO(xiyuan): Pass error + help to a propery error UI and save topic id. 144 // TODO(xiyuan): Pass error + help to a propery error UI and save topic id.
69 ClearAndEnablePassword(); 145 ClearAndEnablePassword();
70 } 146 }
71 147
72 void SigninScreenHandler::HandleAuthenticateUser(const ListValue* args) { 148 void SigninScreenHandler::HandleAuthenticateUser(const base::ListValue* args) {
73 std::string username; 149 std::string username;
74 std::string password; 150 std::string password;
75 if (!args->GetString(0, &username) || 151 if (!args->GetString(0, &username) ||
76 !args->GetString(1, &password)) { 152 !args->GetString(1, &password)) {
153 NOTREACHED();
77 return; 154 return;
78 } 155 }
79 156
80 delegate_->Login(username, password); 157 delegate_->Login(username, password);
81 } 158 }
82 159
160 void SigninScreenHandler::HandleLaunchIncognito(const base::ListValue* args) {
161 delegate_->LoginAsGuest();
162 }
163
164 void SigninScreenHandler::HandleShutdownSystem(const base::ListValue* args) {
165 DCHECK(CrosLibrary::Get()->EnsureLoaded());
166 CrosLibrary::Get()->GetPowerLibrary()->RequestShutdown();
167 }
168
169 void SigninScreenHandler::HandleRemoveUser(const base::ListValue* args) {
170 std::string email;
171 if (!args->GetString(0, &email)) {
172 NOTREACHED();
173 return;
174 }
175
176 UserManager::Get()->RemoveUserFromList(email);
177 }
178
83 } // namespace chromeos 179 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698