/* * 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. */ #ifndef PC_TEST_FAKE_PEER_CONNECTION_BASE_H_ #define PC_TEST_FAKE_PEER_CONNECTION_BASE_H_ #include #include #include #include #include #include "api/sctp_transport_interface.h" #include "pc/peer_connection_internal.h" namespace webrtc { // Customized PeerConnection fakes can be created by subclassing // FakePeerConnectionBase then overriding the interesting methods. This class // takes care of providing default implementations for all the pure virtual // functions specified in the interfaces. // TODO(nisse): Try to replace this with DummyPeerConnection, from // api/test/ ? class FakePeerConnectionBase : public PeerConnectionInternal { public: // PeerConnectionInterface implementation. rtc::scoped_refptr local_streams() override { return nullptr; } rtc::scoped_refptr remote_streams() override { return nullptr; } bool AddStream(MediaStreamInterface* stream) override { return false; } void RemoveStream(MediaStreamInterface* stream) override {} RTCErrorOr> AddTrack( rtc::scoped_refptr track, const std::vector& stream_ids) override { return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented"); } bool RemoveTrack(RtpSenderInterface* sender) override { return false; } RTCError RemoveTrackNew( rtc::scoped_refptr sender) override { return RTCError(RTCErrorType::UNSUPPORTED_OPERATION); } RTCErrorOr> AddTransceiver( rtc::scoped_refptr track) override { return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented"); } RTCErrorOr> AddTransceiver( rtc::scoped_refptr track, const RtpTransceiverInit& init) override { return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented"); } RTCErrorOr> AddTransceiver( cricket::MediaType media_type) override { return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented"); } RTCErrorOr> AddTransceiver( cricket::MediaType media_type, const RtpTransceiverInit& init) override { return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented"); } rtc::scoped_refptr CreateSender( const std::string& kind, const std::string& stream_id) override { return nullptr; } std::vector> GetSenders() const override { return {}; } std::vector> GetReceivers() const override { return {}; } std::vector> GetTransceivers() const override { return {}; } bool GetStats(StatsObserver* observer, MediaStreamTrackInterface* track, StatsOutputLevel level) override { return false; } void GetStats(RTCStatsCollectorCallback* callback) override {} void GetStats( rtc::scoped_refptr selector, rtc::scoped_refptr callback) override {} void GetStats( rtc::scoped_refptr selector, rtc::scoped_refptr callback) override {} void ClearStatsCache() override {} rtc::scoped_refptr GetSctpTransport() const { return nullptr; } rtc::scoped_refptr CreateDataChannel( const std::string& label, const DataChannelInit* config) override { return nullptr; } const SessionDescriptionInterface* local_description() const override { return nullptr; } const SessionDescriptionInterface* remote_description() const override { return nullptr; } const SessionDescriptionInterface* current_local_description() const override { return nullptr; } const SessionDescriptionInterface* current_remote_description() const override { return nullptr; } const SessionDescriptionInterface* pending_local_description() const override { return nullptr; } const SessionDescriptionInterface* pending_remote_description() const override { return nullptr; } void RestartIce() override {} void CreateOffer(CreateSessionDescriptionObserver* observer, const RTCOfferAnswerOptions& options) override {} void CreateAnswer(CreateSessionDescriptionObserver* observer, const RTCOfferAnswerOptions& options) override {} void SetLocalDescription(SetSessionDescriptionObserver* observer, SessionDescriptionInterface* desc) override {} void SetRemoteDescription(SetSessionDescriptionObserver* observer, SessionDescriptionInterface* desc) override {} void SetRemoteDescription( std::unique_ptr desc, rtc::scoped_refptr observer) override {} RTCConfiguration GetConfiguration() override { return RTCConfiguration(); } RTCError SetConfiguration( const PeerConnectionInterface::RTCConfiguration& config) override { return RTCError(); } bool AddIceCandidate(const IceCandidateInterface* candidate) override { return false; } bool RemoveIceCandidates( const std::vector& candidates) override { return false; } RTCError SetBitrate(const BitrateSettings& bitrate) override { return RTCError(RTCErrorType::UNSUPPORTED_OPERATION, "Not implemented"); } void SetAudioPlayout(bool playout) override {} void SetAudioRecording(bool recording) override {} rtc::scoped_refptr LookupDtlsTransportByMid( const std::string& mid) { return nullptr; } SignalingState signaling_state() override { return SignalingState::kStable; } IceConnectionState ice_connection_state() override { return IceConnectionState::kIceConnectionNew; } IceConnectionState standardized_ice_connection_state() override { return IceConnectionState::kIceConnectionNew; } PeerConnectionState peer_connection_state() override { return PeerConnectionState::kNew; } IceGatheringState ice_gathering_state() override { return IceGatheringState::kIceGatheringNew; } absl::optional can_trickle_ice_candidates() { return absl::nullopt; } bool StartRtcEventLog(std::unique_ptr output, int64_t output_period_ms) override { return false; } bool StartRtcEventLog(std::unique_ptr output) override { return false; } void StopRtcEventLog() override {} void Close() override {} // PeerConnectionInternal implementation. rtc::Thread* network_thread() const override { return nullptr; } rtc::Thread* worker_thread() const override { return nullptr; } rtc::Thread* signaling_thread() const override { return nullptr; } std::string session_id() const override { return ""; } bool initial_offerer() const override { return false; } std::vector< rtc::scoped_refptr>> GetTransceiversInternal() const override { return {}; } sigslot::signal1& SignalRtpDataChannelCreated() override { return SignalRtpDataChannelCreated_; } sigslot::signal1& SignalSctpDataChannelCreated() override { return SignalSctpDataChannelCreated_; } cricket::RtpDataChannel* rtp_data_channel() const override { return nullptr; } absl::optional sctp_transport_name() const override { return absl::nullopt; } std::map GetTransportNamesByMid() const override { return {}; } std::map GetTransportStatsByNames( const std::set& transport_names) override { return {}; } Call::Stats GetCallStats() override { return Call::Stats(); } bool GetLocalCertificate( const std::string& transport_name, rtc::scoped_refptr* certificate) override { return false; } std::unique_ptr GetRemoteSSLCertChain( const std::string& transport_name) override { return nullptr; } bool IceRestartPending(const std::string& content_name) const override { return false; } bool NeedsIceRestart(const std::string& content_name) const override { return false; } bool GetSslRole(const std::string& content_name, rtc::SSLRole* role) override { return false; } protected: sigslot::signal1 SignalRtpDataChannelCreated_; sigslot::signal1 SignalSctpDataChannelCreated_; }; } // namespace webrtc #endif // PC_TEST_FAKE_PEER_CONNECTION_BASE_H_