Index: chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
diff --git a/chrome/browser/ui/ash/session_state_delegate_chromeos.cc b/chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
index 24936e92002d982118004c262589a074eb8fdfd3..552935d03a40c105fab4edd9e08f14711f209444 100644 |
--- a/chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
+++ b/chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
@@ -10,14 +10,23 @@ |
#include "chromeos/dbus/dbus_thread_manager.h" |
#include "chromeos/dbus/session_manager_client.h" |
+// TODO(skuhne): To be able to test this I had to hardcode the number of known |
+// users. Get rid of it once it works. |
+#define ADD_TEST_USER_ACCOUNTS_FOR_MULTI_USER_TEST_ENVIRONMENT 0 |
Nikita (slow)
2013/05/17 17:00:32
Why is this needed?
Mr4D (OOO till 08-26)
2013/05/17 18:45:09
As stated - only for testing all the different men
|
+ |
SessionStateDelegate::SessionStateDelegate() { |
} |
SessionStateDelegate::~SessionStateDelegate() { |
} |
-bool SessionStateDelegate::HasActiveUser() const { |
- return chromeos::UserManager::Get()->IsUserLoggedIn(); |
+int SessionStateDelegate::GetMaximumNumberOfLoggedInUsers() const { |
+ return 3; |
+} |
+ |
+int SessionStateDelegate::NumberOfLoggedInUsers() const { |
+ return chromeos::UserManager::Get()->GetLoggedInUsers().size() + |
+ ADD_TEST_USER_ACCOUNTS_FOR_MULTI_USER_TEST_ENVIRONMENT; |
} |
bool SessionStateDelegate::IsActiveUserSessionStarted() const { |
@@ -47,3 +56,50 @@ void SessionStateDelegate::UnlockScreen() { |
// This is used only for testing thus far. |
NOTIMPLEMENTED(); |
} |
+ |
+const base::string16 SessionStateDelegate::GetUserDisplayName( |
+ ash::MultiProfileIndex index) const { |
+ if (ADD_TEST_USER_ACCOUNTS_FOR_MULTI_USER_TEST_ENVIRONMENT && |
+ static_cast<size_t>(index) >= |
+ chromeos::UserManager::Get()->GetLoggedInUsers().size()) |
+ index = 0; |
Nikita (slow)
2013/05/17 17:00:32
nit: Add {}
Mr4D (OOO till 08-26)
2013/05/17 18:45:09
Done.
|
+ DCHECK_LT(index, NumberOfLoggedInUsers()); |
+ return chromeos::UserManager::Get()->GetLRULoggedInUsers()[ |
Nikita (slow)
2013/05/17 17:00:32
nit: Makes sense to move method name to next line:
Mr4D (OOO till 08-26)
2013/05/17 18:45:09
Done.
|
+ index]->display_name(); |
+} |
+ |
+const std::string SessionStateDelegate::GetUserEmail( |
+ ash::MultiProfileIndex index) const { |
+ if (ADD_TEST_USER_ACCOUNTS_FOR_MULTI_USER_TEST_ENVIRONMENT && |
+ static_cast<size_t>(index) >= |
+ chromeos::UserManager::Get()->GetLoggedInUsers().size()) |
+ index = 0; |
+ DCHECK_LT(index, NumberOfLoggedInUsers()); |
+ return chromeos::UserManager::Get()->GetLRULoggedInUsers()[ |
Nikita (slow)
2013/05/17 17:00:32
nit: Same here.
Mr4D (OOO till 08-26)
2013/05/17 18:45:09
Done.
|
+ index]->display_email(); |
+} |
+ |
+const gfx::ImageSkia& SessionStateDelegate::GetUserImage( |
+ ash::MultiProfileIndex index) const { |
+ if (ADD_TEST_USER_ACCOUNTS_FOR_MULTI_USER_TEST_ENVIRONMENT && |
Nikita (slow)
2013/05/17 17:00:32
Makes sense to extract code that returns user by i
Mr4D (OOO till 08-26)
2013/05/17 18:45:09
This is only for the lifetime of this CL. My next
|
+ static_cast<size_t>(index) >= |
+ chromeos::UserManager::Get()->GetLoggedInUsers().size()) |
+ index = 0; |
+ DCHECK_LT(index, NumberOfLoggedInUsers()); |
+ return chromeos::UserManager::Get()->GetLRULoggedInUsers()[index]->image(); |
+} |
+ |
+void SessionStateDelegate::GetLoggedInUsers( |
+ ash::UserEmailList* users) { |
+ const chromeos::UserList& logged_in_users = |
+ chromeos::UserManager::Get()->GetLoggedInUsers(); |
+ for (chromeos::UserList::const_iterator it = logged_in_users.begin(); |
+ it != logged_in_users.end(); ++it) { |
+ const chromeos::User* user = (*it); |
+ users->push_back(user->email()); |
+ } |
+} |
+ |
+void SessionStateDelegate::SwitchActiveUser(const std::string& email) { |
+ chromeos::UserManager::Get()->SwitchActiveUser(email); |
+} |