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

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

Issue 11308081: cros: Account picker UI for public account. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: for comments in #3 Created 8 years 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 const char kGaiaExtStartPage[] = 60 const char kGaiaExtStartPage[] =
61 "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/main.html"; 61 "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/main.html";
62 // Same as above but offline version. 62 // Same as above but offline version.
63 const char kGaiaExtStartPageOffline[] = 63 const char kGaiaExtStartPageOffline[] =
64 "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/offline.html"; 64 "chrome-extension://mfffpogegjflfpflabcdkioaeobkgjik/offline.html";
65 65
66 // User dictionary keys. 66 // User dictionary keys.
67 const char kKeyUsername[] = "username"; 67 const char kKeyUsername[] = "username";
68 const char kKeyDisplayName[] = "displayName"; 68 const char kKeyDisplayName[] = "displayName";
69 const char kKeyEmailAddress[] = "emailAddress"; 69 const char kKeyEmailAddress[] = "emailAddress";
70 const char kKeyEnterpriseDomain[] = "enterpriseDomain";
70 const char kKeyNameTooltip[] = "nameTooltip"; 71 const char kKeyNameTooltip[] = "nameTooltip";
72 const char kKeyPublicAccount[] = "publicAccount";
71 const char kKeySignedIn[] = "signedIn"; 73 const char kKeySignedIn[] = "signedIn";
72 const char kKeyCanRemove[] = "canRemove"; 74 const char kKeyCanRemove[] = "canRemove";
73 const char kKeyOauthTokenStatus[] = "oauthTokenStatus"; 75 const char kKeyOauthTokenStatus[] = "oauthTokenStatus";
74 76
75 // Max number of users to show. 77 // Max number of users to show.
76 const size_t kMaxUsers = 5; 78 const size_t kMaxUsers = 5;
77 79
78 // The Task posted to PostTaskAndReply in StartClearingDnsCache on the IO 80 // The Task posted to PostTaskAndReply in StartClearingDnsCache on the IO
79 // thread. 81 // thread.
80 void ClearDnsCache(IOThread* io_thread) { 82 void ClearDnsCache(IOThread* io_thread) {
(...skipping 16 matching lines...) Expand all
97 const CrosSettings* cros_settings) { 99 const CrosSettings* cros_settings) {
98 bool allow_new_user = true; 100 bool allow_new_user = true;
99 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user); 101 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user);
100 bool allow_guest = true; 102 bool allow_guest = true;
101 cros_settings->GetBoolean(kAccountsPrefAllowGuest, &allow_guest); 103 cros_settings->GetBoolean(kAccountsPrefAllowGuest, &allow_guest);
102 // Account creation depends on Guest sign-in (http://crosbug.com/24570). 104 // Account creation depends on Guest sign-in (http://crosbug.com/24570).
103 params->SetBoolean("createAccount", allow_new_user && allow_guest); 105 params->SetBoolean("createAccount", allow_new_user && allow_guest);
104 params->SetBoolean("guestSignin", allow_guest); 106 params->SetBoolean("guestSignin", allow_guest);
105 } 107 }
106 108
107 } // namespace 109 } // namespace
108 110
109 // SigninScreenHandler implementation ------------------------------------------ 111 // SigninScreenHandler implementation ------------------------------------------
110 112
111 SigninScreenHandler::SigninScreenHandler( 113 SigninScreenHandler::SigninScreenHandler(
112 const scoped_refptr<NetworkStateInformer>& network_state_informer) 114 const scoped_refptr<NetworkStateInformer>& network_state_informer)
113 : delegate_(NULL), 115 : delegate_(NULL),
114 native_window_delegate_(NULL), 116 native_window_delegate_(NULL),
115 show_on_init_(false), 117 show_on_init_(false),
116 oobe_ui_(false), 118 oobe_ui_(false),
117 focus_stolen_(false), 119 focus_stolen_(false),
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 localized_strings->SetString("errorTpmFailureReboot", 190 localized_strings->SetString("errorTpmFailureReboot",
189 l10n_util::GetStringFUTF16( 191 l10n_util::GetStringFUTF16(
190 IDS_LOGIN_ERROR_TPM_FAILURE_REBOOT, 192 IDS_LOGIN_ERROR_TPM_FAILURE_REBOOT,
191 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME))); 193 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME)));
192 localized_strings->SetString("disabledAddUserTooltip", 194 localized_strings->SetString("disabledAddUserTooltip",
193 l10n_util::GetStringUTF16( 195 l10n_util::GetStringUTF16(
194 g_browser_process->browser_policy_connector()->IsEnterpriseManaged() ? 196 g_browser_process->browser_policy_connector()->IsEnterpriseManaged() ?
195 IDS_DISABLED_ADD_USER_TOOLTIP_ENTERPRISE : 197 IDS_DISABLED_ADD_USER_TOOLTIP_ENTERPRISE :
196 IDS_DISABLED_ADD_USER_TOOLTIP)); 198 IDS_DISABLED_ADD_USER_TOOLTIP));
197 199
200 localized_strings->SetString("publicAccountInfoFormat",
201 l10n_util::GetStringUTF16(IDS_LOGIN_PUBLIC_ACCOUNT_INFO_FORMAT));
202 localized_strings->SetString("publicAccountReminder",
203 l10n_util::GetStringUTF16(IDS_LOGIN_PUBLIC_ACCOUNT_SIGNOUT_REMINDER));
204 localized_strings->SetString("publicAccountEnter",
205 l10n_util::GetStringUTF16(IDS_LOGIN_PUBLIC_ACCOUNT_ENTER));
206
198 if (chromeos::KioskModeSettings::Get()->IsKioskModeEnabled()) { 207 if (chromeos::KioskModeSettings::Get()->IsKioskModeEnabled()) {
199 localized_strings->SetString("demoLoginMessage", 208 localized_strings->SetString("demoLoginMessage",
200 l10n_util::GetStringUTF16(IDS_KIOSK_MODE_LOGIN_MESSAGE)); 209 l10n_util::GetStringUTF16(IDS_KIOSK_MODE_LOGIN_MESSAGE));
201 } 210 }
202 } 211 }
203 212
204 void SigninScreenHandler::Show(bool oobe_ui) { 213 void SigninScreenHandler::Show(bool oobe_ui) {
205 CHECK(delegate_); 214 CHECK(delegate_);
206 oobe_ui_ = oobe_ui; 215 oobe_ui_ = oobe_ui;
207 if (!page_is_ready()) { 216 if (!page_is_ready()) {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 base::Unretained(this))); 290 base::Unretained(this)));
282 web_ui()->RegisterMessageCallback("getUsers", 291 web_ui()->RegisterMessageCallback("getUsers",
283 base::Bind(&SigninScreenHandler::HandleGetUsers, 292 base::Bind(&SigninScreenHandler::HandleGetUsers,
284 base::Unretained(this))); 293 base::Unretained(this)));
285 web_ui()->RegisterMessageCallback("launchDemoUser", 294 web_ui()->RegisterMessageCallback("launchDemoUser",
286 base::Bind(&SigninScreenHandler::HandleLaunchDemoUser, 295 base::Bind(&SigninScreenHandler::HandleLaunchDemoUser,
287 base::Unretained(this))); 296 base::Unretained(this)));
288 web_ui()->RegisterMessageCallback("launchIncognito", 297 web_ui()->RegisterMessageCallback("launchIncognito",
289 base::Bind(&SigninScreenHandler::HandleLaunchIncognito, 298 base::Bind(&SigninScreenHandler::HandleLaunchIncognito,
290 base::Unretained(this))); 299 base::Unretained(this)));
300 web_ui()->RegisterMessageCallback("launchPublicAccount",
301 base::Bind(&SigninScreenHandler::HandleLaunchPublicAccount,
302 base::Unretained(this)));
291 web_ui()->RegisterMessageCallback("offlineLogin", 303 web_ui()->RegisterMessageCallback("offlineLogin",
292 base::Bind(&SigninScreenHandler::HandleOfflineLogin, 304 base::Bind(&SigninScreenHandler::HandleOfflineLogin,
293 base::Unretained(this))); 305 base::Unretained(this)));
294 web_ui()->RegisterMessageCallback("showAddUser", 306 web_ui()->RegisterMessageCallback("showAddUser",
295 base::Bind(&SigninScreenHandler::HandleShowAddUser, 307 base::Bind(&SigninScreenHandler::HandleShowAddUser,
296 base::Unretained(this))); 308 base::Unretained(this)));
297 web_ui()->RegisterMessageCallback("shutdownSystem", 309 web_ui()->RegisterMessageCallback("shutdownSystem",
298 base::Bind(&SigninScreenHandler::HandleShutdownSystem, 310 base::Bind(&SigninScreenHandler::HandleShutdownSystem,
299 base::Unretained(this))); 311 base::Unretained(this)));
300 web_ui()->RegisterMessageCallback("loadWallpaper", 312 web_ui()->RegisterMessageCallback("loadWallpaper",
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 void SigninScreenHandler::HandleLaunchDemoUser(const base::ListValue* args) { 628 void SigninScreenHandler::HandleLaunchDemoUser(const base::ListValue* args) {
617 if (delegate_) 629 if (delegate_)
618 delegate_->LoginAsRetailModeUser(); 630 delegate_->LoginAsRetailModeUser();
619 } 631 }
620 632
621 void SigninScreenHandler::HandleLaunchIncognito(const base::ListValue* args) { 633 void SigninScreenHandler::HandleLaunchIncognito(const base::ListValue* args) {
622 if (delegate_) 634 if (delegate_)
623 delegate_->LoginAsGuest(); 635 delegate_->LoginAsGuest();
624 } 636 }
625 637
638 void SigninScreenHandler::HandleLaunchPublicAccount(
639 const base::ListValue* args) {
640 // TODO(bartfab): Wire this with real public account signin.
641 }
642
626 void SigninScreenHandler::HandleOfflineLogin(const base::ListValue* args) { 643 void SigninScreenHandler::HandleOfflineLogin(const base::ListValue* args) {
627 if (!delegate_ || delegate_->IsShowUsers()) { 644 if (!delegate_ || delegate_->IsShowUsers()) {
628 NOTREACHED(); 645 NOTREACHED();
629 return; 646 return;
630 } 647 }
631 if (!args->GetString(0, &email_)) 648 if (!args->GetString(0, &email_))
632 email_.clear(); 649 email_.clear();
633 650
634 // Load auth extension. Parameters are: force reload, do not load extension in 651 // Load auth extension. Parameters are: force reload, do not load extension in
635 // background, use offline version. 652 // background, use offline version.
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 745
729 ListValue users_list; 746 ListValue users_list;
730 const UserList& users = delegate_->GetUsers(); 747 const UserList& users = delegate_->GetUsers();
731 748
732 bool single_user = users.size() == 1; 749 bool single_user = users.size() == 1;
733 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { 750 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) {
734 const std::string& email = (*it)->email(); 751 const std::string& email = (*it)->email();
735 std::string owner; 752 std::string owner;
736 chromeos::CrosSettings::Get()->GetString(chromeos::kDeviceOwner, &owner); 753 chromeos::CrosSettings::Get()->GetString(chromeos::kDeviceOwner, &owner);
737 bool is_owner = (email == owner); 754 bool is_owner = (email == owner);
755 bool public_account = ((*it)->GetType() == User::USER_TYPE_PUBLIC_ACCOUNT);
738 bool signed_in = *it == UserManager::Get()->GetLoggedInUser(); 756 bool signed_in = *it == UserManager::Get()->GetLoggedInUser();
739 757
740 if (non_owner_count < max_non_owner_users || is_owner) { 758 if (non_owner_count < max_non_owner_users || is_owner) {
741 DictionaryValue* user_dict = new DictionaryValue(); 759 DictionaryValue* user_dict = new DictionaryValue();
742 user_dict->SetString(kKeyUsername, email); 760 user_dict->SetString(kKeyUsername, email);
743 user_dict->SetString(kKeyEmailAddress, (*it)->display_email()); 761 user_dict->SetString(kKeyEmailAddress, (*it)->display_email());
744 user_dict->SetString(kKeyDisplayName, (*it)->GetDisplayName()); 762 user_dict->SetString(kKeyDisplayName, (*it)->GetDisplayName());
745 user_dict->SetString(kKeyNameTooltip, (*it)->display_email()); 763 user_dict->SetString(kKeyNameTooltip, (*it)->display_email());
764 user_dict->SetBoolean(kKeyPublicAccount, public_account);
746 user_dict->SetInteger(kKeyOauthTokenStatus, (*it)->oauth_token_status()); 765 user_dict->SetInteger(kKeyOauthTokenStatus, (*it)->oauth_token_status());
747 user_dict->SetBoolean(kKeySignedIn, signed_in); 766 user_dict->SetBoolean(kKeySignedIn, signed_in);
748 767
768 if (public_account) {
769 policy::BrowserPolicyConnector* policy_connector =
770 g_browser_process->browser_policy_connector();
771
772 if (policy_connector->IsEnterpriseManaged()) {
773 user_dict->SetString(kKeyEnterpriseDomain,
774 policy_connector->GetEnterpriseDomain());
775 }
776 }
777
749 // Single user check here is necessary because owner info might not be 778 // Single user check here is necessary because owner info might not be
750 // available when running into login screen on first boot. 779 // available when running into login screen on first boot.
751 // See http://crosbug.com/12723 780 // See http://crosbug.com/12723
752 user_dict->SetBoolean(kKeyCanRemove, 781 user_dict->SetBoolean(kKeyCanRemove,
753 !single_user && 782 !single_user &&
754 !email.empty() && 783 !email.empty() &&
755 !is_owner && 784 !is_owner &&
785 !public_account &&
756 !signed_in); 786 !signed_in);
757 787
758 users_list.Append(user_dict); 788 users_list.Append(user_dict);
759 if (!is_owner) 789 if (!is_owner)
760 ++non_owner_count; 790 ++non_owner_count;
761 } 791 }
762 } 792 }
763 793
764 base::FundamentalValue animated_value(animated); 794 base::FundamentalValue animated_value(animated);
765 base::FundamentalValue guest_value(delegate_->IsShowGuest()); 795 base::FundamentalValue guest_value(delegate_->IsShowGuest());
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 ConnectionType last_network_type) { 1030 ConnectionType last_network_type) {
1001 base::FundamentalValue state_value(state); 1031 base::FundamentalValue state_value(state);
1002 base::StringValue network_value(network_name); 1032 base::StringValue network_value(network_name);
1003 base::StringValue reason_value(reason); 1033 base::StringValue reason_value(reason);
1004 base::FundamentalValue last_network_value(last_network_type); 1034 base::FundamentalValue last_network_value(last_network_type);
1005 web_ui()->CallJavascriptFunction(callback, 1035 web_ui()->CallJavascriptFunction(callback,
1006 state_value, network_value, reason_value, last_network_value); 1036 state_value, network_value, reason_value, last_network_value);
1007 } 1037 }
1008 1038
1009 } // namespace chromeos 1039 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698