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}
diff --git a/api/peer_connection_interface.h b/api/peer_connection_interface.h
index 38699ec..ca6baac 100644
--- a/api/peer_connection_interface.h
+++ b/api/peer_connection_interface.h
@@ -1003,8 +1003,6 @@
// 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.
@@ -1075,9 +1073,7 @@
// 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) {
- return true;
- }
+ virtual bool ShouldFireNegotiationNeededEvent(uint32_t event_id) = 0;
virtual PeerConnectionInterface::RTCConfiguration GetConfiguration() = 0;
@@ -1139,7 +1135,7 @@
// Estimation starts when the first RTP packet is sent.
// Estimation will be restarted if already started.
virtual void ReconfigureBandwidthEstimation(
- const BandwidthEstimationSettings& settings) {}
+ const BandwidthEstimationSettings& settings) = 0;
// 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
@@ -1147,12 +1143,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) {}
+ virtual void SetAudioPlayout(bool playout) = 0;
// 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) {}
+ virtual void SetAudioRecording(bool recording) = 0;
// Looks up the DtlsTransport associated with a MID value.
// In the Javascript API, DtlsTransport is a property of a sender, but
@@ -1184,28 +1180,25 @@
// Returns the current state of canTrickleIceCandidates per
// https://w3c.github.io/webrtc-pc/#attributes-1
- virtual absl::optional<bool> can_trickle_ice_candidates() {
- // TODO(crbug.com/708484): Remove default implementation.
- return absl::nullopt;
- }
+ virtual absl::optional<bool> can_trickle_ice_candidates() = 0;
// 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.
- // TODO(hbos): Make pure virtual when implemented by downstream projects.
- virtual void AddAdaptationResource(rtc::scoped_refptr<Resource> resource) {}
+ virtual void AddAdaptationResource(rtc::scoped_refptr<Resource> resource) = 0;
// 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;
@@ -1226,8 +1219,7 @@
//
// Also the only thread on which it's safe to use SessionDescriptionInterface
// pointers.
- // TODO(deadbeef): Make pure virtual when all subclasses implement it.
- virtual rtc::Thread* signaling_thread() const { return nullptr; }
+ virtual rtc::Thread* signaling_thread() const = 0;
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 22a77d7..814d1b1 100644
--- a/api/test/mock_peerconnectioninterface.h
+++ b/api/test/mock_peerconnectioninterface.h
@@ -160,6 +160,10 @@
(std::unique_ptr<SessionDescriptionInterface>,
rtc::scoped_refptr<SetRemoteDescriptionObserverInterface>),
(override));
+ MOCK_METHOD(bool,
+ ShouldFireNegotiationNeededEvent,
+ (uint32_t event_id),
+ (override));
MOCK_METHOD(PeerConnectionInterface::RTCConfiguration,
GetConfiguration,
(),
@@ -195,6 +199,10 @@
(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,
@@ -206,6 +214,7 @@
(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 9e4ed6d..8422f0b 100644
--- a/pc/test/fake_peer_connection_base.h
+++ b/pc/test/fake_peer_connection_base.h
@@ -177,6 +177,8 @@
rtc::scoped_refptr<SetRemoteDescriptionObserverInterface> observer)
override {}
+ bool ShouldFireNegotiationNeededEvent(uint32_t event_id) { return true; }
+
RTCConfiguration GetConfiguration() override { return RTCConfiguration(); }
RTCError SetConfiguration(
@@ -229,6 +231,8 @@
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 b5f47cc..e586008 100644
--- a/pc/test/mock_peer_connection_internal.h
+++ b/pc/test/mock_peer_connection_internal.h
@@ -153,6 +153,10 @@
(std::unique_ptr<SessionDescriptionInterface>,
rtc::scoped_refptr<SetRemoteDescriptionObserverInterface>),
(override));
+ MOCK_METHOD(bool,
+ ShouldFireNegotiationNeededEvent,
+ (uint32_t event_id),
+ (override));
MOCK_METHOD(PeerConnectionInterface::RTCConfiguration,
GetConfiguration,
(),
@@ -192,6 +196,10 @@
(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,