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

Unified Diff: mojo/public/cpp/bindings/tests/binding_set_unittest.cc

Issue 2725133002: Mojo: Armed Watchers (Closed)
Patch Set: . Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
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);
}

Powered by Google App Engine
This is Rietveld 408576698