OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "remoting/test/fake_port_allocator.h" | 5 #include "remoting/test/fake_port_allocator.h" |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "remoting/protocol/transport_context.h" |
8 #include "remoting/test/fake_network_dispatcher.h" | 9 #include "remoting/test/fake_network_dispatcher.h" |
9 #include "remoting/test/fake_network_manager.h" | 10 #include "remoting/test/fake_network_manager.h" |
10 #include "remoting/test/fake_socket_factory.h" | 11 #include "remoting/test/fake_socket_factory.h" |
11 #include "third_party/webrtc/p2p/client/basicportallocator.h" | 12 #include "third_party/webrtc/p2p/client/basicportallocator.h" |
12 | 13 |
13 namespace remoting { | 14 namespace remoting { |
14 | 15 |
15 namespace { | 16 namespace { |
16 | 17 |
17 class FakePortAllocatorSession : public protocol::PortAllocatorSessionBase { | 18 class FakePortAllocatorSession : public cricket::BasicPortAllocatorSession { |
18 public: | 19 public: |
19 FakePortAllocatorSession( | 20 FakePortAllocatorSession(FakePortAllocator* allocator, |
20 protocol::PortAllocatorBase* allocator, | 21 const std::string& content_name, |
21 const std::string& content_name, | 22 int component, |
22 int component, | 23 const std::string& ice_username_fragment, |
23 const std::string& ice_username_fragment, | 24 const std::string& ice_password); |
24 const std::string& ice_password, | |
25 const std::vector<rtc::SocketAddress>& stun_hosts, | |
26 const std::vector<std::string>& relay_hosts, | |
27 const std::string& relay); | |
28 ~FakePortAllocatorSession() override; | 25 ~FakePortAllocatorSession() override; |
29 | 26 |
30 // protocol::PortAllocatorBase overrides. | |
31 void ConfigReady(cricket::PortConfiguration* config) override; | |
32 void SendSessionRequest(const std::string& host) override; | |
33 | |
34 private: | 27 private: |
35 DISALLOW_COPY_AND_ASSIGN(FakePortAllocatorSession); | 28 DISALLOW_COPY_AND_ASSIGN(FakePortAllocatorSession); |
36 }; | 29 }; |
37 | 30 |
38 FakePortAllocatorSession::FakePortAllocatorSession( | 31 FakePortAllocatorSession::FakePortAllocatorSession( |
39 protocol::PortAllocatorBase* allocator, | 32 FakePortAllocator* allocator, |
40 const std::string& content_name, | 33 const std::string& content_name, |
41 int component, | 34 int component, |
42 const std::string& ice_username_fragment, | 35 const std::string& ice_username_fragment, |
43 const std::string& ice_password, | 36 const std::string& ice_password) |
44 const std::vector<rtc::SocketAddress>& stun_hosts, | 37 : BasicPortAllocatorSession(allocator, |
45 const std::vector<std::string>& relay_hosts, | 38 content_name, |
46 const std::string& relay) | 39 component, |
47 : PortAllocatorSessionBase(allocator, | 40 ice_username_fragment, |
48 content_name, | 41 ice_password) {} |
49 component, | |
50 ice_username_fragment, | |
51 ice_password, | |
52 stun_hosts, | |
53 relay_hosts, | |
54 relay) {} | |
55 | 42 |
56 FakePortAllocatorSession::~FakePortAllocatorSession() {} | 43 FakePortAllocatorSession::~FakePortAllocatorSession() {} |
57 | 44 |
58 void FakePortAllocatorSession::ConfigReady( | 45 } // namespace |
59 cricket::PortConfiguration* config) { | 46 |
60 // Filter out non-UDP relay ports, so that we don't try using TCP. | 47 FakePortAllocator::FakePortAllocator( |
61 for (cricket::PortConfiguration::RelayList::iterator relay = | 48 rtc::NetworkManager* network_manager, |
62 config->relays.begin(); relay != config->relays.end(); ++relay) { | 49 rtc::PacketSocketFactory* socket_factory) |
63 cricket::PortList filtered_ports; | 50 : BasicPortAllocator(network_manager, socket_factory) { |
64 for (cricket::PortList::iterator port = | 51 set_flags(cricket::PORTALLOCATOR_DISABLE_TCP | |
65 relay->ports.begin(); port != relay->ports.end(); ++port) { | 52 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | |
66 if (port->proto == cricket::PROTO_UDP) { | 53 cricket::PORTALLOCATOR_ENABLE_IPV6 | |
67 filtered_ports.push_back(*port); | 54 cricket::PORTALLOCATOR_DISABLE_STUN | |
68 } | 55 cricket::PORTALLOCATOR_DISABLE_RELAY); |
69 } | |
70 relay->ports = filtered_ports; | |
71 } | |
72 cricket::BasicPortAllocatorSession::ConfigReady(config); | |
73 } | 56 } |
74 | 57 |
75 void FakePortAllocatorSession::SendSessionRequest(const std::string& host) { | |
76 ReceiveSessionResponse(std::string()); | |
77 } | |
78 | |
79 } // namespace | |
80 | |
81 FakePortAllocator::FakePortAllocator(rtc::NetworkManager* network_manager, | |
82 FakePacketSocketFactory* socket_factory) | |
83 : PortAllocatorBase(network_manager, socket_factory) {} | |
84 FakePortAllocator::~FakePortAllocator() {} | 58 FakePortAllocator::~FakePortAllocator() {} |
85 | 59 |
86 cricket::PortAllocatorSession* FakePortAllocator::CreateSessionInternal( | 60 cricket::PortAllocatorSession* FakePortAllocator::CreateSessionInternal( |
87 const std::string& content_name, | 61 const std::string& content_name, |
88 int component, | 62 int component, |
89 const std::string& ice_username_fragment, | 63 const std::string& ice_username_fragment, |
90 const std::string& ice_password) { | 64 const std::string& ice_password) { |
91 return new FakePortAllocatorSession( | 65 return new FakePortAllocatorSession(this, content_name, component, |
92 this, content_name, component, ice_username_fragment, ice_password, | 66 ice_username_fragment, ice_password); |
93 stun_hosts(), relay_hosts(), relay_token()); | |
94 } | 67 } |
95 | 68 |
96 FakePortAllocatorFactory::FakePortAllocatorFactory( | 69 FakePortAllocatorFactory::FakePortAllocatorFactory( |
97 scoped_refptr<FakeNetworkDispatcher> fake_network_dispatcher) { | 70 scoped_refptr<FakeNetworkDispatcher> fake_network_dispatcher) { |
98 socket_factory_.reset( | 71 socket_factory_.reset( |
99 new FakePacketSocketFactory(fake_network_dispatcher.get())); | 72 new FakePacketSocketFactory(fake_network_dispatcher.get())); |
100 network_manager_.reset(new FakeNetworkManager(socket_factory_->GetAddress())); | 73 network_manager_.reset(new FakeNetworkManager(socket_factory_->GetAddress())); |
101 } | 74 } |
102 | 75 |
103 FakePortAllocatorFactory::~FakePortAllocatorFactory() {} | 76 FakePortAllocatorFactory::~FakePortAllocatorFactory() {} |
104 | 77 |
105 scoped_ptr<protocol::PortAllocatorBase> | 78 scoped_ptr<cricket::PortAllocator> |
106 FakePortAllocatorFactory::CreatePortAllocator() { | 79 FakePortAllocatorFactory::CreatePortAllocator( |
| 80 scoped_refptr<protocol::TransportContext> transport_context) { |
107 return make_scoped_ptr( | 81 return make_scoped_ptr( |
108 new FakePortAllocator(network_manager_.get(), socket_factory_.get())); | 82 new FakePortAllocator(network_manager_.get(), socket_factory_.get())); |
109 } | 83 } |
110 | 84 |
111 } // namespace remoting | 85 } // namespace remoting |
OLD | NEW |