Delete the default implementations of MediaTransportInterface methods.

This change deletes the default implementations of state and data
channel methods (SetMediaTransportStateCallback, SendData, CloseChannel,
and SetDataSink).  It adds stub implementations to LoopbackMediaTransport
and FakeMediaTransport.

Bug: webrtc:9719
Change-Id: I49b7780c055b552330546b460c2e79ce8df81833
Reviewed-on: https://webrtc-review.googlesource.com/c/108940
Commit-Queue: Bjorn Mellem <mellem@webrtc.org>
Reviewed-by: Anton Sukhanov <sukhanov@webrtc.org>
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25457}
diff --git a/api/media_transport_interface.cc b/api/media_transport_interface.cc
index a97b789..cb2fdab 100644
--- a/api/media_transport_interface.cc
+++ b/api/media_transport_interface.cc
@@ -85,19 +85,6 @@
 
 SendDataParams::SendDataParams() = default;
 
-RTCError MediaTransportInterface::SendData(
-    int channel_id,
-    const SendDataParams& params,
-    const rtc::CopyOnWriteBuffer& buffer) {
-  RTC_NOTREACHED();
-  return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented");
-}
-
-RTCError MediaTransportInterface::CloseChannel(int channel_id) {
-  RTC_NOTREACHED();
-  return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented");
-}
-
 RTCErrorOr<std::unique_ptr<MediaTransportInterface>>
 MediaTransportFactory::CreateMediaTransport(
     rtc::PacketTransportInternal* packet_transport,
diff --git a/api/media_transport_interface.h b/api/media_transport_interface.h
index e0e7453..4eb55c4 100644
--- a/api/media_transport_interface.h
+++ b/api/media_transport_interface.h
@@ -336,29 +336,25 @@
   // callback must be unregistered by setting it to nullptr.
   // A newly registered callback will be called with the current state.
   // Media transport does not invoke this callback concurrently.
-  // TODO(mellem): Make this pure virtual once all implementations support it.
   virtual void SetMediaTransportStateCallback(
-      MediaTransportStateCallback* callback) {}
+      MediaTransportStateCallback* callback) = 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
   // fails.
-  // TODO(mellem): Make this pure virtual once all implementations support it.
   virtual RTCError SendData(int channel_id,
                             const SendDataParams& params,
-                            const rtc::CopyOnWriteBuffer& buffer);
+                            const rtc::CopyOnWriteBuffer& buffer) = 0;
 
   // Closes |channel_id| gracefully.  Returns an error if |channel_id| is not
   // open.  Data sent after the closing procedure begins will not be
   // transmitted. The channel becomes closed after pending data is transmitted.
-  // TODO(mellem): Make this pure virtual once all implementations support it.
-  virtual RTCError CloseChannel(int channel_id);
+  virtual RTCError CloseChannel(int channel_id) = 0;
 
   // Sets a sink for data messages and channel state callbacks. Before media
   // transport is destroyed, the sink must be unregistered by setting it to
   // nullptr.
-  // TODO(mellem): Make this pure virtual once all implementations support it.
-  virtual void SetDataSink(DataChannelSink* sink) {}
+  virtual void SetDataSink(DataChannelSink* sink) = 0;
 
   // TODO(sukhanov): RtcEventLogs.
 };
diff --git a/api/test/fake_media_transport.h b/api/test/fake_media_transport.h
index 5609126..1ef7c1f 100644
--- a/api/test/fake_media_transport.h
+++ b/api/test/fake_media_transport.h
@@ -57,6 +57,19 @@
   void SetTargetTransferRateObserver(
       webrtc::TargetTransferRateObserver* observer) override {}
 
+  void SetMediaTransportStateCallback(
+      MediaTransportStateCallback* callback) override {}
+
+  RTCError SendData(int channel_id,
+                    const SendDataParams& params,
+                    const rtc::CopyOnWriteBuffer& buffer) override {
+    return RTCError::OK();
+  }
+
+  RTCError CloseChannel(int channel_id) override { return RTCError::OK(); }
+
+  void SetDataSink(DataChannelSink* sink) override {}
+
  private:
   const MediaTransportSettings settings_;
 };
diff --git a/api/test/loopback_media_transport.h b/api/test/loopback_media_transport.h
index 3195f97..9ce50a7 100644
--- a/api/test/loopback_media_transport.h
+++ b/api/test/loopback_media_transport.h
@@ -64,6 +64,21 @@
     void SetTargetTransferRateObserver(
         webrtc::TargetTransferRateObserver* observer) override {}
 
+    void SetMediaTransportStateCallback(
+        MediaTransportStateCallback* callback) override {}
+
+    RTCError SendData(int channel_id,
+                      const SendDataParams& params,
+                      const rtc::CopyOnWriteBuffer& buffer) override {
+      return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented");
+    }
+
+    RTCError CloseChannel(int channel_id) override {
+      return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented");
+    }
+
+    void SetDataSink(DataChannelSink* sink) override {}
+
    private:
     void OnData(uint64_t channel_id, MediaTransportEncodedAudioFrame frame) {
       if (sink_) {