IPC::ChannelMojo: Don't supress MOJO_RESULT_FAILED_PRECONDITION

The error should be reported to IPC::Listener as it is a
signal of the dead peer. Without this, the browser cannot
detect renderer crashes.

TEST=browser_tests (with ChannelMojo enabled)
R=viettrungluu@chromium.org,darin@chromium.org
BUG=none

Review URL: https://codereview.chromium.org/453643003

Cr-Commit-Position: refs/heads/master@{#288442}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@288442 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: e5c2775c8bdcc27bcc1651a258a1c60ef55d9f69
diff --git a/ipc/mojo/ipc_channel_mojo_unittest.cc b/ipc/mojo/ipc_channel_mojo_unittest.cc
index 915029d..3157837 100644
--- a/ipc/mojo/ipc_channel_mojo_unittest.cc
+++ b/ipc/mojo/ipc_channel_mojo_unittest.cc
@@ -22,7 +22,8 @@
 
 class ListenerThatExpectsOK : public IPC::Listener {
  public:
-  ListenerThatExpectsOK() {}
+  ListenerThatExpectsOK()
+      : received_ok_(false) {}
 
   virtual ~ListenerThatExpectsOK() {}
 
@@ -31,12 +32,16 @@
     std::string should_be_ok;
     EXPECT_TRUE(iter.ReadString(&should_be_ok));
     EXPECT_EQ(should_be_ok, "OK");
+    received_ok_ = true;
     base::MessageLoop::current()->Quit();
     return true;
   }
 
   virtual void OnChannelError() OVERRIDE {
-    NOTREACHED();
+    // The connection should be healthy while the listener is waiting
+    // message.  An error can occur after that because the peer
+    // process dies.
+    DCHECK(received_ok_);
   }
 
   static void SendOK(IPC::Sender* sender) {
@@ -45,6 +50,9 @@
     message->WriteString(std::string("OK"));
     ASSERT_TRUE(sender->Send(message));
   }
+
+ private:
+  bool received_ok_;
 };
 
 class ListenerThatShouldBeNeverCalled : public IPC::Listener {