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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
index 3d3a0008f7ab063f3b9c80d002ea1b7605621acf..93c263f0b3c5e0ea9c2afcddf105b7c8918b5401 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -6,8 +6,13 @@
#include "base/command_line.h"
#include "base/values.h"
+#include "base/stringprintf.h"
+#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "chrome/browser/chromeos/cros/power_library.h"
+#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/chromeos/login/webui_login_display.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/common/url_constants.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
@@ -21,6 +26,12 @@ const char kGaiaSigninScreen[] = "gaia-signin";
const char kGaiaExtStartPage[] =
"chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/main.html";
+// User dictionary keys.
+const char kKeyName[] = "name";
+const char kKeyEmailAddress[] = "emailAddress";
+const char kKeyCanRemove[] = "canRemove";
+const char kKeyImageUrl[] = "imageUrl";
+
} // namespace
namespace chromeos {
@@ -31,7 +42,7 @@ SigninScreenHandler::SigninScreenHandler()
extension_driven_(
CommandLine::ForCurrentProcess()->HasSwitch(
switches::kWebUIGaiaLogin)) {
- delegate_->set_login_handler(this);
+ delegate_->SetWebUIHandler(this);
}
void SigninScreenHandler::GetLocalizedStrings(
@@ -63,6 +74,8 @@ void SigninScreenHandler::Show() {
}
}
+// SigninScreenHandler, private: -----------------------------------------------
+
void SigninScreenHandler::Initialize() {
if (show_on_init_) {
show_on_init_ = false;
@@ -71,10 +84,63 @@ void SigninScreenHandler::Initialize() {
}
void SigninScreenHandler::RegisterMessages() {
- web_ui_->RegisterMessageCallback("completeLogin",
- NewCallback(this, &SigninScreenHandler::HandleCompleteLogin));
web_ui_->RegisterMessageCallback("authenticateUser",
NewCallback(this, &SigninScreenHandler::HandleAuthenticateUser));
+ web_ui_->RegisterMessageCallback("completeLogin",
+ NewCallback(this, &SigninScreenHandler::HandleCompleteLogin));
+ web_ui_->RegisterMessageCallback("getUsers",
+ NewCallback(this, &SigninScreenHandler::HandleGetUsers));
+ web_ui_->RegisterMessageCallback("launchIncognito",
+ NewCallback(this, &SigninScreenHandler::HandleLaunchIncognito));
+ web_ui_->RegisterMessageCallback("shutdownSystem",
+ NewCallback(this, &SigninScreenHandler::HandleShutdownSystem));
+ web_ui_->RegisterMessageCallback("removeUser",
+ NewCallback(this, &SigninScreenHandler::HandleRemoveUser));
+}
+
+void SigninScreenHandler::HandleGetUsers(const base::ListValue* args) {
+ ListValue users_list;
+
+ // Grab the users from the user manager.
+ UserVector users = UserManager::Get()->GetUsers();
+ for (UserVector::const_iterator it = users.begin();
+ it != users.end(); ++it) {
+ const std::string& email = it->email();
+
+ DictionaryValue* user_dict = new DictionaryValue();
+ user_dict->SetString(kKeyName, it->GetDisplayName());
+ user_dict->SetString(kKeyEmailAddress, email);
+ user_dict->SetBoolean(kKeyCanRemove, !email.empty());
+
+ if (!email.empty()) {
+ long long timestamp = base::TimeTicks::Now().ToInternalValue();
+ std::string image_url(
+ StringPrintf("%s%s?id=%lld",
+ chrome::kChromeUIUserImageURL,
+ email.c_str(),
+ timestamp));
+ user_dict->SetString(kKeyImageUrl, image_url);
+ } else {
+ std::string image_url(std::string(chrome::kChromeUIScheme) + "://" +
+ std::string(chrome::kChromeUIThemePath) + "/IDR_LOGIN_DEFAULT_USER");
+ user_dict->SetString(kKeyImageUrl, image_url);
+ }
+
+ users_list.Append(user_dict);
+ }
+
+ // Add the Guest to the user list.
+ DictionaryValue* guest_dict = new DictionaryValue();
+ guest_dict->SetString(kKeyName, l10n_util::GetStringUTF16(IDS_GUEST));
+ guest_dict->SetString(kKeyEmailAddress, "");
+ guest_dict->SetBoolean(kKeyCanRemove, false);
+ std::string image_url(std::string(chrome::kChromeUIScheme) + "://" +
+ std::string(chrome::kChromeUIThemePath) + "/IDR_LOGIN_GUEST");
+ guest_dict->SetString(kKeyImageUrl, image_url);
+ users_list.Append(guest_dict);
+
+ // Call the Javascript callback
+ web_ui_->CallJavascriptFunction("getUsersCallback", users_list);
}
void SigninScreenHandler::ClearAndEnablePassword() {
@@ -88,7 +154,7 @@ void SigninScreenHandler::ShowError(const std::string& error_text,
ClearAndEnablePassword();
}
-void SigninScreenHandler::HandleCompleteLogin(const ListValue* args) {
+void SigninScreenHandler::HandleCompleteLogin(const base::ListValue* args) {
std::string username;
std::string password;
if (!args->GetString(0, &username) ||
@@ -100,7 +166,7 @@ void SigninScreenHandler::HandleCompleteLogin(const ListValue* args) {
delegate_->CompleteLogin(username, password);
}
-void SigninScreenHandler::HandleAuthenticateUser(const ListValue* args) {
+void SigninScreenHandler::HandleAuthenticateUser(const base::ListValue* args) {
std::string username;
std::string password;
if (!args->GetString(0, &username) ||
@@ -112,4 +178,23 @@ void SigninScreenHandler::HandleAuthenticateUser(const ListValue* args) {
delegate_->Login(username, password);
}
+void SigninScreenHandler::HandleLaunchIncognito(const base::ListValue* args) {
+ delegate_->LoginAsGuest();
+}
+
+void SigninScreenHandler::HandleShutdownSystem(const base::ListValue* args) {
+ DCHECK(CrosLibrary::Get()->EnsureLoaded());
+ CrosLibrary::Get()->GetPowerLibrary()->RequestShutdown();
+}
+
+void SigninScreenHandler::HandleRemoveUser(const base::ListValue* args) {
+ std::string email;
+ if (!args->GetString(0, &email)) {
+ NOTREACHED();
+ return;
+ }
+
+ UserManager::Get()->RemoveUserFromList(email);
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698