Revert "rtpsender interface: make pure virtual again"

This reverts commit 021512b76a872b04e803d61f46c740ed363d641b.

Reason for revert: Breaks upstream project. It relies on the default implementation. The CL will be relanded after the migration is done. We will make sure to do it shortly.

Original change's description:
> rtpsender interface: make pure virtual again
>
> after providing default implementations in Chromium tests
>
> BUG=None
>
> Change-Id: I53bf26b3a99416f4005e7df75b9b86dfbf2489cb
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/273100
> Commit-Queue: Philipp Hancke <phancke@microsoft.com>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#37941}

Bug: None
Change-Id: I40f27c36819365fadae32032521f7e11184bee62
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/273484
Owners-Override: Andrey Logvin <landrey@google.com>
Commit-Queue: Andrey Logvin <landrey@google.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Andrey Logvin <landrey@google.com>
Cr-Commit-Position: refs/heads/main@{#37947}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index e9db503..eca66e5 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -208,6 +208,7 @@
     "peer_connection_interface.h",
     "rtp_receiver_interface.cc",
     "rtp_receiver_interface.h",
+    "rtp_sender_interface.cc",
     "rtp_sender_interface.h",
     "rtp_transceiver_interface.cc",
     "rtp_transceiver_interface.h",
diff --git a/api/rtp_sender_interface.cc b/api/rtp_sender_interface.cc
new file mode 100644
index 0000000..57a5a10
--- /dev/null
+++ b/api/rtp_sender_interface.cc
@@ -0,0 +1,36 @@
+/*
+ *  Copyright 2018 The WebRTC Project Authors. All rights reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "api/rtp_sender_interface.h"
+
+namespace webrtc {
+
+void RtpSenderInterface::SetFrameEncryptor(
+    rtc::scoped_refptr<FrameEncryptorInterface> frame_encryptor) {}
+
+rtc::scoped_refptr<FrameEncryptorInterface>
+RtpSenderInterface::GetFrameEncryptor() const {
+  return nullptr;
+}
+
+std::vector<RtpEncodingParameters> RtpSenderInterface::init_send_encodings()
+    const {
+  return {};
+}
+
+rtc::scoped_refptr<DtlsTransportInterface> RtpSenderInterface::dtls_transport()
+    const {
+  return nullptr;
+}
+
+void RtpSenderInterface::SetEncoderToPacketizerFrameTransformer(
+    rtc::scoped_refptr<FrameTransformerInterface> frame_transformer) {}
+
+}  // namespace webrtc
diff --git a/api/rtp_sender_interface.h b/api/rtp_sender_interface.h
index 500bd25..48ea864 100644
--- a/api/rtp_sender_interface.h
+++ b/api/rtp_sender_interface.h
@@ -43,7 +43,8 @@
   // The dtlsTransport attribute exposes the DTLS transport on which the
   // media is sent. It may be null.
   // https://w3c.github.io/webrtc-pc/#dom-rtcrtpsender-transport
-  virtual rtc::scoped_refptr<DtlsTransportInterface> dtls_transport() const = 0;
+  // TODO(https://bugs.webrtc.org/907849) remove default implementation
+  virtual rtc::scoped_refptr<DtlsTransportInterface> dtls_transport() const;
 
   // Returns primary SSRC used by this sender for sending media.
   // Returns 0 if not yet determined.
@@ -66,13 +67,13 @@
   // Sets the IDs of the media streams associated with this sender's track.
   // These are signalled in the SDP so that the remote side can associate
   // tracks.
-  virtual void SetStreams(const std::vector<std::string>& stream_ids) = 0;
+  virtual void SetStreams(const std::vector<std::string>& stream_ids) {}
 
   // Returns the list of encoding parameters that will be applied when the SDP
   // local description is set. These initial encoding parameters can be set by
   // PeerConnection::AddTransceiver, and later updated with Get/SetParameters.
   // TODO(orphis): Make it pure virtual once Chrome has updated
-  virtual std::vector<RtpEncodingParameters> init_send_encodings() const = 0;
+  virtual std::vector<RtpEncodingParameters> init_send_encodings() const;
 
   virtual RtpParameters GetParameters() const = 0;
   // Note that only a subset of the parameters can currently be changed. See
@@ -88,21 +89,20 @@
   // using the user provided encryption mechanism regardless of whether SRTP is
   // enabled or not.
   virtual void SetFrameEncryptor(
-      rtc::scoped_refptr<FrameEncryptorInterface> frame_encryptor) = 0;
+      rtc::scoped_refptr<FrameEncryptorInterface> frame_encryptor);
 
   // Returns a pointer to the frame encryptor set previously by the
   // user. This can be used to update the state of the object.
-  virtual rtc::scoped_refptr<FrameEncryptorInterface> GetFrameEncryptor()
-      const = 0;
+  virtual rtc::scoped_refptr<FrameEncryptorInterface> GetFrameEncryptor() const;
 
   virtual void SetEncoderToPacketizerFrameTransformer(
-      rtc::scoped_refptr<FrameTransformerInterface> frame_transformer) = 0;
+      rtc::scoped_refptr<FrameTransformerInterface> frame_transformer);
 
   // Sets a user defined encoder selector.
   // Overrides selector that is (optionally) provided by VideoEncoderFactory.
   virtual void SetEncoderSelector(
       std::unique_ptr<VideoEncoderFactory::EncoderSelectorInterface>
-          encoder_selector) = 0;
+          encoder_selector) {}
 
  protected:
   ~RtpSenderInterface() override = default;
diff --git a/api/test/mock_rtpsender.h b/api/test/mock_rtpsender.h
index e2351f8..e36eec4 100644
--- a/api/test/mock_rtpsender.h
+++ b/api/test/mock_rtpsender.h
@@ -11,7 +11,6 @@
 #ifndef API_TEST_MOCK_RTPSENDER_H_
 #define API_TEST_MOCK_RTPSENDER_H_
 
-#include <memory>
 #include <string>
 #include <vector>
 
@@ -31,15 +30,10 @@
               track,
               (),
               (const, override));
-  MOCK_METHOD(rtc::scoped_refptr<DtlsTransportInterface>,
-              dtls_transport,
-              (),
-              (const override));
   MOCK_METHOD(uint32_t, ssrc, (), (const, override));
   MOCK_METHOD(cricket::MediaType, media_type, (), (const, override));
   MOCK_METHOD(std::string, id, (), (const, override));
   MOCK_METHOD(std::vector<std::string>, stream_ids, (), (const, override));
-  MOCK_METHOD(void, SetStreams, (const std::vector<std::string>&), (override));
   MOCK_METHOD(std::vector<RtpEncodingParameters>,
               init_send_encodings,
               (),
@@ -50,22 +44,6 @@
               GetDtmfSender,
               (),
               (const, override));
-  MOCK_METHOD(void,
-              SetFrameEncryptor,
-              (rtc::scoped_refptr<FrameEncryptorInterface>),
-              (override));
-  MOCK_METHOD(rtc::scoped_refptr<FrameEncryptorInterface>,
-              GetFrameEncryptor,
-              (),
-              (const, override));
-  MOCK_METHOD(void,
-              SetEncoderToPacketizerFrameTransformer,
-              (rtc::scoped_refptr<FrameTransformerInterface>),
-              (override));
-  MOCK_METHOD(void,
-              SetEncoderSelector,
-              (std::unique_ptr<VideoEncoderFactory::EncoderSelectorInterface>),
-              (override));
 };
 
 static_assert(!std::is_abstract_v<rtc::RefCountedObject<MockRtpSender>>, "");
diff --git a/pc/test/mock_rtp_sender_internal.h b/pc/test/mock_rtp_sender_internal.h
index 5261d47..5abdc16 100644
--- a/pc/test/mock_rtp_sender_internal.h
+++ b/pc/test/mock_rtp_sender_internal.h
@@ -11,7 +11,6 @@
 #ifndef PC_TEST_MOCK_RTP_SENDER_INTERNAL_H_
 #define PC_TEST_MOCK_RTP_SENDER_INTERNAL_H_
 
-#include <memory>
 #include <string>
 #include <vector>
 
@@ -72,14 +71,6 @@
               GetFrameEncryptor,
               (),
               (const, override));
-  MOCK_METHOD(void,
-              SetEncoderToPacketizerFrameTransformer,
-              (rtc::scoped_refptr<FrameTransformerInterface>),
-              (override));
-  MOCK_METHOD(void,
-              SetEncoderSelector,
-              (std::unique_ptr<VideoEncoderFactory::EncoderSelectorInterface>),
-              (override));
 
   // RtpSenderInternal methods.
   MOCK_METHOD1(SetMediaChannel, void(cricket::MediaChannel*));