1*d9f75844SAndroid Build Coastguard Worker /* 2*d9f75844SAndroid Build Coastguard Worker * Copyright (c) 2019 The WebRTC project authors. All Rights Reserved. 3*d9f75844SAndroid Build Coastguard Worker * 4*d9f75844SAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license 5*d9f75844SAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source 6*d9f75844SAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found 7*d9f75844SAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may 8*d9f75844SAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree. 9*d9f75844SAndroid Build Coastguard Worker */ 10*d9f75844SAndroid Build Coastguard Worker #ifndef TEST_PEER_SCENARIO_SCENARIO_CONNECTION_H_ 11*d9f75844SAndroid Build Coastguard Worker #define TEST_PEER_SCENARIO_SCENARIO_CONNECTION_H_ 12*d9f75844SAndroid Build Coastguard Worker 13*d9f75844SAndroid Build Coastguard Worker #include <functional> 14*d9f75844SAndroid Build Coastguard Worker #include <memory> 15*d9f75844SAndroid Build Coastguard Worker #include <string> 16*d9f75844SAndroid Build Coastguard Worker #include <vector> 17*d9f75844SAndroid Build Coastguard Worker 18*d9f75844SAndroid Build Coastguard Worker #include "api/candidate.h" 19*d9f75844SAndroid Build Coastguard Worker #include "api/jsep.h" 20*d9f75844SAndroid Build Coastguard Worker #include "p2p/base/transport_description.h" 21*d9f75844SAndroid Build Coastguard Worker #include "test/network/network_emulation_manager.h" 22*d9f75844SAndroid Build Coastguard Worker #include "test/scoped_key_value_config.h" 23*d9f75844SAndroid Build Coastguard Worker 24*d9f75844SAndroid Build Coastguard Worker namespace webrtc { 25*d9f75844SAndroid Build Coastguard Worker 26*d9f75844SAndroid Build Coastguard Worker // ScenarioIceConnection provides the transport level functionality of a 27*d9f75844SAndroid Build Coastguard Worker // PeerConnection for use in peer connection scenario tests. This allows 28*d9f75844SAndroid Build Coastguard Worker // implementing custom server side behavior in tests. 29*d9f75844SAndroid Build Coastguard Worker class ScenarioIceConnection { 30*d9f75844SAndroid Build Coastguard Worker public: 31*d9f75844SAndroid Build Coastguard Worker class IceConnectionObserver { 32*d9f75844SAndroid Build Coastguard Worker public: 33*d9f75844SAndroid Build Coastguard Worker // Called on network thread. 34*d9f75844SAndroid Build Coastguard Worker virtual void OnPacketReceived(rtc::CopyOnWriteBuffer packet) = 0; 35*d9f75844SAndroid Build Coastguard Worker // Called on signaling thread. 36*d9f75844SAndroid Build Coastguard Worker virtual void OnIceCandidates( 37*d9f75844SAndroid Build Coastguard Worker const std::string& mid, 38*d9f75844SAndroid Build Coastguard Worker const std::vector<cricket::Candidate>& candidates) = 0; 39*d9f75844SAndroid Build Coastguard Worker 40*d9f75844SAndroid Build Coastguard Worker protected: 41*d9f75844SAndroid Build Coastguard Worker ~IceConnectionObserver() = default; 42*d9f75844SAndroid Build Coastguard Worker }; 43*d9f75844SAndroid Build Coastguard Worker static std::unique_ptr<ScenarioIceConnection> Create( 44*d9f75844SAndroid Build Coastguard Worker test::NetworkEmulationManagerImpl* net, 45*d9f75844SAndroid Build Coastguard Worker IceConnectionObserver* observer); 46*d9f75844SAndroid Build Coastguard Worker 47*d9f75844SAndroid Build Coastguard Worker virtual ~ScenarioIceConnection() = default; 48*d9f75844SAndroid Build Coastguard Worker 49*d9f75844SAndroid Build Coastguard Worker // Posts tasks to send packets to network thread. 50*d9f75844SAndroid Build Coastguard Worker virtual void SendRtpPacket(rtc::ArrayView<const uint8_t> packet_view) = 0; 51*d9f75844SAndroid Build Coastguard Worker virtual void SendRtcpPacket(rtc::ArrayView<const uint8_t> packet_view) = 0; 52*d9f75844SAndroid Build Coastguard Worker 53*d9f75844SAndroid Build Coastguard Worker // Used for ICE configuration, called on signaling thread. 54*d9f75844SAndroid Build Coastguard Worker virtual void SetRemoteSdp(SdpType type, const std::string& remote_sdp) = 0; 55*d9f75844SAndroid Build Coastguard Worker virtual void SetLocalSdp(SdpType type, const std::string& local_sdp) = 0; 56*d9f75844SAndroid Build Coastguard Worker 57*d9f75844SAndroid Build Coastguard Worker virtual EmulatedEndpoint* endpoint() = 0; 58*d9f75844SAndroid Build Coastguard Worker virtual const cricket::TransportDescription& transport_description() 59*d9f75844SAndroid Build Coastguard Worker const = 0; 60*d9f75844SAndroid Build Coastguard Worker 61*d9f75844SAndroid Build Coastguard Worker webrtc::test::ScopedKeyValueConfig field_trials; 62*d9f75844SAndroid Build Coastguard Worker }; 63*d9f75844SAndroid Build Coastguard Worker 64*d9f75844SAndroid Build Coastguard Worker } // namespace webrtc 65*d9f75844SAndroid Build Coastguard Worker 66*d9f75844SAndroid Build Coastguard Worker #endif // TEST_PEER_SCENARIO_SCENARIO_CONNECTION_H_ 67