/* * Copyright 2013 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 WEBRTC_API_TEST_PEERCONNECTIONTESTWRAPPER_H_ #define WEBRTC_API_TEST_PEERCONNECTIONTESTWRAPPER_H_ #include #include "webrtc/api/peerconnectioninterface.h" #include "webrtc/api/test/fakeaudiocapturemodule.h" #include "webrtc/api/test/fakeconstraints.h" #include "webrtc/api/test/fakevideotrackrenderer.h" #include "webrtc/base/sigslot.h" class PeerConnectionTestWrapper : public webrtc::PeerConnectionObserver, public webrtc::CreateSessionDescriptionObserver, public sigslot::has_slots<> { public: static void Connect(PeerConnectionTestWrapper* caller, PeerConnectionTestWrapper* callee); PeerConnectionTestWrapper(const std::string& name, rtc::Thread* network_thread, rtc::Thread* worker_thread); virtual ~PeerConnectionTestWrapper(); bool CreatePc(const webrtc::MediaConstraintsInterface* constraints); rtc::scoped_refptr CreateDataChannel( const std::string& label, const webrtc::DataChannelInit& init); // Implements PeerConnectionObserver. virtual void OnSignalingChange( webrtc::PeerConnectionInterface::SignalingState new_state) {} virtual void OnStateChange( webrtc::PeerConnectionObserver::StateType state_changed) {} virtual void OnAddStream( rtc::scoped_refptr stream); virtual void OnRemoveStream( rtc::scoped_refptr stream) {} virtual void OnDataChannel( rtc::scoped_refptr data_channel); virtual void OnRenegotiationNeeded() {} virtual void OnIceConnectionChange( webrtc::PeerConnectionInterface::IceConnectionState new_state) {} virtual void OnIceGatheringChange( webrtc::PeerConnectionInterface::IceGatheringState new_state) {} virtual void OnIceCandidate(const webrtc::IceCandidateInterface* candidate); virtual void OnIceComplete() {} // Implements CreateSessionDescriptionObserver. virtual void OnSuccess(webrtc::SessionDescriptionInterface* desc); virtual void OnFailure(const std::string& error) {} void CreateOffer(const webrtc::MediaConstraintsInterface* constraints); void CreateAnswer(const webrtc::MediaConstraintsInterface* constraints); void ReceiveOfferSdp(const std::string& sdp); void ReceiveAnswerSdp(const std::string& sdp); void AddIceCandidate(const std::string& sdp_mid, int sdp_mline_index, const std::string& candidate); void WaitForCallEstablished(); void WaitForConnection(); void WaitForAudio(); void WaitForVideo(); void GetAndAddUserMedia( bool audio, const webrtc::FakeConstraints& audio_constraints, bool video, const webrtc::FakeConstraints& video_constraints); // sigslots sigslot::signal1 SignalOnIceCandidateCreated; sigslot::signal3 SignalOnIceCandidateReady; sigslot::signal1 SignalOnSdpCreated; sigslot::signal1 SignalOnSdpReady; sigslot::signal1 SignalOnDataChannel; private: void SetLocalDescription(const std::string& type, const std::string& sdp); void SetRemoteDescription(const std::string& type, const std::string& sdp); bool CheckForConnection(); bool CheckForAudio(); bool CheckForVideo(); rtc::scoped_refptr GetUserMedia( bool audio, const webrtc::FakeConstraints& audio_constraints, bool video, const webrtc::FakeConstraints& video_constraints); std::string name_; rtc::Thread* const network_thread_; rtc::Thread* const worker_thread_; rtc::scoped_refptr peer_connection_; rtc::scoped_refptr peer_connection_factory_; rtc::scoped_refptr fake_audio_capture_module_; std::unique_ptr renderer_; }; #endif // WEBRTC_API_TEST_PEERCONNECTIONTESTWRAPPER_H_