mojo-ipcz: Driver transports

Implements the mojo-ipcz driver transport on top of a lightly tweaked
variation of each platform's existing Channel implementation in Mojo.

Bug: 1299283
Change-Id: I7e6277477cda4d23a18d950f65624ce33b8d7ce2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3810676
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Ken Rockot <rockot@google.com>
Cr-Commit-Position: refs/heads/main@{#1035255}
NOKEYCHECK=True
GitOrigin-RevId: 36d44a5766247372307a54f4ded06f8b41fcf96f
diff --git a/src/connect_test.cc b/src/connect_test.cc
index 787db90..10d4df5 100644
--- a/src/connect_test.cc
+++ b/src/connect_test.cc
@@ -189,6 +189,13 @@
                                  std::size(kBadMessage), nullptr, 0,
                                  IPCZ_NO_FLAGS, nullptr));
 
+  auto ignore_activity =
+      [](IpczHandle, const void*, size_t, const IpczDriverHandle*, size_t,
+         IpczTransportActivityFlags, const void*) { return IPCZ_RESULT_OK; };
+  EXPECT_EQ(IPCZ_RESULT_OK, GetDriver().ActivateTransport(
+                                transports.theirs, IPCZ_INVALID_HANDLE,
+                                ignore_activity, IPCZ_NO_FLAGS, nullptr));
+
   // Now refer our imaginary other node using our end of the transport. The
   // broker should reject the referral and we should eventually observe
   // disconnection of our initial portal to the referred node.
@@ -198,6 +205,9 @@
                                IPCZ_CONNECT_NODE_SHARE_BROKER, nullptr, &p));
   EXPECT_EQ(IPCZ_RESULT_OK, WaitForConditionFlags(p, IPCZ_TRAP_PEER_CLOSED));
   CloseAll({b, p});
+
+  EXPECT_EQ(IPCZ_RESULT_OK, GetDriver().DeactivateTransport(
+                                transports.theirs, IPCZ_NO_FLAGS, nullptr));
   EXPECT_EQ(IPCZ_RESULT_OK,
             GetDriver().Close(transports.theirs, IPCZ_NO_FLAGS, nullptr));
 }