Revved to chromium 7f6805bd9257180e07cb6924ea41bcb76cfa462b refs/remotes/origin/HEAD

filter gyp out of build/landmines.py

filter pepper out of mojo/examples/BUILD.gn

filter html_viewer out of mojo/services/BUILD.gn

filter js out of mojo/BUILD.gn

filter js/bindings out of mojo/public/BUILD.gn

applied patch gpu_media.patch

applied patch cc_strip_video.patch

applied patch ui_test_support.patch

applied patch remove_ipc_deps.patch

applied patch ui_compositor.patch

applied patch net_sql.patch
diff --git a/mojo/common/message_pump_mojo_unittest.cc b/mojo/common/message_pump_mojo_unittest.cc
index d552942..f340132 100644
--- a/mojo/common/message_pump_mojo_unittest.cc
+++ b/mojo/common/message_pump_mojo_unittest.cc
@@ -47,6 +47,19 @@
   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 @@
   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;