Index: dbus/signal_sender_verification_unittest.cc |
diff --git a/dbus/signal_sender_verification_unittest.cc b/dbus/signal_sender_verification_unittest.cc |
index 5179fffd5e2aeeb860395530dbcf388ebf7abad2..56276584c9ce926d88900de04aadd0c0d1549b26 100644 |
--- a/dbus/signal_sender_verification_unittest.cc |
+++ b/dbus/signal_sender_verification_unittest.cc |
@@ -42,6 +42,7 @@ class SignalSenderVerificationTest : public testing::Test { |
ASSERT_TRUE(test_service_->StartService()); |
ASSERT_TRUE(test_service_->WaitUntilServiceIsStarted()); |
ASSERT_TRUE(test_service_->HasDBusThread()); |
+ ASSERT_TRUE(test_service_->HasOwnership()); |
// Same setup for the second TestService. This service should not have the |
// ownership of the name at this point. |
@@ -49,6 +50,7 @@ class SignalSenderVerificationTest : public testing::Test { |
ASSERT_TRUE(test_service2_->StartService()); |
ASSERT_TRUE(test_service2_->WaitUntilServiceIsStarted()); |
ASSERT_TRUE(test_service2_->HasDBusThread()); |
+ ASSERT_FALSE(test_service2_->HasOwnership()); |
// Create the client, using the D-Bus thread. |
dbus::Bus::Options bus_options; |
@@ -75,6 +77,14 @@ class SignalSenderVerificationTest : public testing::Test { |
message_loop_.Run(); |
} |
+ void OnOwnership(bool expected, bool success) { |
+ ASSERT_EQ(expected, success); |
+ message_loop_.PostTask( |
+ FROM_HERE, |
+ base::Bind(&SignalSenderVerificationTest::QuitMessageLoop, |
+ base::Unretained(this))); |
+ } |
+ |
virtual void TearDown() { |
bus_->ShutdownOnDBusThreadAndBlock(); |
@@ -115,6 +125,10 @@ class SignalSenderVerificationTest : public testing::Test { |
message_loop_.Run(); |
} |
+ void QuitMessageLoop() { |
+ message_loop_.Quit(); |
+ } |
+ |
MessageLoop message_loop_; |
scoped_ptr<base::Thread> dbus_thread_; |
scoped_refptr<dbus::Bus> bus_; |
@@ -169,7 +183,15 @@ TEST_F(SignalSenderVerificationTest, TestOwnerChanged) { |
// Release and aquire the name ownership. |
test_service_->ShutdownAndBlock(); |
- test_service2_->RequestOwnership(); |
+ // It takes some time for D-Bus to free the ownership of "TestService". |
+ base::PlatformThread::Sleep(TestTimeouts::action_timeout()); |
satorux1
2012/11/07 01:42:25
Sleep should be avoided. Can we monitor the owners
Haruki Sato
2012/11/12 04:59:43
Thank you for the advice!
Replaced with NameOwnerC
|
+ test_service2_->RequestOwnership( |
+ base::Bind(&SignalSenderVerificationTest::OnOwnership, |
+ base::Unretained(this), |
+ true)); |
+ // OnOwnership will PostTask to quit the message loop. |
+ message_loop_.Run(); |
+ ASSERT_TRUE(test_service2_->HasOwnership()); |
// Now the second service owns the name. |
const char kNewMessage[] = "hello, new world"; |