| 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);
|
| }
|
|
|
|
|