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

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 comments and rebase 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
« no previous file with comments | « no previous file | chrome/browser/chromeos/login/login_utils.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_count_(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 // We need to create MessageLoop here to process callback from
57 // session_manager
58 base::MessageLoop msg_loop;
59 session_manager_client_->StartSession(
60 kUserId1,
61 base::Bind(&CrashRestoreSimpleTest::OnSessionStarted,
62 base::Unretained(this),
63 kUserId1));
64 base::RunLoop().RunUntilIdle();
65 ASSERT_EQ(1, session_started_count_);
57 } 66 }
58 67
68 public:
69 void OnSessionStarted(const std::string& user_email, bool success) {
70 ASSERT_TRUE(success);
71 ++session_started_count_;
72 }
73
74 protected:
59 FakeSessionManagerClient* session_manager_client_; 75 FakeSessionManagerClient* session_manager_client_;
76 int session_started_count_;
60 }; 77 };
61 78
62 IN_PROC_BROWSER_TEST_F(CrashRestoreSimpleTest, RestoreSessionForOneUser) { 79 IN_PROC_BROWSER_TEST_F(CrashRestoreSimpleTest, RestoreSessionForOneUser) {
63 UserManager* user_manager = UserManager::Get(); 80 UserManager* user_manager = UserManager::Get();
64 User* user = user_manager->GetActiveUser(); 81 User* user = user_manager->GetActiveUser();
65 ASSERT_TRUE(user); 82 ASSERT_TRUE(user);
66 EXPECT_EQ(kUserId1, user->email()); 83 EXPECT_EQ(kUserId1, user->email());
67 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1), 84 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1),
68 user->username_hash()); 85 user->username_hash());
69 EXPECT_EQ(1UL, user_manager->GetLoggedInUsers().size()); 86 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); 128 DISALLOW_COPY_AND_ASSIGN(UserSessionRestoreObserver);
112 }; 129 };
113 130
114 class CrashRestoreComplexTest : public CrashRestoreSimpleTest { 131 class CrashRestoreComplexTest : public CrashRestoreSimpleTest {
115 protected: 132 protected:
116 CrashRestoreComplexTest() {} 133 CrashRestoreComplexTest() {}
117 virtual ~CrashRestoreComplexTest() {} 134 virtual ~CrashRestoreComplexTest() {}
118 135
119 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 136 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
120 CrashRestoreSimpleTest::SetUpInProcessBrowserTestFixture(); 137 CrashRestoreSimpleTest::SetUpInProcessBrowserTestFixture();
121 session_manager_client_->StartSession(kUserId2); 138 // We need to create MessageLoop here to process callback from
122 session_manager_client_->StartSession(kUserId3); 139 // session_manager
140 base::MessageLoop msg_loop;
141 session_manager_client_->StartSession(
142 kUserId2,
143 base::Bind(&CrashRestoreSimpleTest::OnSessionStarted,
144 base::Unretained(this),
145 kUserId2));
146 session_manager_client_->StartSession(
147 kUserId3,
148 base::Bind(&CrashRestoreSimpleTest::OnSessionStarted,
149 base::Unretained(this),
150 kUserId3));
151 base::RunLoop().RunUntilIdle();
152 ASSERT_EQ(3, CrashRestoreSimpleTest::session_started_count_);
123 } 153 }
124 }; 154 };
125 155
126 IN_PROC_BROWSER_TEST_F(CrashRestoreComplexTest, RestoreSessionForThreeUsers) { 156 IN_PROC_BROWSER_TEST_F(CrashRestoreComplexTest, RestoreSessionForThreeUsers) {
127 { 157 {
128 UserSessionRestoreObserver restore_observer; 158 UserSessionRestoreObserver restore_observer;
129 restore_observer.Wait(); 159 restore_observer.Wait();
130 } 160 }
131 161
132 UserManager* user_manager = UserManager::Get(); 162 UserManager* user_manager = UserManager::Get();
(...skipping 15 matching lines...) Expand all
148 users[0]->username_hash()); 178 users[0]->username_hash());
149 EXPECT_EQ(kUserId2, users[1]->email()); 179 EXPECT_EQ(kUserId2, users[1]->email());
150 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId2), 180 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId2),
151 users[1]->username_hash()); 181 users[1]->username_hash());
152 EXPECT_EQ(kUserId1, users[2]->email()); 182 EXPECT_EQ(kUserId1, users[2]->email());
153 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1), 183 EXPECT_EQ(CryptohomeClient::GetStubSanitizedUsername(kUserId1),
154 users[2]->username_hash()); 184 users[2]->username_hash());
155 } 185 }
156 186
157 } // namespace chromeos 187 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/login/login_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698