| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| (...skipping 1209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1220 TRACE_EVENT_ASYNC_STEP_INTO0("ui", | 1220 TRACE_EVENT_ASYNC_STEP_INTO0("ui", |
| 1221 "ShowLoginWebUI", | 1221 "ShowLoginWebUI", |
| 1222 LoginDisplayHostImpl::kShowLoginWebUIid, | 1222 LoginDisplayHostImpl::kShowLoginWebUIid, |
| 1223 "SendUserList"); | 1223 "SendUserList"); |
| 1224 BootTimesLoader::Get()->RecordCurrentStats("login-send-user-list"); | 1224 BootTimesLoader::Get()->RecordCurrentStats("login-send-user-list"); |
| 1225 | 1225 |
| 1226 size_t max_non_owner_users = kMaxUsers - 1; | 1226 size_t max_non_owner_users = kMaxUsers - 1; |
| 1227 size_t non_owner_count = 0; | 1227 size_t non_owner_count = 0; |
| 1228 | 1228 |
| 1229 base::ListValue users_list; | 1229 base::ListValue users_list; |
| 1230 size_t first_non_public_account_index = 0; |
| 1230 const UserList& users = delegate_->GetUsers(); | 1231 const UserList& users = delegate_->GetUsers(); |
| 1231 | 1232 |
| 1232 // TODO(nkostylev): Move to a separate method in UserManager. | 1233 // TODO(nkostylev): Move to a separate method in UserManager. |
| 1233 // http://crbug.com/230852 | 1234 // http://crbug.com/230852 |
| 1234 bool is_signin_to_add = LoginDisplayHostImpl::default_host() && | 1235 bool is_signin_to_add = LoginDisplayHostImpl::default_host() && |
| 1235 UserManager::Get()->IsUserLoggedIn(); | 1236 UserManager::Get()->IsUserLoggedIn(); |
| 1236 | 1237 |
| 1237 bool single_user = users.size() == 1; | 1238 bool single_user = users.size() == 1; |
| 1239 std::string owner; |
| 1240 chromeos::CrosSettings::Get()->GetString(chromeos::kDeviceOwner, &owner); |
| 1238 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { | 1241 for (UserList::const_iterator it = users.begin(); it != users.end(); ++it) { |
| 1239 const std::string& email = (*it)->email(); | 1242 const std::string& email = (*it)->email(); |
| 1240 | |
| 1241 std::string owner; | |
| 1242 chromeos::CrosSettings::Get()->GetString(chromeos::kDeviceOwner, &owner); | |
| 1243 bool is_owner = (email == owner); | 1243 bool is_owner = (email == owner); |
| 1244 | 1244 |
| 1245 if (non_owner_count < max_non_owner_users || is_owner) { | 1245 if (non_owner_count < max_non_owner_users || is_owner) { |
| 1246 base::DictionaryValue* user_dict = new base::DictionaryValue(); | 1246 base::DictionaryValue* user_dict = new base::DictionaryValue(); |
| 1247 FillUserDictionary(*it, is_owner, user_dict); | 1247 FillUserDictionary(*it, is_owner, user_dict); |
| 1248 bool is_public_account = | 1248 bool is_public_account = |
| 1249 ((*it)->GetType() == User::USER_TYPE_PUBLIC_ACCOUNT); | 1249 ((*it)->GetType() == User::USER_TYPE_PUBLIC_ACCOUNT); |
| 1250 bool signed_in = (*it)->is_logged_in(); | 1250 bool signed_in = (*it)->is_logged_in(); |
| 1251 // Single user check here is necessary because owner info might not be | 1251 // Single user check here is necessary because owner info might not be |
| 1252 // available when running into login screen on first boot. | 1252 // available when running into login screen on first boot. |
| 1253 // See http://crosbug.com/12723 | 1253 // See http://crosbug.com/12723 |
| 1254 user_dict->SetBoolean(kKeyCanRemove, | 1254 user_dict->SetBoolean(kKeyCanRemove, |
| 1255 !single_user && | 1255 !single_user && |
| 1256 !email.empty() && | 1256 !email.empty() && |
| 1257 !is_owner && | 1257 !is_owner && |
| 1258 !is_public_account && | 1258 !is_public_account && |
| 1259 !signed_in && | 1259 !signed_in && |
| 1260 !is_signin_to_add); | 1260 !is_signin_to_add); |
| 1261 | 1261 |
| 1262 users_list.Append(user_dict); | 1262 // public accounts come first in the list |
| 1263 if (is_public_account) |
| 1264 users_list.Insert(first_non_public_account_index++, user_dict); |
| 1265 else |
| 1266 users_list.Append(user_dict); |
| 1263 if (!is_owner) | 1267 if (!is_owner) |
| 1264 ++non_owner_count; | 1268 ++non_owner_count; |
| 1265 } | 1269 } |
| 1266 } | 1270 } |
| 1267 | 1271 |
| 1268 CallJS("login.AccountPickerScreen.loadUsers", users_list, animated, | 1272 CallJS("login.AccountPickerScreen.loadUsers", users_list, animated, |
| 1269 delegate_->IsShowGuest()); | 1273 delegate_->IsShowGuest()); |
| 1270 } | 1274 } |
| 1271 | 1275 |
| 1272 void SigninScreenHandler::HandleAccountPickerReady() { | 1276 void SigninScreenHandler::HandleAccountPickerReady() { |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1650 DCHECK(gaia_screen_handler_); | 1654 DCHECK(gaia_screen_handler_); |
| 1651 return gaia_screen_handler_->frame_state(); | 1655 return gaia_screen_handler_->frame_state(); |
| 1652 } | 1656 } |
| 1653 | 1657 |
| 1654 net::Error SigninScreenHandler::FrameError() const { | 1658 net::Error SigninScreenHandler::FrameError() const { |
| 1655 DCHECK(gaia_screen_handler_); | 1659 DCHECK(gaia_screen_handler_); |
| 1656 return gaia_screen_handler_->frame_error(); | 1660 return gaia_screen_handler_->frame_error(); |
| 1657 } | 1661 } |
| 1658 | 1662 |
| 1659 } // namespace chromeos | 1663 } // namespace chromeos |
| OLD | NEW |