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

Side by Side Diff: chrome/browser/ui/ash/session_controller_client.cc

Issue 2724163002: ash: Use enum for SessionController::CycleActiveUser (Closed)
Patch Set: Created 3 years, 9 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/ash/session_controller_client.h" 5 #include "chrome/browser/ui/ash/session_controller_client.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "ash/public/cpp/session_types.h" 10 #include "ash/public/cpp/session_types.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 } 103 }
104 104
105 void SessionControllerClient::RequestLockScreen() { 105 void SessionControllerClient::RequestLockScreen() {
106 DoLockScreen(); 106 DoLockScreen();
107 } 107 }
108 108
109 void SessionControllerClient::SwitchActiveUser(const AccountId& account_id) { 109 void SessionControllerClient::SwitchActiveUser(const AccountId& account_id) {
110 DoSwitchActiveUser(account_id); 110 DoSwitchActiveUser(account_id);
111 } 111 }
112 112
113 void SessionControllerClient::CycleActiveUser(bool next_user) { 113 void SessionControllerClient::CycleActiveUser(ash::CycleUser cycle_user) {
114 DoCycleActiveUser(next_user); 114 DoCycleActiveUser(cycle_user);
115 } 115 }
116 116
117 void SessionControllerClient::ActiveUserChanged(const User* active_user) { 117 void SessionControllerClient::ActiveUserChanged(const User* active_user) {
118 SendSessionInfoIfChanged(); 118 SendSessionInfoIfChanged();
119 119
120 // UserAddedToSession is not called for the primary user session so send its 120 // UserAddedToSession is not called for the primary user session so send its
121 // meta data here once. 121 // meta data here once.
122 if (!primary_user_session_sent_ && 122 if (!primary_user_session_sent_ &&
123 UserManager::Get()->GetPrimaryUser() == active_user) { 123 UserManager::Get()->GetPrimaryUser() == active_user) {
124 primary_user_session_sent_ = true; 124 primary_user_session_sent_ = true;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 // static 190 // static
191 void SessionControllerClient::DoSwitchActiveUser(const AccountId& account_id) { 191 void SessionControllerClient::DoSwitchActiveUser(const AccountId& account_id) {
192 // Disallow switching to an already active user since that might crash. 192 // Disallow switching to an already active user since that might crash.
193 if (account_id == UserManager::Get()->GetActiveUser()->GetAccountId()) 193 if (account_id == UserManager::Get()->GetActiveUser()->GetAccountId())
194 return; 194 return;
195 195
196 TrySwitchingActiveUser(base::Bind(&DoSwitchUser, account_id)); 196 TrySwitchingActiveUser(base::Bind(&DoSwitchUser, account_id));
197 } 197 }
198 198
199 // static 199 // static
200 void SessionControllerClient::DoCycleActiveUser(bool next_user) { 200 void SessionControllerClient::DoCycleActiveUser(ash::CycleUser cycle_user) {
201 const UserList& logged_in_users = UserManager::Get()->GetLoggedInUsers(); 201 const UserList& logged_in_users = UserManager::Get()->GetLoggedInUsers();
202 if (logged_in_users.size() <= 1) 202 if (logged_in_users.size() <= 1)
203 return; 203 return;
204 204
205 AccountId account_id = UserManager::Get()->GetActiveUser()->GetAccountId(); 205 AccountId account_id = UserManager::Get()->GetActiveUser()->GetAccountId();
206 206
207 // Get an iterator positioned at the active user. 207 // Get an iterator positioned at the active user.
208 auto it = std::find_if(logged_in_users.begin(), logged_in_users.end(), 208 auto it = std::find_if(logged_in_users.begin(), logged_in_users.end(),
209 [account_id](const User* user) { 209 [account_id](const User* user) {
210 return user->GetAccountId() == account_id; 210 return user->GetAccountId() == account_id;
211 }); 211 });
212 212
213 // Active user not found. 213 // Active user not found.
214 if (it == logged_in_users.end()) 214 if (it == logged_in_users.end())
215 return; 215 return;
216 216
217 // Get the user's email to select, wrapping to the start/end of the list if 217 // Get the user's email to select, wrapping to the start/end of the list if
218 // necessary. 218 // necessary.
219 if (next_user) { 219 if (cycle_user == ash::CycleUser::CYCLE_TO_NEXT_USER) {
220 if (++it == logged_in_users.end()) 220 if (++it == logged_in_users.end())
221 account_id = (*logged_in_users.begin())->GetAccountId(); 221 account_id = (*logged_in_users.begin())->GetAccountId();
222 else 222 else
223 account_id = (*it)->GetAccountId(); 223 account_id = (*it)->GetAccountId();
224 } else { 224 } else if (cycle_user == ash::CycleUser::CYCLE_TO_NEXT_USER) {
225 if (it == logged_in_users.begin()) 225 if (it == logged_in_users.begin())
226 it = logged_in_users.end(); 226 it = logged_in_users.end();
227 account_id = (*(--it))->GetAccountId(); 227 account_id = (*(--it))->GetAccountId();
228 } else {
229 NOTREACHED() << "Invalid cycle_user=" << static_cast<int>(cycle_user);
230 return;
228 } 231 }
229 232
230 DoSwitchActiveUser(account_id); 233 DoSwitchActiveUser(account_id);
231 } 234 }
232 235
233 // static 236 // static
234 void SessionControllerClient::FlushForTesting() { 237 void SessionControllerClient::FlushForTesting() {
235 g_instance->session_controller_.FlushForTesting(); 238 g_instance->session_controller_.FlushForTesting();
236 } 239 }
237 240
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 const UserList logged_in_users = user_manager->GetLoggedInUsers(); 285 const UserList logged_in_users = user_manager->GetLoggedInUsers();
283 std::vector<uint32_t> user_session_ids; 286 std::vector<uint32_t> user_session_ids;
284 for (auto* user : user_manager->GetLRULoggedInUsers()) { 287 for (auto* user : user_manager->GetLRULoggedInUsers()) {
285 const uint32_t user_session_id = GetSessionId(*user); 288 const uint32_t user_session_id = GetSessionId(*user);
286 DCHECK_NE(0u, user_session_id); 289 DCHECK_NE(0u, user_session_id);
287 user_session_ids.push_back(user_session_id); 290 user_session_ids.push_back(user_session_id);
288 } 291 }
289 292
290 session_controller_->SetUserSessionOrder(user_session_ids); 293 session_controller_->SetUserSessionOrder(user_session_ids);
291 } 294 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698