1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "content/renderer/media/webrtc/mock_peer_connection_dependency_factory.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/renderer/media/mock_peer_connection_impl.h" 10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "content/renderer/media/webaudio_capturer_source.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/renderer/media/webrtc/webrtc_local_audio_track_adapter.h" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "content/renderer/media/webrtc/webrtc_video_capturer_adapter.h" 137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "content/renderer/media/webrtc_audio_capturer.h" 140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/renderer/media/webrtc_local_audio_track.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/libjingle/source/talk/app/webrtc/mediastreaminterface.h" 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "third_party/libjingle/source/talk/media/base/videocapturer.h" 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "third_party/webrtc/base/scoped_ref_ptr.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using webrtc::AudioSourceInterface; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using webrtc::AudioTrackInterface; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using webrtc::AudioTrackVector; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using webrtc::IceCandidateCollection; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using webrtc::IceCandidateInterface; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using webrtc::MediaStreamInterface; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using webrtc::ObserverInterface; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using webrtc::SessionDescriptionInterface; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using webrtc::VideoRendererInterface; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using webrtc::VideoSourceInterface; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using webrtc::VideoTrackInterface; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using webrtc::VideoTrackVector; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template <class V> 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)static typename V::iterator FindTrack(V* vector, 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& track_id) { 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typename V::iterator it = vector->begin(); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (; it != vector->end(); ++it) { 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if ((*it)->id() == track_id) { 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return it; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochMockMediaStream::MockMediaStream(const std::string& label) : label_(label) {} 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool MockMediaStream::AddTrack(AudioTrackInterface* track) { 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) audio_track_vector_.push_back(track); 51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch NotifyObservers(); 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return true; 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool MockMediaStream::AddTrack(VideoTrackInterface* track) { 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) video_track_vector_.push_back(track); 57effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch NotifyObservers(); 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return true; 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool MockMediaStream::RemoveTrack(AudioTrackInterface* track) { 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AudioTrackVector::iterator it = FindTrack(&audio_track_vector_, 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) track->id()); 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (it == audio_track_vector_.end()) 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) audio_track_vector_.erase(it); 67effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch NotifyObservers(); 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return true; 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool MockMediaStream::RemoveTrack(VideoTrackInterface* track) { 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VideoTrackVector::iterator it = FindTrack(&video_track_vector_, 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) track->id()); 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (it == video_track_vector_.end()) 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return false; 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) video_track_vector_.erase(it); 77effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch NotifyObservers(); 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return true; 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)std::string MockMediaStream::label() const { 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return label_; 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)AudioTrackVector MockMediaStream::GetAudioTracks() { 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return audio_track_vector_; 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)VideoTrackVector MockMediaStream::GetVideoTracks() { 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return video_track_vector_; 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)rtc::scoped_refptr<AudioTrackInterface> MockMediaStream::FindAudioTrack( 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& track_id) { 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) AudioTrackVector::iterator it = FindTrack(&audio_track_vector_, track_id); 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return it == audio_track_vector_.end() ? NULL : *it; 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)rtc::scoped_refptr<VideoTrackInterface> MockMediaStream::FindVideoTrack( 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& track_id) { 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VideoTrackVector::iterator it = FindTrack(&video_track_vector_, track_id); 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return it == video_track_vector_.end() ? NULL : *it; 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void MockMediaStream::RegisterObserver(ObserverInterface* observer) { 106effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch DCHECK(observers_.find(observer) == observers_.end()); 107effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch observers_.insert(observer); 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void MockMediaStream::UnregisterObserver(ObserverInterface* observer) { 111effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ObserverSet::iterator it = observers_.find(observer); 112effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch DCHECK(it != observers_.end()); 113effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch observers_.erase(it); 114effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 115effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 116effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid MockMediaStream::NotifyObservers() { 117effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch for (ObserverSet::iterator it = observers_.begin(); it != observers_.end(); 118effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ++it) { 119effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch (*it)->OnChanged(); 120effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)MockMediaStream::~MockMediaStream() {} 1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 125a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class MockRtcVideoCapturer : public WebRtcVideoCapturerAdapter { 126a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public: 127a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) explicit MockRtcVideoCapturer(bool is_screencast) 128a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) : WebRtcVideoCapturerAdapter(is_screencast), 129a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) number_of_capturered_frames_(0), 130a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) width_(0), 131a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) height_(0) { 132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 134a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void OnFrameCaptured( 135a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const scoped_refptr<media::VideoFrame>& frame) OVERRIDE { 136a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ++number_of_capturered_frames_; 137a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) width_ = frame->visible_rect().width(); 138a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) height_ = frame->visible_rect().height(); 139a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 140a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 141a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int GetLastFrameWidth() const { 142a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return width_; 143a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 144a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 145a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int GetLastFrameHeight() const { 146a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return height_; 147a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 148a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 149a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int GetFrameNum() const { 150a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return number_of_capturered_frames_; 151a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 152a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 153a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private: 154a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int number_of_capturered_frames_; 155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int width_; 156a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int height_; 157a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}; 158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)MockVideoRenderer::MockVideoRenderer() 1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : width_(0), 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) height_(0), 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) num_(0) {} 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)MockVideoRenderer::~MockVideoRenderer() {} 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool MockVideoRenderer::SetSize(int width, int height, int reserved) { 1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) width_ = width; 1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) height_ = height; 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return true; 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool MockVideoRenderer::RenderFrame(const cricket::VideoFrame* frame) { 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ++num_; 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return true; 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)MockAudioSource::MockAudioSource( 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const webrtc::MediaConstraintsInterface* constraints) 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : observer_(NULL), 1805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) state_(MediaSourceInterface::kLive), 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) optional_constraints_(constraints->GetOptional()), 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mandatory_constraints_(constraints->GetMandatory()) { 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)MockAudioSource::~MockAudioSource() {} 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockAudioSource::RegisterObserver(webrtc::ObserverInterface* observer) { 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) observer_ = observer; 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockAudioSource::UnregisterObserver(webrtc::ObserverInterface* observer) { 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DCHECK(observer_ == observer); 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) observer_ = NULL; 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)webrtc::MediaSourceInterface::SourceState MockAudioSource::state() const { 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return state_; 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockVideoSource::MockVideoSource() 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : state_(MediaSourceInterface::kInitializing) { 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockVideoSource::~MockVideoSource() {} 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void MockVideoSource::SetVideoCapturer(cricket::VideoCapturer* capturer) { 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) capturer_.reset(capturer); 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cricket::VideoCapturer* MockVideoSource::GetVideoCapturer() { 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return capturer_.get(); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockVideoSource::AddSink(cricket::VideoRenderer* output) { 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockVideoSource::RemoveSink(cricket::VideoRenderer* output) { 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)cricket::VideoRenderer* MockVideoSource::FrameInput() { 2235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return &renderer_; 22468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 22568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockVideoSource::RegisterObserver(webrtc::ObserverInterface* observer) { 227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) observers_.push_back(observer); 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockVideoSource::UnregisterObserver(webrtc::ObserverInterface* observer) { 231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (std::vector<ObserverInterface*>::iterator it = observers_.begin(); 232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) it != observers_.end(); ++it) { 233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (*it == observer) { 234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) observers_.erase(it); 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) break; 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void MockVideoSource::FireOnChanged() { 241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::vector<ObserverInterface*> observers(observers_); 242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (std::vector<ObserverInterface*>::iterator it = observers.begin(); 243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) it != observers.end(); ++it) { 244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) (*it)->OnChanged(); 245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockVideoSource::SetLive() { 2498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) DCHECK(state_ == MediaSourceInterface::kInitializing || 2508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) state_ == MediaSourceInterface::kLive); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) state_ = MediaSourceInterface::kLive; 252c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FireOnChanged(); 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockVideoSource::SetEnded() { 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_NE(MediaSourceInterface::kEnded, state_); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) state_ = MediaSourceInterface::kEnded; 258c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) FireOnChanged(); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)webrtc::MediaSourceInterface::SourceState MockVideoSource::state() const { 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return state_; 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const cricket::VideoOptions* MockVideoSource::options() const { 2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NOTIMPLEMENTED(); 2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return NULL; 2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 270a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)int MockVideoSource::GetLastFrameWidth() const { 271a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DCHECK(capturer_); 272a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return 273a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static_cast<MockRtcVideoCapturer*>(capturer_.get())->GetLastFrameWidth(); 274a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 275a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 276a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)int MockVideoSource::GetLastFrameHeight() const { 277a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DCHECK(capturer_); 278a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return 279a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static_cast<MockRtcVideoCapturer*>(capturer_.get())->GetLastFrameHeight(); 280a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 281a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 282a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)int MockVideoSource::GetFrameNum() const { 283a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DCHECK(capturer_); 284a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return static_cast<MockRtcVideoCapturer*>(capturer_.get())->GetFrameNum(); 285a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 286a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 287a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochMockWebRtcVideoTrack::MockWebRtcVideoTrack( 2880529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch const std::string& id, 289a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch webrtc::VideoSourceInterface* source) 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : enabled_(false), 2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) id_(id), 292c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) state_(MediaStreamTrackInterface::kLive), 293c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) source_(source), 294a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch observer_(NULL), 295a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch renderer_(NULL) { 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 298a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochMockWebRtcVideoTrack::~MockWebRtcVideoTrack() {} 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 300a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochvoid MockWebRtcVideoTrack::AddRenderer(VideoRendererInterface* renderer) { 301a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch DCHECK(!renderer_); 302a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch renderer_ = renderer; 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochvoid MockWebRtcVideoTrack::RemoveRenderer(VideoRendererInterface* renderer) { 306a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch DCHECK_EQ(renderer_, renderer); 307a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch renderer_ = NULL; 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 310a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochstd::string MockWebRtcVideoTrack::kind() const { 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 312c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return std::string(); 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochstd::string MockWebRtcVideoTrack::id() const { return id_; } 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 317a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochbool MockWebRtcVideoTrack::enabled() const { return enabled_; } 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 319a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochMockWebRtcVideoTrack::TrackState MockWebRtcVideoTrack::state() const { 320c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return state_; 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 323a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochbool MockWebRtcVideoTrack::set_enabled(bool enable) { 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled_ = enable; 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 328a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochbool MockWebRtcVideoTrack::set_state(TrackState new_state) { 329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) state_ = new_state; 330c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (observer_) 331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) observer_->OnChanged(); 332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return true; 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochvoid MockWebRtcVideoTrack::RegisterObserver(ObserverInterface* observer) { 336c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) observer_ = observer; 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 339a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochvoid MockWebRtcVideoTrack::UnregisterObserver(ObserverInterface* observer) { 340c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK(observer_ == observer); 341c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) observer_ = NULL; 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 344a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochVideoSourceInterface* MockWebRtcVideoTrack::GetSource() const { 345868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return source_.get(); 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockSessionDescription : public SessionDescriptionInterface { 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockSessionDescription(const std::string& type, 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& sdp) 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : type_(type), 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sdp_(sdp) { 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~MockSessionDescription() {} 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual cricket::SessionDescription* description() OVERRIDE { 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const cricket::SessionDescription* description() const OVERRIDE { 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string session_id() const OVERRIDE { 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 366c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return std::string(); 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string session_version() const OVERRIDE { 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 370c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return std::string(); 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string type() const OVERRIDE { 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return type_; 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool AddCandidate(const IceCandidateInterface* candidate) OVERRIDE { 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual size_t number_of_mediasections() const OVERRIDE { 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const IceCandidateCollection* candidates( 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t mediasection_index) const OVERRIDE { 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool ToString(std::string* out) const OVERRIDE { 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *out = sdp_; 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string type_; 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string sdp_; 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockIceCandidate : public IceCandidateInterface { 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockIceCandidate(const std::string& sdp_mid, 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int sdp_mline_index, 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& sdp) 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : sdp_mid_(sdp_mid), 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sdp_mline_index_(sdp_mline_index), 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sdp_(sdp) { 4071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Assign an valid address to |candidate_| to pass assert in code. 4081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci candidate_.set_address(rtc::SocketAddress("127.0.0.1", 5000)); 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~MockIceCandidate() {} 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string sdp_mid() const OVERRIDE { 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return sdp_mid_; 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int sdp_mline_index() const OVERRIDE { 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return sdp_mline_index_; 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual const cricket::Candidate& candidate() const OVERRIDE { 4181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return candidate_; 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool ToString(std::string* out) const OVERRIDE { 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *out = sdp_; 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string sdp_mid_; 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int sdp_mline_index_; 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string sdp_; 4291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci cricket::Candidate candidate_; 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 432cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::MockPeerConnectionDependencyFactory() 433cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) : PeerConnectionDependencyFactory(NULL), 4340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch fail_to_create_next_audio_capturer_(false) { 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 437cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::~MockPeerConnectionDependencyFactory() {} 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)scoped_refptr<webrtc::PeerConnectionInterface> 440cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::CreatePeerConnection( 4415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const webrtc::PeerConnectionInterface::RTCConfiguration& config, 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const webrtc::MediaConstraintsInterface* constraints, 443f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebFrame* frame, 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) webrtc::PeerConnectionObserver* observer) { 4455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return new rtc::RefCountedObject<MockPeerConnectionImpl>(this); 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_refptr<webrtc::AudioSourceInterface> 449cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::CreateLocalAudioSource( 4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const webrtc::MediaConstraintsInterface* constraints) { 4512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) last_audio_source_ = 4525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new rtc::RefCountedObject<MockAudioSource>(constraints); 4532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return last_audio_source_; 4542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 456a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)WebRtcVideoCapturerAdapter* 457cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::CreateVideoCapturer( 458a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool is_screen_capture) { 459a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return new MockRtcVideoCapturer(is_screen_capture); 4605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 4615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)scoped_refptr<webrtc::VideoSourceInterface> 463cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::CreateVideoSource( 4645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cricket::VideoCapturer* capturer, 465a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const blink::WebMediaConstraints& constraints) { 4665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) last_video_source_ = new rtc::RefCountedObject<MockVideoSource>(); 4675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) last_video_source_->SetVideoCapturer(capturer); 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return last_video_source_; 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 471d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)scoped_refptr<WebAudioCapturerSource> 472cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::CreateWebAudioSource( 4735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) blink::WebMediaStreamSource* source) { 474bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch return NULL; 4752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_refptr<webrtc::MediaStreamInterface> 478cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::CreateLocalMediaStream( 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& label) { 4805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return new rtc::RefCountedObject<MockMediaStream>(label); 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)scoped_refptr<webrtc::VideoTrackInterface> 484cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::CreateLocalVideoTrack( 4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& id, 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) webrtc::VideoSourceInterface* source) { 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<webrtc::VideoTrackInterface> track( 4885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new rtc::RefCountedObject<MockWebRtcVideoTrack>( 4892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) id, source)); 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return track; 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 493c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)scoped_refptr<webrtc::VideoTrackInterface> 494cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::CreateLocalVideoTrack( 495c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& id, 496c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) cricket::VideoCapturer* capturer) { 497c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_refptr<MockVideoSource> source = 4985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new rtc::RefCountedObject<MockVideoSource>(); 499c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) source->SetVideoCapturer(capturer); 500c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 501a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch return 5025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new rtc::RefCountedObject<MockWebRtcVideoTrack>(id, source.get()); 503c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 504c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SessionDescriptionInterface* 506cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::CreateSessionDescription( 5072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& type, 5082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& sdp, 5092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) webrtc::SdpParseError* error) { 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new MockSessionDescription(type, sdp); 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)webrtc::IceCandidateInterface* 514cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::CreateIceCandidate( 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& sdp_mid, 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int sdp_mline_index, 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& sdp) { 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new MockIceCandidate(sdp_mid, sdp_mline_index, sdp); 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 521bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochscoped_refptr<WebRtcAudioCapturer> 522cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)MockPeerConnectionDependencyFactory::CreateAudioCapturer( 5235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int render_view_id, const StreamDeviceInfo& device_info, 5240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch const blink::WebMediaConstraints& constraints, 5250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch MediaStreamAudioSource* audio_source) { 5260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (fail_to_create_next_audio_capturer_) { 5270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch fail_to_create_next_audio_capturer_ = false; 5280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch return NULL; 5290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 5300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch DCHECK(audio_source); 5315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return WebRtcAudioCapturer::CreateCapturer(-1, device_info, 5320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch constraints, NULL, audio_source); 533bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch} 534bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 535cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void MockPeerConnectionDependencyFactory::StartLocalAudioTrack( 536a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) WebRtcLocalAudioTrack* audio_track) { 5370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch audio_track->Start(); 538a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 539a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 541