Index: mojo/common/message_pump_mojo_unittest.cc |
diff --git a/mojo/common/message_pump_mojo_unittest.cc b/mojo/common/message_pump_mojo_unittest.cc |
index d552942c8c42b7407d3201ed35cd21b83716b4d4..f34013250853b5eb77adc8af0759a799d39ce44f 100644 |
--- a/mojo/common/message_pump_mojo_unittest.cc |
+++ b/mojo/common/message_pump_mojo_unittest.cc |
@@ -47,6 +47,19 @@ class CountingMojoHandler : public MessagePumpMojoHandler { |
DISALLOW_COPY_AND_ASSIGN(CountingMojoHandler); |
}; |
+class CountingObserver : public MessagePumpMojo::Observer { |
+ public: |
+ virtual void WillSignalHandler() override { |
+ will_signal_handler_count++; |
+ } |
+ virtual void DidSignalHandler() override { |
+ did_signal_handler_count++; |
+ } |
+ |
+ int will_signal_handler_count = 0; |
+ int did_signal_handler_count = 0; |
+}; |
+ |
TEST(MessagePumpMojo, RunUntilIdle) { |
base::MessageLoop message_loop(MessagePumpMojo::Create()); |
CountingMojoHandler handler; |
@@ -64,6 +77,36 @@ TEST(MessagePumpMojo, RunUntilIdle) { |
EXPECT_EQ(2, handler.success_count()); |
} |
+TEST(MessagePumpMojo, Observer) { |
+ base::MessageLoop message_loop(MessagePumpMojo::Create()); |
+ |
+ CountingObserver observer; |
+ MessagePumpMojo::current()->AddObserver(&observer); |
+ |
+ CountingMojoHandler handler; |
+ MessagePipe handles; |
+ MessagePumpMojo::current()->AddHandler(&handler, |
+ handles.handle0.get(), |
+ MOJO_HANDLE_SIGNAL_READABLE, |
+ base::TimeTicks()); |
+ WriteMessageRaw( |
+ handles.handle1.get(), NULL, 0, NULL, 0, MOJO_WRITE_MESSAGE_FLAG_NONE); |
+ base::RunLoop run_loop; |
+ run_loop.RunUntilIdle(); |
+ EXPECT_EQ(1, handler.success_count()); |
+ EXPECT_EQ(1, observer.will_signal_handler_count); |
+ EXPECT_EQ(1, observer.did_signal_handler_count); |
+ MessagePumpMojo::current()->RemoveObserver(&observer); |
+ |
+ WriteMessageRaw( |
+ handles.handle1.get(), NULL, 0, NULL, 0, MOJO_WRITE_MESSAGE_FLAG_NONE); |
+ base::RunLoop run_loop2; |
+ run_loop2.RunUntilIdle(); |
+ EXPECT_EQ(2, handler.success_count()); |
+ EXPECT_EQ(1, observer.will_signal_handler_count); |
+ EXPECT_EQ(1, observer.did_signal_handler_count); |
+} |
+ |
TEST(MessagePumpMojo, UnregisterAfterDeadline) { |
base::MessageLoop message_loop(MessagePumpMojo::Create()); |
CountingMojoHandler handler; |