/* * Copyright 2016 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_MOCK_PEERCONNECTION_H_ #define PC_TEST_MOCK_PEERCONNECTION_H_ #include #include #include #include #include "call/call.h" #include "logging/rtc_event_log/rtc_event_log.h" #include "pc/peerconnection.h" #include "rtc_base/thread.h" #include "test/gmock.h" namespace webrtc { // The factory isn't really used; it just satisfies the base PeerConnection. class FakePeerConnectionFactory : public rtc::RefCountedObject { public: explicit FakePeerConnectionFactory( std::unique_ptr media_engine) : rtc::RefCountedObject( rtc::Thread::Current(), rtc::Thread::Current(), rtc::Thread::Current(), std::move(media_engine), std::unique_ptr(), std::unique_ptr()) {} }; class MockPeerConnection : public rtc::RefCountedObject { public: // TODO(nisse): Valid overrides commented out, because the gmock // methods don't use any override declarations, and we want to avoid // warnings from -Winconsistent-missing-override. See // http://crbug.com/428099. explicit MockPeerConnection(PeerConnectionFactory* factory) : rtc::RefCountedObject( factory, std::unique_ptr(), std::unique_ptr()) {} MOCK_METHOD0(local_streams, rtc::scoped_refptr()); MOCK_METHOD0(remote_streams, rtc::scoped_refptr()); MOCK_CONST_METHOD0(GetSenders, std::vector>()); MOCK_CONST_METHOD0(GetReceivers, std::vector>()); MOCK_CONST_METHOD0(sctp_data_channels, const std::vector>&()); MOCK_CONST_METHOD0(voice_channel, cricket::VoiceChannel*()); MOCK_CONST_METHOD0(video_channel, cricket::VideoChannel*()); // Libjingle uses "local" for a outgoing track, and "remote" for a incoming // track. MOCK_METHOD2(GetLocalTrackIdBySsrc, bool(uint32_t, std::string*)); MOCK_METHOD2(GetRemoteTrackIdBySsrc, bool(uint32_t, std::string*)); MOCK_METHOD0(GetCallStats, Call::Stats()); MOCK_METHOD1(GetSessionStats, std::unique_ptr(const ChannelNamePairs&)); MOCK_METHOD2(GetLocalCertificate, bool(const std::string& transport_name, rtc::scoped_refptr* certificate)); // Workaround for gmock's inability to cope with move-only return values. std::unique_ptr GetRemoteSSLCertificate( const std::string& transport_name) /* override */ { return std::unique_ptr( GetRemoteSSLCertificate_ReturnsRawPointer(transport_name)); } MOCK_METHOD1(GetRemoteSSLCertificate_ReturnsRawPointer, rtc::SSLCertificate*(const std::string& transport_name)); }; } // namespace webrtc #endif // PC_TEST_MOCK_PEERCONNECTION_H_