Delete sdp_callbacks.h and .cc
Deletes the helper methods SdpSetObserver and SdpCreateObserver,
replaced with observer classes where used, in peer_scenario_client.cc.
Deletes the class webrtc_sdp_obs_impl::SdpSetObserversInterface, which
indirectly inherits rtc::RefCountInterface twice. Migrates this code
to use rtc::make_ref_counted, and migrates away from deprecated
versions of SetLocalDescription and SetRemoteDescription that use raw
pointers and SetSessionDescriptionObserver.
Bug: webrtc:12701, webrtc:11798
Change-Id: I18ea3fb51f533d7454a6dc75292b1827b1c80ef0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229981
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34843}
diff --git a/test/peer_scenario/BUILD.gn b/test/peer_scenario/BUILD.gn
index 033ef41..a08b4ac 100644
--- a/test/peer_scenario/BUILD.gn
+++ b/test/peer_scenario/BUILD.gn
@@ -18,8 +18,6 @@
"peer_scenario_client.h",
"scenario_connection.cc",
"scenario_connection.h",
- "sdp_callbacks.cc",
- "sdp_callbacks.h",
"signaling_route.cc",
"signaling_route.h",
]
diff --git a/test/peer_scenario/peer_scenario_client.cc b/test/peer_scenario/peer_scenario_client.cc
index 7f3e126..7ff6d41 100644
--- a/test/peer_scenario/peer_scenario_client.cc
+++ b/test/peer_scenario/peer_scenario_client.cc
@@ -13,6 +13,7 @@
#include <memory>
#include <utility>
+#include "absl/memory/memory.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/rtc_event_log/rtc_event_log_factory.h"
@@ -27,7 +28,6 @@
#include "test/fake_decoder.h"
#include "test/fake_vp8_encoder.h"
#include "test/frame_generator_capturer.h"
-#include "test/peer_scenario/sdp_callbacks.h"
namespace webrtc {
namespace test {
@@ -117,6 +117,55 @@
PeerScenarioClient::CallbackHandlers* handlers_;
};
+class LambdaCreateSessionDescriptionObserver
+ : public CreateSessionDescriptionObserver {
+ public:
+ explicit LambdaCreateSessionDescriptionObserver(
+ std::function<void(std::unique_ptr<SessionDescriptionInterface> desc)>
+ on_success)
+ : on_success_(on_success) {}
+ void OnSuccess(SessionDescriptionInterface* desc) override {
+ // Takes ownership of answer, according to CreateSessionDescriptionObserver
+ // convention.
+ on_success_(absl::WrapUnique(desc));
+ }
+ void OnFailure(RTCError error) override {
+ RTC_NOTREACHED() << error.message();
+ }
+
+ private:
+ std::function<void(std::unique_ptr<SessionDescriptionInterface> desc)>
+ on_success_;
+};
+
+class LambdaSetLocalDescriptionObserver
+ : public SetLocalDescriptionObserverInterface {
+ public:
+ explicit LambdaSetLocalDescriptionObserver(
+ std::function<void(RTCError)> on_complete)
+ : on_complete_(on_complete) {}
+ void OnSetLocalDescriptionComplete(RTCError error) override {
+ on_complete_(error);
+ }
+
+ private:
+ std::function<void(RTCError)> on_complete_;
+};
+
+class LambdaSetRemoteDescriptionObserver
+ : public SetRemoteDescriptionObserverInterface {
+ public:
+ explicit LambdaSetRemoteDescriptionObserver(
+ std::function<void(RTCError)> on_complete)
+ : on_complete_(on_complete) {}
+ void OnSetRemoteDescriptionComplete(RTCError error) override {
+ on_complete_(error);
+ }
+
+ private:
+ std::function<void(RTCError)> on_complete_;
+};
+
class FakeVideoEncoderFactory : public VideoEncoderFactory {
public:
FakeVideoEncoderFactory(Clock* clock) : clock_(clock) {}
@@ -297,18 +346,21 @@
std::function<void(std::string)> offer_handler) {
RTC_DCHECK_RUN_ON(signaling_thread_);
peer_connection_->CreateOffer(
- SdpCreateObserver([=](SessionDescriptionInterface* offer) {
- RTC_DCHECK_RUN_ON(signaling_thread_);
- if (munge_offer) {
- munge_offer(offer);
- }
- std::string sdp_offer;
- RTC_CHECK(offer->ToString(&sdp_offer));
- peer_connection_->SetLocalDescription(
- SdpSetObserver(
- [sdp_offer, offer_handler]() { offer_handler(sdp_offer); }),
- offer);
- }),
+ rtc::make_ref_counted<LambdaCreateSessionDescriptionObserver>(
+ [=](std::unique_ptr<SessionDescriptionInterface> offer) {
+ RTC_DCHECK_RUN_ON(signaling_thread_);
+ if (munge_offer) {
+ munge_offer(offer.get());
+ }
+ std::string sdp_offer;
+ RTC_CHECK(offer->ToString(&sdp_offer));
+ peer_connection_->SetLocalDescription(
+ std::move(offer),
+ rtc::make_ref_counted<LambdaSetLocalDescriptionObserver>(
+ [sdp_offer, offer_handler](RTCError) {
+ offer_handler(sdp_offer);
+ }));
+ }),
PeerConnectionInterface::RTCOfferAnswerOptions());
}
@@ -324,20 +376,22 @@
RTC_DCHECK_RUN_ON(signaling_thread_);
peer_connection_->SetRemoteDescription(
CreateSessionDescription(SdpType::kOffer, remote_offer),
- SdpSetObserver([=]() {
+ rtc::make_ref_counted<LambdaSetRemoteDescriptionObserver>([=](RTCError) {
RTC_DCHECK_RUN_ON(signaling_thread_);
peer_connection_->CreateAnswer(
- SdpCreateObserver([=](SessionDescriptionInterface* answer) {
- RTC_DCHECK_RUN_ON(signaling_thread_);
- std::string sdp_answer;
- answer->ToString(&sdp_answer);
- RTC_LOG(LS_INFO) << sdp_answer;
- peer_connection_->SetLocalDescription(
- SdpSetObserver([answer_handler, sdp_answer]() {
- answer_handler(sdp_answer);
- }),
- answer);
- }),
+ rtc::make_ref_counted<LambdaCreateSessionDescriptionObserver>(
+ [=](std::unique_ptr<SessionDescriptionInterface> answer) {
+ RTC_DCHECK_RUN_ON(signaling_thread_);
+ std::string sdp_answer;
+ answer->ToString(&sdp_answer);
+ RTC_LOG(LS_INFO) << sdp_answer;
+ peer_connection_->SetLocalDescription(
+ std::move(answer),
+ rtc::make_ref_counted<LambdaSetLocalDescriptionObserver>(
+ [answer_handler, sdp_answer](RTCError) {
+ answer_handler(sdp_answer);
+ }));
+ }),
PeerConnectionInterface::RTCOfferAnswerOptions());
}));
}
@@ -353,10 +407,12 @@
RTC_DCHECK_RUN_ON(signaling_thread_);
peer_connection_->SetRemoteDescription(
CreateSessionDescription(SdpType::kAnswer, remote_answer),
- SdpSetObserver([remote_answer, done_handler] {
- auto answer = CreateSessionDescription(SdpType::kAnswer, remote_answer);
- done_handler(*answer);
- }));
+ rtc::make_ref_counted<LambdaSetRemoteDescriptionObserver>(
+ [remote_answer, done_handler](RTCError) {
+ auto answer =
+ CreateSessionDescription(SdpType::kAnswer, remote_answer);
+ done_handler(*answer);
+ }));
}
void PeerScenarioClient::AddIceCandidate(
diff --git a/test/peer_scenario/sdp_callbacks.cc b/test/peer_scenario/sdp_callbacks.cc
deleted file mode 100644
index 0208c64..0000000
--- a/test/peer_scenario/sdp_callbacks.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2019 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 "test/peer_scenario/sdp_callbacks.h"
-
-#include <utility>
-
-namespace webrtc {
-namespace test {
-
-webrtc_sdp_obs_impl::SdpSetObserversInterface* SdpSetObserver(
- std::function<void()> callback) {
- class SdpSetObserver : public webrtc_sdp_obs_impl::SdpSetObserversInterface {
- public:
- explicit SdpSetObserver(std::function<void()> callback)
- : callback_(std::move(callback)) {}
- void OnSuccess() override { callback_(); }
- void OnFailure(RTCError error) override {
- RTC_NOTREACHED() << error.message();
- }
- void OnSetRemoteDescriptionComplete(RTCError error) override {
- RTC_CHECK(error.ok()) << error.message();
- callback_();
- }
- std::function<void()> callback_;
- };
- return new rtc::RefCountedObject<SdpSetObserver>(std::move(callback));
-}
-
-CreateSessionDescriptionObserver* SdpCreateObserver(
- std::function<void(SessionDescriptionInterface*)> callback) {
- class SdpCreateObserver : public CreateSessionDescriptionObserver {
- public:
- explicit SdpCreateObserver(decltype(callback) callback)
- : callback_(std::move(callback)) {}
- void OnSuccess(SessionDescriptionInterface* desc) override {
- callback_(desc);
- }
- void OnFailure(RTCError error) override {
- RTC_NOTREACHED() << error.message();
- }
- decltype(callback) callback_;
- };
- return new rtc::RefCountedObject<SdpCreateObserver>(std::move(callback));
-}
-
-} // namespace test
-} // namespace webrtc
diff --git a/test/peer_scenario/sdp_callbacks.h b/test/peer_scenario/sdp_callbacks.h
deleted file mode 100644
index 413a467..0000000
--- a/test/peer_scenario/sdp_callbacks.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2019 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.
- */
-#ifndef TEST_PEER_SCENARIO_SDP_CALLBACKS_H_
-#define TEST_PEER_SCENARIO_SDP_CALLBACKS_H_
-
-#include "api/peer_connection_interface.h"
-
-// Helpers to allow usage of std::function/lambdas to observe SDP operation in
-// the peer conenction API. As they only have handlers for sucess, failures will
-// cause a crash.
-
-namespace webrtc {
-namespace test {
-namespace webrtc_sdp_obs_impl {
-class SdpSetObserversInterface : public SetSessionDescriptionObserver,
- public SetRemoteDescriptionObserverInterface {
-};
-} // namespace webrtc_sdp_obs_impl
-
-// Implementation of both SetSessionDescriptionObserver and
-// SetRemoteDescriptionObserverInterface for use with SDP set operations. This
-// return a raw owning pointer as it's only intended to be used as input to
-// PeerConnection API which will take ownership.
-webrtc_sdp_obs_impl::SdpSetObserversInterface* SdpSetObserver(
- std::function<void()> callback);
-
-// Implementation of CreateSessionDescriptionObserver for use with SDP create
-// operations. This return a raw owning pointer as it's only intended to be used
-// as input to PeerConnection API which will take ownership.
-CreateSessionDescriptionObserver* SdpCreateObserver(
- std::function<void(SessionDescriptionInterface*)> callback);
-
-} // namespace test
-} // namespace webrtc
-
-#endif // TEST_PEER_SCENARIO_SDP_CALLBACKS_H_