Revert "Make PeerConnectionInteface methods pure virtual."

This reverts commit bff68580b5e575457f9334cd2ee1275f72fa9507.

Reason for revert: Breaks roll into Chromium.

Example https://ci.chromium.org/ui/p/chromium/builders/try/linux-rel/1714596/overview and https://chromium-review.googlesource.com/c/chromium/src/+/5316782.

Original change's description:
> Make PeerConnectionInteface methods pure virtual.
>
> Bug: none
> Change-Id: I64fc23f5159bc6a5cd83c0b00b292641f4976513
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/340143
> Commit-Queue: Per Kjellander <perkj@webrtc.org>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#41782}

Bug: none
Change-Id: I477d27d33ac2bcf98ed51c3da356605ed9afb6da
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/340323
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Owners-Override: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41790}
diff --git a/api/peer_connection_interface.h b/api/peer_connection_interface.h
index ca6baac..38699ec 100644
--- a/api/peer_connection_interface.h
+++ b/api/peer_connection_interface.h
@@ -1003,6 +1003,8 @@
   // for negotiation and subsequent CreateOffer() calls will act as if
   // RTCOfferAnswerOptions::ice_restart is true.
   // https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-restartice
+  // TODO(hbos): Remove default implementation when downstream projects
+  // implement this.
   virtual void RestartIce() = 0;
 
   // Create a new offer.
@@ -1073,7 +1075,9 @@
   // sure that even if there was a delay (e.g. due to a PostTask) between the
   // event being generated and the time of firing, the Operations Chain is empty
   // and the event is still valid to be fired.
-  virtual bool ShouldFireNegotiationNeededEvent(uint32_t event_id) = 0;
+  virtual bool ShouldFireNegotiationNeededEvent(uint32_t event_id) {
+    return true;
+  }
 
   virtual PeerConnectionInterface::RTCConfiguration GetConfiguration() = 0;
 
@@ -1135,7 +1139,7 @@
   // Estimation starts when the first RTP packet is sent.
   // Estimation will be restarted if already started.
   virtual void ReconfigureBandwidthEstimation(
-      const BandwidthEstimationSettings& settings) = 0;
+      const BandwidthEstimationSettings& settings) {}
 
   // Enable/disable playout of received audio streams. Enabled by default. Note
   // that even if playout is enabled, streams will only be played out if the
@@ -1143,12 +1147,12 @@
   // playout of the underlying audio device but starts a task which will poll
   // for audio data every 10ms to ensure that audio processing happens and the
   // audio statistics are updated.
-  virtual void SetAudioPlayout(bool playout) = 0;
+  virtual void SetAudioPlayout(bool playout) {}
 
   // Enable/disable recording of transmitted audio streams. Enabled by default.
   // Note that even if recording is enabled, streams will only be recorded if
   // the appropriate SDP is also applied.
-  virtual void SetAudioRecording(bool recording) = 0;
+  virtual void SetAudioRecording(bool recording) {}
 
   // Looks up the DtlsTransport associated with a MID value.
   // In the Javascript API, DtlsTransport is a property of a sender, but
@@ -1180,25 +1184,28 @@
 
   // Returns the current state of canTrickleIceCandidates per
   // https://w3c.github.io/webrtc-pc/#attributes-1
-  virtual absl::optional<bool> can_trickle_ice_candidates() = 0;
+  virtual absl::optional<bool> can_trickle_ice_candidates() {
+    // TODO(crbug.com/708484): Remove default implementation.
+    return absl::nullopt;
+  }
 
   // When a resource is overused, the PeerConnection will try to reduce the load
   // on the sysem, for example by reducing the resolution or frame rate of
   // encoded streams. The Resource API allows injecting platform-specific usage
   // measurements. The conditions to trigger kOveruse or kUnderuse are up to the
   // implementation.
-  virtual void AddAdaptationResource(rtc::scoped_refptr<Resource> resource) = 0;
+  // TODO(hbos): Make pure virtual when implemented by downstream projects.
+  virtual void AddAdaptationResource(rtc::scoped_refptr<Resource> resource) {}
 
   // Start RtcEventLog using an existing output-sink. Takes ownership of
-  // `output` and passes it on to Call, which will take the ownership. If
-  // the operation fails the output will be closed and deallocated. The
-  // event log will send serialized events to the output object every
-  // `output_period_ms`. Applications using the event log should generally
-  // make their own trade-off regarding the output period. A long period is
-  // generally more efficient, with potential drawbacks being more bursty
-  // thread usage, and more events lost in case the application crashes. If
-  // the `output_period_ms` argument is omitted, webrtc selects a default
-  // deemed to be workable in most cases.
+  // `output` and passes it on to Call, which will take the ownership. If the
+  // operation fails the output will be closed and deallocated. The event log
+  // will send serialized events to the output object every `output_period_ms`.
+  // Applications using the event log should generally make their own trade-off
+  // regarding the output period. A long period is generally more efficient,
+  // with potential drawbacks being more bursty thread usage, and more events
+  // lost in case the application crashes. If the `output_period_ms` argument is
+  // omitted, webrtc selects a default deemed to be workable in most cases.
   virtual bool StartRtcEventLog(std::unique_ptr<RtcEventLogOutput> output,
                                 int64_t output_period_ms) = 0;
   virtual bool StartRtcEventLog(std::unique_ptr<RtcEventLogOutput> output) = 0;
@@ -1219,7 +1226,8 @@
   //
   // Also the only thread on which it's safe to use SessionDescriptionInterface
   // pointers.
-  virtual rtc::Thread* signaling_thread() const = 0;
+  // TODO(deadbeef): Make pure virtual when all subclasses implement it.
+  virtual rtc::Thread* signaling_thread() const { return nullptr; }
 
  protected:
   // Dtor protected as objects shouldn't be deleted via this interface.
diff --git a/api/test/mock_peerconnectioninterface.h b/api/test/mock_peerconnectioninterface.h
index 814d1b1..22a77d7 100644
--- a/api/test/mock_peerconnectioninterface.h
+++ b/api/test/mock_peerconnectioninterface.h
@@ -160,10 +160,6 @@
               (std::unique_ptr<SessionDescriptionInterface>,
                rtc::scoped_refptr<SetRemoteDescriptionObserverInterface>),
               (override));
-  MOCK_METHOD(bool,
-              ShouldFireNegotiationNeededEvent,
-              (uint32_t event_id),
-              (override));
   MOCK_METHOD(PeerConnectionInterface::RTCConfiguration,
               GetConfiguration,
               (),
@@ -199,10 +195,6 @@
               (override));
   MOCK_METHOD(PeerConnectionState, peer_connection_state, (), (override));
   MOCK_METHOD(IceGatheringState, ice_gathering_state, (), (override));
-  MOCK_METHOD(void,
-              AddAdaptationResource,
-              (rtc::scoped_refptr<Resource>),
-              (override));
   MOCK_METHOD(absl::optional<bool>, can_trickle_ice_candidates, (), (override));
   MOCK_METHOD(bool,
               StartRtcEventLog,
@@ -214,7 +206,6 @@
               (override));
   MOCK_METHOD(void, StopRtcEventLog, (), (override));
   MOCK_METHOD(void, Close, (), (override));
-  MOCK_METHOD(rtc::Thread*, signaling_thread, (), (const override));
 };
 
 static_assert(
diff --git a/pc/test/fake_peer_connection_base.h b/pc/test/fake_peer_connection_base.h
index 8422f0b..9e4ed6d 100644
--- a/pc/test/fake_peer_connection_base.h
+++ b/pc/test/fake_peer_connection_base.h
@@ -177,8 +177,6 @@
       rtc::scoped_refptr<SetRemoteDescriptionObserverInterface> observer)
       override {}
 
-  bool ShouldFireNegotiationNeededEvent(uint32_t event_id) { return true; }
-
   RTCConfiguration GetConfiguration() override { return RTCConfiguration(); }
 
   RTCError SetConfiguration(
@@ -231,8 +229,6 @@
 
   absl::optional<bool> can_trickle_ice_candidates() { return absl::nullopt; }
 
-  void AddAdaptationResource(rtc::scoped_refptr<Resource> resource) {}
-
   bool StartRtcEventLog(std::unique_ptr<RtcEventLogOutput> output,
                         int64_t output_period_ms) override {
     return false;
diff --git a/pc/test/mock_peer_connection_internal.h b/pc/test/mock_peer_connection_internal.h
index e586008..b5f47cc 100644
--- a/pc/test/mock_peer_connection_internal.h
+++ b/pc/test/mock_peer_connection_internal.h
@@ -153,10 +153,6 @@
               (std::unique_ptr<SessionDescriptionInterface>,
                rtc::scoped_refptr<SetRemoteDescriptionObserverInterface>),
               (override));
-  MOCK_METHOD(bool,
-              ShouldFireNegotiationNeededEvent,
-              (uint32_t event_id),
-              (override));
   MOCK_METHOD(PeerConnectionInterface::RTCConfiguration,
               GetConfiguration,
               (),
@@ -196,10 +192,6 @@
               (override));
   MOCK_METHOD(PeerConnectionState, peer_connection_state, (), (override));
   MOCK_METHOD(IceGatheringState, ice_gathering_state, (), (override));
-  MOCK_METHOD(void,
-              AddAdaptationResource,
-              (rtc::scoped_refptr<Resource>),
-              (override));
   MOCK_METHOD(absl::optional<bool>, can_trickle_ice_candidates, (), (override));
   MOCK_METHOD(bool,
               StartRtcEventLog,