1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_RENDERER_MEDIA_MOCK_PEER_CONNECTION_IMPL_H_ 6 #define CONTENT_RENDERER_MEDIA_MOCK_PEER_CONNECTION_IMPL_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/compiler_specific.h" 12 #include "base/memory/scoped_ptr.h" 13 #include "testing/gmock/include/gmock/gmock.h" 14 #include "third_party/libjingle/source/talk/app/webrtc/peerconnectioninterface.h" 15 16 namespace content { 17 18 class MockMediaStreamDependencyFactory; 19 class MockStreamCollection; 20 21 class MockPeerConnectionImpl : public webrtc::PeerConnectionInterface { 22 public: 23 explicit MockPeerConnectionImpl(MockMediaStreamDependencyFactory* factory); 24 25 // PeerConnectionInterface implementation. 26 virtual talk_base::scoped_refptr<webrtc::StreamCollectionInterface> 27 local_streams() OVERRIDE; 28 virtual talk_base::scoped_refptr<webrtc::StreamCollectionInterface> 29 remote_streams() OVERRIDE; 30 virtual bool AddStream( 31 webrtc::MediaStreamInterface* local_stream, 32 const webrtc::MediaConstraintsInterface* constraints) OVERRIDE; 33 virtual void RemoveStream( 34 webrtc::MediaStreamInterface* local_stream) OVERRIDE; 35 virtual talk_base::scoped_refptr<webrtc::DtmfSenderInterface> 36 CreateDtmfSender(webrtc::AudioTrackInterface* track) OVERRIDE; 37 virtual talk_base::scoped_refptr<webrtc::DataChannelInterface> 38 CreateDataChannel(const std::string& label, 39 const webrtc::DataChannelInit* config) OVERRIDE; 40 41 virtual bool GetStats(webrtc::StatsObserver* observer, 42 webrtc::MediaStreamTrackInterface* track) OVERRIDE; 43 // Set Call this function to make sure next call to GetStats fail. 44 void SetGetStatsResult(bool result) { getstats_result_ = result; } 45 46 virtual SignalingState signaling_state() OVERRIDE { 47 NOTIMPLEMENTED(); 48 return PeerConnectionInterface::kStable; 49 } 50 virtual IceState ice_state() OVERRIDE { 51 NOTIMPLEMENTED(); 52 return PeerConnectionInterface::kIceNew; 53 } 54 virtual IceConnectionState ice_connection_state() OVERRIDE { 55 NOTIMPLEMENTED(); 56 return PeerConnectionInterface::kIceConnectionNew; 57 } 58 virtual IceGatheringState ice_gathering_state() OVERRIDE { 59 NOTIMPLEMENTED(); 60 return PeerConnectionInterface::kIceGatheringNew; 61 } 62 virtual void Close() OVERRIDE { 63 NOTIMPLEMENTED(); 64 } 65 66 virtual const webrtc::SessionDescriptionInterface* local_description() 67 const OVERRIDE; 68 virtual const webrtc::SessionDescriptionInterface* remote_description() 69 const OVERRIDE; 70 71 // JSEP01 APIs 72 virtual void CreateOffer( 73 webrtc::CreateSessionDescriptionObserver* observer, 74 const webrtc::MediaConstraintsInterface* constraints) OVERRIDE; 75 virtual void CreateAnswer( 76 webrtc::CreateSessionDescriptionObserver* observer, 77 const webrtc::MediaConstraintsInterface* constraints) OVERRIDE; 78 MOCK_METHOD2(SetLocalDescription, 79 void(webrtc::SetSessionDescriptionObserver* observer, 80 webrtc::SessionDescriptionInterface* desc)); 81 void SetLocalDescriptionWorker( 82 webrtc::SetSessionDescriptionObserver* observer, 83 webrtc::SessionDescriptionInterface* desc) ; 84 MOCK_METHOD2(SetRemoteDescription, 85 void(webrtc::SetSessionDescriptionObserver* observer, 86 webrtc::SessionDescriptionInterface* desc)); 87 void SetRemoteDescriptionWorker( 88 webrtc::SetSessionDescriptionObserver* observer, 89 webrtc::SessionDescriptionInterface* desc); 90 virtual bool UpdateIce( 91 const IceServers& configuration, 92 const webrtc::MediaConstraintsInterface* constraints) OVERRIDE; 93 virtual bool AddIceCandidate( 94 const webrtc::IceCandidateInterface* candidate) OVERRIDE; 95 96 void AddRemoteStream(webrtc::MediaStreamInterface* stream); 97 98 const std::string& stream_label() const { return stream_label_; } 99 bool hint_audio() const { return hint_audio_; } 100 bool hint_video() const { return hint_video_; } 101 const std::string& description_sdp() const { return description_sdp_; } 102 const std::string& sdp_mid() const { return sdp_mid_; } 103 int sdp_mline_index() const { return sdp_mline_index_; } 104 const std::string& ice_sdp() const { return ice_sdp_; } 105 webrtc::SessionDescriptionInterface* created_session_description() const { 106 return created_sessiondescription_.get(); 107 } 108 static const char kDummyOffer[]; 109 static const char kDummyAnswer[]; 110 111 protected: 112 virtual ~MockPeerConnectionImpl(); 113 114 private: 115 // Used for creating MockSessionDescription. 116 MockMediaStreamDependencyFactory* dependency_factory_; 117 118 std::string stream_label_; 119 talk_base::scoped_refptr<MockStreamCollection> local_streams_; 120 talk_base::scoped_refptr<MockStreamCollection> remote_streams_; 121 scoped_ptr<webrtc::SessionDescriptionInterface> local_desc_; 122 scoped_ptr<webrtc::SessionDescriptionInterface> remote_desc_; 123 scoped_ptr<webrtc::SessionDescriptionInterface> created_sessiondescription_; 124 bool hint_audio_; 125 bool hint_video_; 126 bool getstats_result_; 127 std::string description_sdp_; 128 std::string sdp_mid_; 129 int sdp_mline_index_; 130 std::string ice_sdp_; 131 132 DISALLOW_COPY_AND_ASSIGN(MockPeerConnectionImpl); 133 }; 134 135 } // namespace content 136 137 #endif // CONTENT_RENDERER_MEDIA_MOCK_PEER_CONNECTION_IMPL_H_ 138