Implement OpenChannel() on test media transports and make it pure virtual.

Bug: webrtc:9719
Change-Id: I9ec89fca7d4555f31b5192980f193b58d99e3b71
Reviewed-on: https://webrtc-review.googlesource.com/c/125100
Reviewed-by: Peter Slatala <psla@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26910}
diff --git a/api/media_transport_interface.cc b/api/media_transport_interface.cc
index c89ce0b..20bbe26 100644
--- a/api/media_transport_interface.cc
+++ b/api/media_transport_interface.cc
@@ -97,11 +97,4 @@
 void MediaTransportInterface::SetAllocatedBitrateLimits(
     const MediaTransportAllocatedBitrateLimits& limits) {}
 
-// TODO(mellem):  Delete when all implementations support it.
-RTCError MediaTransportInterface::OpenChannel(int channel_id) {
-  // NB: This must return OK to avoid breaking existing implementations, which
-  // do not require calling OpenChannel.
-  return RTCError::OK();
-}
-
 }  // namespace webrtc
diff --git a/api/media_transport_interface.h b/api/media_transport_interface.h
index 69e0eba..d333bec 100644
--- a/api/media_transport_interface.h
+++ b/api/media_transport_interface.h
@@ -305,8 +305,7 @@
 
   // Opens a data |channel_id| for sending.  May return an error if the
   // specified |channel_id| is unusable.  Must be called before |SendData|.
-  // TODO(mellem):  Make pure virtual when all implementations support it.
-  virtual RTCError OpenChannel(int channel_id);
+  virtual RTCError OpenChannel(int channel_id) = 0;
 
   // Sends a data buffer to the remote endpoint using the given send parameters.
   // |buffer| may not be larger than 256 KiB. Returns an error if the send
diff --git a/api/test/fake_media_transport.h b/api/test/fake_media_transport.h
index 6f87dfc..bdf5616 100644
--- a/api/test/fake_media_transport.h
+++ b/api/test/fake_media_transport.h
@@ -55,6 +55,8 @@
     return settings_.pre_shared_key;
   }
 
+  RTCError OpenChannel(int channel_id) override { return RTCError::OK(); }
+
   RTCError SendData(int channel_id,
                     const SendDataParams& params,
                     const rtc::CopyOnWriteBuffer& buffer) override {
diff --git a/api/test/loopback_media_transport.cc b/api/test/loopback_media_transport.cc
index c466170..490fc46 100644
--- a/api/test/loopback_media_transport.cc
+++ b/api/test/loopback_media_transport.cc
@@ -67,6 +67,10 @@
     wrapped_->SetMediaTransportStateCallback(callback);
   }
 
+  RTCError OpenChannel(int channel_id) override {
+    return wrapped_->OpenChannel(channel_id);
+  }
+
   RTCError SendData(int channel_id,
                     const SendDataParams& params,
                     const rtc::CopyOnWriteBuffer& buffer) override {
@@ -265,6 +269,12 @@
   });
 }
 
+RTCError MediaTransportPair::LoopbackMediaTransport::OpenChannel(
+    int channel_id) {
+  // No-op.  No need to open channels for the loopback.
+  return RTCError::OK();
+}
+
 RTCError MediaTransportPair::LoopbackMediaTransport::SendData(
     int channel_id,
     const SendDataParams& params,
diff --git a/api/test/loopback_media_transport.h b/api/test/loopback_media_transport.h
index bcfdb63..280dc9a 100644
--- a/api/test/loopback_media_transport.h
+++ b/api/test/loopback_media_transport.h
@@ -113,6 +113,8 @@
     void SetMediaTransportStateCallback(
         MediaTransportStateCallback* callback) override;
 
+    RTCError OpenChannel(int channel_id) override;
+
     RTCError SendData(int channel_id,
                       const SendDataParams& params,
                       const rtc::CopyOnWriteBuffer& buffer) override;