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

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

Issue 228703004: Start session fail causes restart chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed more browser tests Created 6 years, 8 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 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"
(...skipping 15 matching lines...) Expand all
26 namespace { 26 namespace {
27 27
28 const char kUserId1[] = "user1@example.com"; 28 const char kUserId1[] = "user1@example.com";
29 const char kUserId2[] = "user2@example.com"; 29 const char kUserId2[] = "user2@example.com";
30 const char kUserId3[] = "user3@example.com"; 30 const char kUserId3[] = "user3@example.com";
31 31
32 } // namespace 32 } // namespace
33 33
34 class CrashRestoreSimpleTest : public InProcessBrowserTest { 34 class CrashRestoreSimpleTest : public InProcessBrowserTest {
35 protected: 35 protected:
36 CrashRestoreSimpleTest() {} 36 CrashRestoreSimpleTest() : session_started_cnt_(0) {}
37 37
38 virtual ~CrashRestoreSimpleTest() {} 38 virtual ~CrashRestoreSimpleTest() {}
39 39
40 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 40 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
41 command_line->AppendSwitch(::switches::kMultiProfiles); 41 command_line->AppendSwitch(::switches::kMultiProfiles);
42 command_line->AppendSwitchASCII(switches::kLoginUser, kUserId1); 42 command_line->AppendSwitchASCII(switches::kLoginUser, kUserId1);
43 command_line->AppendSwitchASCII( 43 command_line->AppendSwitchASCII(
44 switches::kLoginProfile, 44 switches::kLoginProfile,
45 CryptohomeClient::GetStubSanitizedUsername(kUserId1)); 45 CryptohomeClient::GetStubSanitizedUsername(kUserId1));
46 } 46 }
47 47
48 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 48 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
49 // Redirect session_manager DBus calls to FakeSessionManagerClient. 49 // Redirect session_manager DBus calls to FakeSessionManagerClient.
50 FakeDBusThreadManager* dbus_thread_manager = new FakeDBusThreadManager; 50 FakeDBusThreadManager* dbus_thread_manager = new FakeDBusThreadManager;
51 dbus_thread_manager->SetFakeClients(); 51 dbus_thread_manager->SetFakeClients();
52 session_manager_client_ = new FakeSessionManagerClient; 52 session_manager_client_ = new FakeSessionManagerClient;
53 dbus_thread_manager->SetSessionManagerClient( 53 dbus_thread_manager->SetSessionManagerClient(
54 scoped_ptr<SessionManagerClient>(session_manager_client_)); 54 scoped_ptr<SessionManagerClient>(session_manager_client_));
55 DBusThreadManager::SetInstanceForTesting(dbus_thread_manager); 55 DBusThreadManager::SetInstanceForTesting(dbus_thread_manager);
56 session_manager_client_->StartSession(kUserId1); 56 session_manager_client_->StartSession(
57 kUserId1,
58 base::Bind(&CrashRestoreSimpleTest::OnSessionStarted,
59 base::Unretained(this),
60 kUserId1));
61 ASSERT_EQ(1UL, session_started_cnt_);
57 } 62 }
58 63
64 public:
65 void OnSessionStarted(const std::string& user_email, bool success) {
66 ASSERT_TRUE(success);
67 ++session_started_cnt_;
68 }
69
70 protected:
59 FakeSessionManagerClient* session_manager_client_; 71 FakeSessionManagerClient* session_manager_client_;
72 size_t session_started_cnt_;
ygorshenin1 2014/04/16 16:50:04 nit: no need to use size_t here, use int instead.
Nikita (slow) 2014/04/18 05:22:59 nit: Please rename either num_session_started_ or
Roman Sorokin (ftl) 2014/04/22 08:28:47 Done.
Roman Sorokin (ftl) 2014/04/22 08:28:47 Done.
60 }; 73 };
61 74
62 IN_PROC_BROWSER_TEST_F(CrashRestoreSimpleTest, RestoreSessionForOneUser) { 75 IN_PROC_BROWSER_TEST_F(CrashRestoreSimpleTest, RestoreSessionForOneUser) {
63 UserManager* user_manager = UserManager::Get(); 76 UserManager* user_manager = UserManager::Get();
64 User* user = user_manager->GetActiveUser(); 77 User* user = user_manager->GetActiveUser();
65 ASSERT_TRUE(user); 78 ASSERT_TRUE(user);
66 EXPECT_EQ(kUserId1, user->email()); 79 EXPECT_EQ(kUserId1, user->email());
67 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1), 80 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1),
68 user->username_hash()); 81 user->username_hash());
69 EXPECT_EQ(1UL, user_manager->GetLoggedInUsers().size()); 82 EXPECT_EQ(1UL, user_manager->GetLoggedInUsers().size());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 DISALLOW_COPY_AND_ASSIGN(UserSessionRestoreObserver); 124 DISALLOW_COPY_AND_ASSIGN(UserSessionRestoreObserver);
112 }; 125 };
113 126
114 class CrashRestoreComplexTest : public CrashRestoreSimpleTest { 127 class CrashRestoreComplexTest : public CrashRestoreSimpleTest {
115 protected: 128 protected:
116 CrashRestoreComplexTest() {} 129 CrashRestoreComplexTest() {}
117 virtual ~CrashRestoreComplexTest() {} 130 virtual ~CrashRestoreComplexTest() {}
118 131
119 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 132 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
120 CrashRestoreSimpleTest::SetUpInProcessBrowserTestFixture(); 133 CrashRestoreSimpleTest::SetUpInProcessBrowserTestFixture();
121 session_manager_client_->StartSession(kUserId2); 134 session_manager_client_->StartSession(
122 session_manager_client_->StartSession(kUserId3); 135 kUserId2,
136 base::Bind(&CrashRestoreSimpleTest::OnSessionStarted,
137 base::Unretained(this),
138 kUserId2));
139 ASSERT_EQ(2UL, CrashRestoreSimpleTest::session_started_cnt_);
140 session_manager_client_->StartSession(
141 kUserId3,
142 base::Bind(&CrashRestoreSimpleTest::OnSessionStarted,
143 base::Unretained(this),
144 kUserId3));
145 ASSERT_EQ(3UL, CrashRestoreSimpleTest::session_started_cnt_);
123 } 146 }
124 }; 147 };
125 148
126 IN_PROC_BROWSER_TEST_F(CrashRestoreComplexTest, RestoreSessionForThreeUsers) { 149 IN_PROC_BROWSER_TEST_F(CrashRestoreComplexTest, RestoreSessionForThreeUsers) {
127 { 150 {
128 UserSessionRestoreObserver restore_observer; 151 UserSessionRestoreObserver restore_observer;
129 restore_observer.Wait(); 152 restore_observer.Wait();
130 } 153 }
131
132 UserManager* user_manager = UserManager::Get(); 154 UserManager* user_manager = UserManager::Get();
133 DCHECK(user_manager->UserSessionsRestored()); 155 DCHECK(user_manager->UserSessionsRestored());
134 156
135 // User that is last in the user sessions map becomes active. This behavior 157 // User that is last in the user sessions map becomes active. This behavior
136 // will become better defined once each user gets a separate user desktop. 158 // will become better defined once each user gets a separate user desktop.
137 User* user = user_manager->GetActiveUser(); 159 User* user = user_manager->GetActiveUser();
138 ASSERT_TRUE(user); 160 ASSERT_TRUE(user);
139 EXPECT_EQ(kUserId3, user->email()); 161 EXPECT_EQ(kUserId3, user->email());
140 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId3), 162 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId3),
141 user->username_hash()); 163 user->username_hash());
142 const UserList& users = user_manager->GetLoggedInUsers(); 164 const UserList& users = user_manager->GetLoggedInUsers();
143 ASSERT_EQ(3UL, users.size()); 165 ASSERT_EQ(3UL, users.size());
144 166
145 // User that becomes active moves to the beginning of the list. 167 // User that becomes active moves to the beginning of the list.
146 EXPECT_EQ(kUserId3, users[0]->email()); 168 EXPECT_EQ(kUserId3, users[0]->email());
147 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId3), 169 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId3),
148 users[0]->username_hash()); 170 users[0]->username_hash());
149 EXPECT_EQ(kUserId2, users[1]->email()); 171 EXPECT_EQ(kUserId2, users[1]->email());
150 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId2), 172 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId2),
151 users[1]->username_hash()); 173 users[1]->username_hash());
152 EXPECT_EQ(kUserId1, users[2]->email()); 174 EXPECT_EQ(kUserId1, users[2]->email());
153 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1), 175 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1),
154 users[2]->username_hash()); 176 users[2]->username_hash());
155 } 177 }
156 178
157 } // namespace chromeos 179 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/login/login_utils.cc » ('j') | chrome/browser/chromeos/login/login_utils.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698