Index: mojo/public/cpp/bindings/tests/binding_set_unittest.cc |
diff --git a/mojo/public/cpp/bindings/tests/binding_set_unittest.cc b/mojo/public/cpp/bindings/tests/binding_set_unittest.cc |
index 07acfbebe00df09c52a2e5d2f11c7ea3468fae6a..8cf7c868980de537d1ed45f80a6598bdb64f0c19 100644 |
--- a/mojo/public/cpp/bindings/tests/binding_set_unittest.cc |
+++ b/mojo/public/cpp/bindings/tests/binding_set_unittest.cc |
@@ -352,11 +352,22 @@ TEST_F(BindingSetTest, AssociatedBindingSetConnectionErrorWithReason) { |
class PingInstanceCounter : public PingService { |
public: |
- PingInstanceCounter() { ++instance_count; } |
- ~PingInstanceCounter() override { --instance_count; } |
+ explicit PingInstanceCounter( |
+ const base::Closure& destruction_callback = base::Closure()) |
+ : destruction_callback_(destruction_callback) { |
+ ++instance_count; |
+ } |
+ |
+ ~PingInstanceCounter() override { |
+ --instance_count; |
+ if (destruction_callback_) |
+ destruction_callback_.Run(); |
+ } |
void Ping(const PingCallback& callback) override {} |
+ const base::Closure destruction_callback_; |
+ |
static int instance_count; |
}; |
int PingInstanceCounter::instance_count = 0; |
@@ -378,20 +389,23 @@ TEST_F(BindingSetTest, StrongBinding_Destructor) { |
} |
TEST_F(BindingSetTest, StrongBinding_ConnectionError) { |
+ base::RunLoop loop_a, loop_b; |
PingServicePtr ping_a, ping_b; |
StrongBindingSet<PingService> bindings; |
- bindings.AddBinding(base::MakeUnique<PingInstanceCounter>(), |
- mojo::MakeRequest(&ping_a)); |
- bindings.AddBinding(base::MakeUnique<PingInstanceCounter>(), |
- mojo::MakeRequest(&ping_b)); |
+ bindings.AddBinding( |
+ base::MakeUnique<PingInstanceCounter>(loop_a.QuitClosure()), |
+ mojo::MakeRequest(&ping_a)); |
+ bindings.AddBinding( |
+ base::MakeUnique<PingInstanceCounter>(loop_b.QuitClosure()), |
+ mojo::MakeRequest(&ping_b)); |
EXPECT_EQ(2, PingInstanceCounter::instance_count); |
ping_a.reset(); |
- base::RunLoop().RunUntilIdle(); |
+ loop_a.Run(); |
EXPECT_EQ(1, PingInstanceCounter::instance_count); |
ping_b.reset(); |
- base::RunLoop().RunUntilIdle(); |
+ loop_b.Run(); |
EXPECT_EQ(0, PingInstanceCounter::instance_count); |
} |