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

Side by Side Diff: chrome/browser/chromeos/login/crash_restore_browsertest.cc

Issue 385633002: UserManager refactoring: move active user session restoration to UserSessionManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
11 #include "chrome/browser/chromeos/login/session/user_session_manager.h"
11 #include "chrome/browser/chromeos/login/users/user.h" 12 #include "chrome/browser/chromeos/login/users/user.h"
12 #include "chrome/browser/chromeos/login/users/user_manager.h" 13 #include "chrome/browser/chromeos/login/users/user_manager.h"
13 #include "chrome/test/base/in_process_browser_test.h" 14 #include "chrome/test/base/in_process_browser_test.h"
14 #include "chromeos/chromeos_switches.h" 15 #include "chromeos/chromeos_switches.h"
15 #include "chromeos/dbus/cryptohome_client.h" 16 #include "chromeos/dbus/cryptohome_client.h"
16 #include "chromeos/dbus/fake_dbus_thread_manager.h" 17 #include "chromeos/dbus/fake_dbus_thread_manager.h"
17 #include "chromeos/dbus/fake_session_manager_client.h" 18 #include "chromeos/dbus/fake_session_manager_client.h"
18 #include "chromeos/dbus/session_manager_client.h" 19 #include "chromeos/dbus/session_manager_client.h"
19 #include "content/public/test/test_utils.h" 20 #include "content/public/test/test_utils.h"
20 #include "testing/gmock/include/gmock/gmock.h" 21 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 UserManager* user_manager = UserManager::Get(); 62 UserManager* user_manager = UserManager::Get();
62 User* user = user_manager->GetActiveUser(); 63 User* user = user_manager->GetActiveUser();
63 ASSERT_TRUE(user); 64 ASSERT_TRUE(user);
64 EXPECT_EQ(kUserId1, user->email()); 65 EXPECT_EQ(kUserId1, user->email());
65 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1), 66 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1),
66 user->username_hash()); 67 user->username_hash());
67 EXPECT_EQ(1UL, user_manager->GetLoggedInUsers().size()); 68 EXPECT_EQ(1UL, user_manager->GetLoggedInUsers().size());
68 } 69 }
69 70
70 // Observer that keeps track of user sessions restore event. 71 // Observer that keeps track of user sessions restore event.
71 class UserSessionRestoreObserver : 72 class UserSessionRestoreObserver : public UserSessionStateObserver {
72 public UserManager::UserSessionStateObserver {
73 public: 73 public:
74 UserSessionRestoreObserver() 74 UserSessionRestoreObserver()
75 : running_loop_(false), 75 : running_loop_(false),
76 user_sessions_restored_(UserManager::Get()->UserSessionsRestored()) { 76 user_sessions_restored_(
77 UserSessionManager::GetInstance()->UserSessionsRestored()) {
77 if (!user_sessions_restored_) 78 if (!user_sessions_restored_)
78 UserManager::Get()->AddSessionStateObserver(this); 79 UserSessionManager::GetInstance()->AddSessionStateObserver(this);
79 } 80 }
80 virtual ~UserSessionRestoreObserver() {} 81 virtual ~UserSessionRestoreObserver() {}
81 82
82 virtual void PendingUserSessionsRestoreFinished() OVERRIDE { 83 virtual void PendingUserSessionsRestoreFinished() OVERRIDE {
83 user_sessions_restored_ = true; 84 user_sessions_restored_ = true;
84 UserManager::Get()->RemoveSessionStateObserver(this); 85 UserSessionManager::GetInstance()->RemoveSessionStateObserver(this);
85 if (!running_loop_) 86 if (!running_loop_)
86 return; 87 return;
87 88
88 message_loop_runner_->Quit(); 89 message_loop_runner_->Quit();
89 running_loop_ = false; 90 running_loop_ = false;
90 } 91 }
91 92
92 // Wait until the user sessions are restored. If that happened between the 93 // Wait until the user sessions are restored. If that happened between the
93 // construction of this object and this call or even before it was created 94 // construction of this object and this call or even before it was created
94 // then it returns immediately. 95 // then it returns immediately.
(...skipping 25 matching lines...) Expand all
120 session_manager_client_->StartSession(kUserId3); 121 session_manager_client_->StartSession(kUserId3);
121 } 122 }
122 }; 123 };
123 124
124 IN_PROC_BROWSER_TEST_F(CrashRestoreComplexTest, RestoreSessionForThreeUsers) { 125 IN_PROC_BROWSER_TEST_F(CrashRestoreComplexTest, RestoreSessionForThreeUsers) {
125 { 126 {
126 UserSessionRestoreObserver restore_observer; 127 UserSessionRestoreObserver restore_observer;
127 restore_observer.Wait(); 128 restore_observer.Wait();
128 } 129 }
129 130
130 UserManager* user_manager = UserManager::Get(); 131 DCHECK(UserSessionManager::GetInstance()->UserSessionsRestored());
131 DCHECK(user_manager->UserSessionsRestored());
132 132
133 // User that is last in the user sessions map becomes active. This behavior 133 // User that is last in the user sessions map becomes active. This behavior
134 // will become better defined once each user gets a separate user desktop. 134 // will become better defined once each user gets a separate user desktop.
135 UserManager* user_manager = UserManager::Get();
135 User* user = user_manager->GetActiveUser(); 136 User* user = user_manager->GetActiveUser();
136 ASSERT_TRUE(user); 137 ASSERT_TRUE(user);
137 EXPECT_EQ(kUserId3, user->email()); 138 EXPECT_EQ(kUserId3, user->email());
138 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId3), 139 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId3),
139 user->username_hash()); 140 user->username_hash());
140 const UserList& users = user_manager->GetLoggedInUsers(); 141 const UserList& users = user_manager->GetLoggedInUsers();
141 ASSERT_EQ(3UL, users.size()); 142 ASSERT_EQ(3UL, users.size());
142 143
143 // User that becomes active moves to the beginning of the list. 144 // User that becomes active moves to the beginning of the list.
144 EXPECT_EQ(kUserId3, users[0]->email()); 145 EXPECT_EQ(kUserId3, users[0]->email());
145 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId3), 146 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId3),
146 users[0]->username_hash()); 147 users[0]->username_hash());
147 EXPECT_EQ(kUserId2, users[1]->email()); 148 EXPECT_EQ(kUserId2, users[1]->email());
148 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId2), 149 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId2),
149 users[1]->username_hash()); 150 users[1]->username_hash());
150 EXPECT_EQ(kUserId1, users[2]->email()); 151 EXPECT_EQ(kUserId1, users[2]->email());
151 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1), 152 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1),
152 users[2]->username_hash()); 153 users[2]->username_hash());
153 } 154 }
154 155
155 } // namespace chromeos 156 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/chrome_browser_main_chromeos.cc ('k') | chrome/browser/chromeos/login/login_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698