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

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: 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 5570e70a4d3a6a75ce96f05e4b5942cfb282ed9f..b345788e0c7b94230415975a1b12984c5f9fd004 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -5,7 +5,12 @@
#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.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/url_constants.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
@@ -14,14 +19,34 @@ namespace {
// Sign in screen id.
const char kSigninScreen[] = "signin";
+// User dictionary keys.
+const char kKeyName[] = "name";
+const char kKeyEmailAddress[] = "emailAddress";
+const char kKeyCanRemove[] = "canRemove";
+const char kKeyImageUrl[] = "imageUrl";
+
} // namespace
namespace chromeos {
+// 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
+
+void SigninScreenHandlerDelegate::set_webui_handler(
+ LoginDisplayWebUIHandler* webui_handler) {
+ webui_handler_ = webui_handler;
+}
+
+// LoginUIHandlerDelegate, protected: ------------------------------------------
Nikita (slow) 2011/07/15 07:11:02 nit: LoginUIHandler > SigninScreenHandler
xiyuan 2011/07/15 18:26:23 Ditto.
+
+SigninScreenHandlerDelegate::~SigninScreenHandlerDelegate() {
+}
+
+// SigninScreenHandler, public: ------------------------------------------------
+
SigninScreenHandler::SigninScreenHandler()
: delegate_(WebUILoginDisplay::GetInstance()),
show_on_init_(false) {
- delegate_->set_login_handler(this);
+ delegate_->set_webui_handler(this);
}
void SigninScreenHandler::GetLocalizedStrings(
@@ -46,6 +71,8 @@ void SigninScreenHandler::Show() {
web_ui_->CallJavascriptFunction("cr.ui.Oobe.showScreen", screen);
}
+// SigninScreenHandler, private: -----------------------------------------------
+
void SigninScreenHandler::Initialize() {
if (show_on_init_) {
show_on_init_ = false;
@@ -54,12 +81,75 @@ void SigninScreenHandler::Initialize() {
}
void SigninScreenHandler::RegisterMessages() {
- web_ui_->RegisterMessageCallback("authenticateUser",
- NewCallback(this, &SigninScreenHandler::HandleAuthenticateUser));
+ web_ui_->RegisterMessageCallback(
+ "launchIncognito",
+ NewCallback(this,
+ &SigninScreenHandler::HandleLaunchIncognito));
+ web_ui_->RegisterMessageCallback(
+ "authenticateUser",
+ NewCallback(this,
+ &SigninScreenHandler::HandleAuthenticateUser));
+ web_ui_->RegisterMessageCallback(
+ "shutdownSystem",
+ NewCallback(this,
+ &SigninScreenHandler::HandleShutdownSystem));
+ web_ui_->RegisterMessageCallback(
+ "getUsers",
+ NewCallback(this,
+ &SigninScreenHandler::HandleGetUsers));
+ web_ui_->RegisterMessageCallback(
+ "removeUser",
+ NewCallback(this,
+ &SigninScreenHandler::HandleRemoveUser));
+}
+
+void SigninScreenHandler::HandleGetUsers(const 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() {
- web_ui_->CallJavascriptFunction("login.SigninScreen.reset");
+ web_ui_->CallJavascriptFunction("resetPrompt");
}
void SigninScreenHandler::ShowError(const std::string& error_text,
@@ -69,15 +159,35 @@ void SigninScreenHandler::ShowError(const std::string& error_text,
ClearAndEnablePassword();
}
-void SigninScreenHandler::HandleAuthenticateUser(const ListValue* args) {
+void SigninScreenHandler::HandleAuthenticateUser(const base::ListValue* args) {
std::string username;
std::string password;
if (!args->GetString(0, &username) ||
!args->GetString(1, &password)) {
+ NOTREACHED();
return;
}
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