Index: chrome/browser/chromeos/login/crash_restore_browsertest.cc |
diff --git a/chrome/browser/chromeos/login/crash_restore_browsertest.cc b/chrome/browser/chromeos/login/crash_restore_browsertest.cc |
index 8bcaaf5576c09cfdabaff64548010ca59ff3d3a1..e7470c92e96675a952a400586b610e13531c3f6a 100644 |
--- a/chrome/browser/chromeos/login/crash_restore_browsertest.cc |
+++ b/chrome/browser/chromeos/login/crash_restore_browsertest.cc |
@@ -33,7 +33,7 @@ const char kUserId3[] = "user3@example.com"; |
class CrashRestoreSimpleTest : public InProcessBrowserTest { |
protected: |
- CrashRestoreSimpleTest() {} |
+ CrashRestoreSimpleTest() : session_started_count_(0) {} |
virtual ~CrashRestoreSimpleTest() {} |
@@ -53,10 +53,27 @@ class CrashRestoreSimpleTest : public InProcessBrowserTest { |
dbus_thread_manager->SetSessionManagerClient( |
scoped_ptr<SessionManagerClient>(session_manager_client_)); |
DBusThreadManager::SetInstanceForTesting(dbus_thread_manager); |
- session_manager_client_->StartSession(kUserId1); |
+ // We need to create MessageLoop here to process callback from |
+ // session_manager |
+ base::MessageLoop msg_loop; |
+ session_manager_client_->StartSession( |
+ kUserId1, |
+ base::Bind(&CrashRestoreSimpleTest::OnSessionStarted, |
+ base::Unretained(this), |
+ kUserId1)); |
+ base::RunLoop().RunUntilIdle(); |
+ ASSERT_EQ(1, session_started_count_); |
} |
+ public: |
+ void OnSessionStarted(const std::string& user_email, bool success) { |
+ ASSERT_TRUE(success); |
+ ++session_started_count_; |
+ } |
+ |
+ protected: |
FakeSessionManagerClient* session_manager_client_; |
+ int session_started_count_; |
}; |
IN_PROC_BROWSER_TEST_F(CrashRestoreSimpleTest, RestoreSessionForOneUser) { |
@@ -118,8 +135,21 @@ class CrashRestoreComplexTest : public CrashRestoreSimpleTest { |
virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { |
CrashRestoreSimpleTest::SetUpInProcessBrowserTestFixture(); |
- session_manager_client_->StartSession(kUserId2); |
- session_manager_client_->StartSession(kUserId3); |
+ // We need to create MessageLoop here to process callback from |
+ // session_manager |
+ base::MessageLoop msg_loop; |
+ session_manager_client_->StartSession( |
+ kUserId2, |
+ base::Bind(&CrashRestoreSimpleTest::OnSessionStarted, |
+ base::Unretained(this), |
+ kUserId2)); |
+ session_manager_client_->StartSession( |
+ kUserId3, |
+ base::Bind(&CrashRestoreSimpleTest::OnSessionStarted, |
+ base::Unretained(this), |
+ kUserId3)); |
+ base::RunLoop().RunUntilIdle(); |
+ ASSERT_EQ(3, CrashRestoreSimpleTest::session_started_count_); |
} |
}; |