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

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 merge 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/command_line.h" 7 #include "base/command_line.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "base/stringprintf.h"
10 #include "chrome/browser/chromeos/cros/cros_library.h"
11 #include "chrome/browser/chromeos/cros/power_library.h"
12 #include "chrome/browser/chromeos/login/user_manager.h"
9 #include "chrome/browser/chromeos/login/webui_login_display.h" 13 #include "chrome/browser/chromeos/login/webui_login_display.h"
10 #include "chrome/common/chrome_switches.h" 14 #include "chrome/common/chrome_switches.h"
15 #include "chrome/common/url_constants.h"
11 #include "grit/generated_resources.h" 16 #include "grit/generated_resources.h"
12 #include "ui/base/l10n/l10n_util.h" 17 #include "ui/base/l10n/l10n_util.h"
13 18
14 namespace { 19 namespace {
15 20
16 // Sign in screen id. 21 // Sign in screen id.
17 const char kSigninScreen[] = "signin"; 22 const char kSigninScreen[] = "signin";
18 // Sign in screen id for GAIA extension hosted content. 23 // Sign in screen id for GAIA extension hosted content.
19 const char kGaiaSigninScreen[] = "gaia-signin"; 24 const char kGaiaSigninScreen[] = "gaia-signin";
20 // Start page of GAIA authentication extension. 25 // Start page of GAIA authentication extension.
21 const char kGaiaExtStartPage[] = 26 const char kGaiaExtStartPage[] =
22 "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/main.html"; 27 "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/main.html";
23 28
29 // User dictionary keys.
30 const char kKeyName[] = "name";
31 const char kKeyEmailAddress[] = "emailAddress";
32 const char kKeyCanRemove[] = "canRemove";
33 const char kKeyImageUrl[] = "imageUrl";
34
24 } // namespace 35 } // namespace
25 36
26 namespace chromeos { 37 namespace chromeos {
27 38
28 SigninScreenHandler::SigninScreenHandler() 39 SigninScreenHandler::SigninScreenHandler()
29 : delegate_(WebUILoginDisplay::GetInstance()), 40 : delegate_(WebUILoginDisplay::GetInstance()),
30 show_on_init_(false), 41 show_on_init_(false),
31 extension_driven_( 42 extension_driven_(
32 CommandLine::ForCurrentProcess()->HasSwitch( 43 CommandLine::ForCurrentProcess()->HasSwitch(
33 switches::kWebUIGaiaLogin)) { 44 switches::kWebUIGaiaLogin)) {
34 delegate_->set_login_handler(this); 45 delegate_->SetWebUIHandler(this);
35 } 46 }
36 47
37 void SigninScreenHandler::GetLocalizedStrings( 48 void SigninScreenHandler::GetLocalizedStrings(
38 DictionaryValue* localized_strings) { 49 DictionaryValue* localized_strings) {
39 localized_strings->SetString("signinScreenTitle", 50 localized_strings->SetString("signinScreenTitle",
40 l10n_util::GetStringUTF16(IDS_LOGIN_TITLE)); 51 l10n_util::GetStringUTF16(IDS_LOGIN_TITLE));
41 localized_strings->SetString("emailHint", 52 localized_strings->SetString("emailHint",
42 l10n_util::GetStringUTF16(IDS_LOGIN_USERNAME)); 53 l10n_util::GetStringUTF16(IDS_LOGIN_USERNAME));
43 localized_strings->SetString("passwordHint", 54 localized_strings->SetString("passwordHint",
44 l10n_util::GetStringUTF16(IDS_LOGIN_PASSWORD)); 55 l10n_util::GetStringUTF16(IDS_LOGIN_PASSWORD));
(...skipping 11 matching lines...) Expand all
56 show_on_init_ = true; 67 show_on_init_ = true;
57 return; 68 return;
58 } 69 }
59 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kWebUIGaiaLogin)) { 70 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kWebUIGaiaLogin)) {
60 ShowScreen(kGaiaSigninScreen, kGaiaExtStartPage); 71 ShowScreen(kGaiaSigninScreen, kGaiaExtStartPage);
61 } else { 72 } else {
62 ShowScreen(kSigninScreen, NULL); 73 ShowScreen(kSigninScreen, NULL);
63 } 74 }
64 } 75 }
65 76
77 // SigninScreenHandler, private: -----------------------------------------------
78
66 void SigninScreenHandler::Initialize() { 79 void SigninScreenHandler::Initialize() {
67 if (show_on_init_) { 80 if (show_on_init_) {
68 show_on_init_ = false; 81 show_on_init_ = false;
69 Show(); 82 Show();
70 } 83 }
71 } 84 }
72 85
73 void SigninScreenHandler::RegisterMessages() { 86 void SigninScreenHandler::RegisterMessages() {
87 web_ui_->RegisterMessageCallback("authenticateUser",
88 NewCallback(this, &SigninScreenHandler::HandleAuthenticateUser));
74 web_ui_->RegisterMessageCallback("completeLogin", 89 web_ui_->RegisterMessageCallback("completeLogin",
75 NewCallback(this, &SigninScreenHandler::HandleCompleteLogin)); 90 NewCallback(this, &SigninScreenHandler::HandleCompleteLogin));
76 web_ui_->RegisterMessageCallback("authenticateUser", 91 web_ui_->RegisterMessageCallback("getUsers",
77 NewCallback(this, &SigninScreenHandler::HandleAuthenticateUser)); 92 NewCallback(this, &SigninScreenHandler::HandleGetUsers));
93 web_ui_->RegisterMessageCallback("launchIncognito",
94 NewCallback(this, &SigninScreenHandler::HandleLaunchIncognito));
95 web_ui_->RegisterMessageCallback("shutdownSystem",
96 NewCallback(this, &SigninScreenHandler::HandleShutdownSystem));
97 web_ui_->RegisterMessageCallback("removeUser",
98 NewCallback(this, &SigninScreenHandler::HandleRemoveUser));
99 }
100
101 void SigninScreenHandler::HandleGetUsers(const base::ListValue* args) {
102 ListValue users_list;
103
104 // Grab the users from the user manager.
105 UserVector users = UserManager::Get()->GetUsers();
106 for (UserVector::const_iterator it = users.begin();
107 it != users.end(); ++it) {
108 const std::string& email = it->email();
109
110 DictionaryValue* user_dict = new DictionaryValue();
111 user_dict->SetString(kKeyName, it->GetDisplayName());
112 user_dict->SetString(kKeyEmailAddress, email);
113 user_dict->SetBoolean(kKeyCanRemove, !email.empty());
114
115 if (!email.empty()) {
116 long long timestamp = base::TimeTicks::Now().ToInternalValue();
117 std::string image_url(
118 StringPrintf("%s%s?id=%lld",
119 chrome::kChromeUIUserImageURL,
120 email.c_str(),
121 timestamp));
122 user_dict->SetString(kKeyImageUrl, image_url);
123 } else {
124 std::string image_url(std::string(chrome::kChromeUIScheme) + "://" +
125 std::string(chrome::kChromeUIThemePath) + "/IDR_LOGIN_DEFAULT_USER");
126 user_dict->SetString(kKeyImageUrl, image_url);
127 }
128
129 users_list.Append(user_dict);
130 }
131
132 // Add the Guest to the user list.
133 DictionaryValue* guest_dict = new DictionaryValue();
134 guest_dict->SetString(kKeyName, l10n_util::GetStringUTF16(IDS_GUEST));
135 guest_dict->SetString(kKeyEmailAddress, "");
136 guest_dict->SetBoolean(kKeyCanRemove, false);
137 std::string image_url(std::string(chrome::kChromeUIScheme) + "://" +
138 std::string(chrome::kChromeUIThemePath) + "/IDR_LOGIN_GUEST");
139 guest_dict->SetString(kKeyImageUrl, image_url);
140 users_list.Append(guest_dict);
141
142 // Call the Javascript callback
143 web_ui_->CallJavascriptFunction("getUsersCallback", users_list);
78 } 144 }
79 145
80 void SigninScreenHandler::ClearAndEnablePassword() { 146 void SigninScreenHandler::ClearAndEnablePassword() {
81 web_ui_->CallJavascriptFunction("login.SigninScreen.reset"); 147 web_ui_->CallJavascriptFunction("login.SigninScreen.reset");
82 } 148 }
83 149
84 void SigninScreenHandler::ShowError(const std::string& error_text, 150 void SigninScreenHandler::ShowError(const std::string& error_text,
85 const std::string& help_link_text, 151 const std::string& help_link_text,
86 HelpAppLauncher::HelpTopic help_topic_id) { 152 HelpAppLauncher::HelpTopic help_topic_id) {
87 // TODO(xiyuan): Pass error + help to a propery error UI and save topic id. 153 // TODO(xiyuan): Pass error + help to a propery error UI and save topic id.
88 ClearAndEnablePassword(); 154 ClearAndEnablePassword();
89 } 155 }
90 156
91 void SigninScreenHandler::HandleCompleteLogin(const ListValue* args) { 157 void SigninScreenHandler::HandleCompleteLogin(const base::ListValue* args) {
92 std::string username; 158 std::string username;
93 std::string password; 159 std::string password;
94 if (!args->GetString(0, &username) || 160 if (!args->GetString(0, &username) ||
95 !args->GetString(1, &password)) { 161 !args->GetString(1, &password)) {
96 NOTREACHED(); 162 NOTREACHED();
97 return; 163 return;
98 } 164 }
99 165
100 delegate_->CompleteLogin(username, password); 166 delegate_->CompleteLogin(username, password);
101 } 167 }
102 168
103 void SigninScreenHandler::HandleAuthenticateUser(const ListValue* args) { 169 void SigninScreenHandler::HandleAuthenticateUser(const base::ListValue* args) {
104 std::string username; 170 std::string username;
105 std::string password; 171 std::string password;
106 if (!args->GetString(0, &username) || 172 if (!args->GetString(0, &username) ||
107 !args->GetString(1, &password)) { 173 !args->GetString(1, &password)) {
108 NOTREACHED(); 174 NOTREACHED();
109 return; 175 return;
110 } 176 }
111 177
112 delegate_->Login(username, password); 178 delegate_->Login(username, password);
113 } 179 }
114 180
181 void SigninScreenHandler::HandleLaunchIncognito(const base::ListValue* args) {
182 delegate_->LoginAsGuest();
183 }
184
185 void SigninScreenHandler::HandleShutdownSystem(const base::ListValue* args) {
186 DCHECK(CrosLibrary::Get()->EnsureLoaded());
187 CrosLibrary::Get()->GetPowerLibrary()->RequestShutdown();
188 }
189
190 void SigninScreenHandler::HandleRemoveUser(const base::ListValue* args) {
191 std::string email;
192 if (!args->GetString(0, &email)) {
193 NOTREACHED();
194 return;
195 }
196
197 UserManager::Get()->RemoveUserFromList(email);
198 }
199
115 } // namespace chromeos 200 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698