|  | /* | 
|  | *  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 <memory> | 
|  |  | 
|  | #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<webrtc::DataChannelInterface> 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(webrtc::MediaStreamInterface* stream); | 
|  | virtual void OnRemoveStream(webrtc::MediaStreamInterface* stream) {} | 
|  | virtual void OnDataChannel(webrtc::DataChannelInterface* 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<std::string*> SignalOnIceCandidateCreated; | 
|  | sigslot::signal3<const std::string&, | 
|  | int, | 
|  | const std::string&> SignalOnIceCandidateReady; | 
|  | sigslot::signal1<std::string*> SignalOnSdpCreated; | 
|  | sigslot::signal1<const std::string&> SignalOnSdpReady; | 
|  | sigslot::signal1<webrtc::DataChannelInterface*> 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<webrtc::MediaStreamInterface> 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<webrtc::PeerConnectionInterface> peer_connection_; | 
|  | rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> | 
|  | peer_connection_factory_; | 
|  | rtc::scoped_refptr<FakeAudioCaptureModule> fake_audio_capture_module_; | 
|  | std::unique_ptr<webrtc::FakeVideoTrackRenderer> renderer_; | 
|  | }; | 
|  |  | 
|  | #endif  // WEBRTC_API_TEST_PEERCONNECTIONTESTWRAPPER_H_ |