| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2013 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #ifndef WEBRTC_API_TEST_FAKEDATACHANNELPROVIDER_H_ | 11 #ifndef WEBRTC_API_TEST_FAKEDATACHANNELPROVIDER_H_ |
| 12 #define WEBRTC_API_TEST_FAKEDATACHANNELPROVIDER_H_ | 12 #define WEBRTC_API_TEST_FAKEDATACHANNELPROVIDER_H_ |
| 13 | 13 |
| 14 #include "webrtc/api/datachannel.h" | 14 #include "webrtc/api/datachannel.h" |
| 15 #include "webrtc/base/checks.h" |
| 15 | 16 |
| 16 class FakeDataChannelProvider : public webrtc::DataChannelProviderInterface { | 17 class FakeDataChannelProvider : public webrtc::DataChannelProviderInterface { |
| 17 public: | 18 public: |
| 18 FakeDataChannelProvider() | 19 FakeDataChannelProvider() |
| 19 : send_blocked_(false), | 20 : send_blocked_(false), |
| 20 transport_available_(false), | 21 transport_available_(false), |
| 21 ready_to_send_(false), | 22 ready_to_send_(false), |
| 22 transport_error_(false) {} | 23 transport_error_(false) {} |
| 23 virtual ~FakeDataChannelProvider() {} | 24 virtual ~FakeDataChannelProvider() {} |
| 24 | 25 |
| 25 bool SendData(const cricket::SendDataParams& params, | 26 bool SendData(const cricket::SendDataParams& params, |
| 26 const rtc::CopyOnWriteBuffer& payload, | 27 const rtc::CopyOnWriteBuffer& payload, |
| 27 cricket::SendDataResult* result) override { | 28 cricket::SendDataResult* result) override { |
| 28 ASSERT(ready_to_send_ && transport_available_); | 29 RTC_CHECK(ready_to_send_ && transport_available_); |
| 29 if (send_blocked_) { | 30 if (send_blocked_) { |
| 30 *result = cricket::SDR_BLOCK; | 31 *result = cricket::SDR_BLOCK; |
| 31 return false; | 32 return false; |
| 32 } | 33 } |
| 33 | 34 |
| 34 if (transport_error_ || payload.size() == 0) { | 35 if (transport_error_ || payload.size() == 0) { |
| 35 *result = cricket::SDR_ERROR; | 36 *result = cricket::SDR_ERROR; |
| 36 return false; | 37 return false; |
| 37 } | 38 } |
| 38 | 39 |
| 39 last_send_data_params_ = params; | 40 last_send_data_params_ = params; |
| 40 return true; | 41 return true; |
| 41 } | 42 } |
| 42 | 43 |
| 43 bool ConnectDataChannel(webrtc::DataChannel* data_channel) override { | 44 bool ConnectDataChannel(webrtc::DataChannel* data_channel) override { |
| 44 ASSERT(connected_channels_.find(data_channel) == connected_channels_.end()); | 45 RTC_CHECK(connected_channels_.find(data_channel) == |
| 46 connected_channels_.end()); |
| 45 if (!transport_available_) { | 47 if (!transport_available_) { |
| 46 return false; | 48 return false; |
| 47 } | 49 } |
| 48 LOG(LS_INFO) << "DataChannel connected " << data_channel; | 50 LOG(LS_INFO) << "DataChannel connected " << data_channel; |
| 49 connected_channels_.insert(data_channel); | 51 connected_channels_.insert(data_channel); |
| 50 return true; | 52 return true; |
| 51 } | 53 } |
| 52 | 54 |
| 53 void DisconnectDataChannel(webrtc::DataChannel* data_channel) override { | 55 void DisconnectDataChannel(webrtc::DataChannel* data_channel) override { |
| 54 ASSERT(connected_channels_.find(data_channel) != connected_channels_.end()); | 56 RTC_CHECK(connected_channels_.find(data_channel) != |
| 57 connected_channels_.end()); |
| 55 LOG(LS_INFO) << "DataChannel disconnected " << data_channel; | 58 LOG(LS_INFO) << "DataChannel disconnected " << data_channel; |
| 56 connected_channels_.erase(data_channel); | 59 connected_channels_.erase(data_channel); |
| 57 } | 60 } |
| 58 | 61 |
| 59 void AddSctpDataStream(int sid) override { | 62 void AddSctpDataStream(int sid) override { |
| 60 ASSERT(sid >= 0); | 63 RTC_CHECK(sid >= 0); |
| 61 if (!transport_available_) { | 64 if (!transport_available_) { |
| 62 return; | 65 return; |
| 63 } | 66 } |
| 64 send_ssrcs_.insert(sid); | 67 send_ssrcs_.insert(sid); |
| 65 recv_ssrcs_.insert(sid); | 68 recv_ssrcs_.insert(sid); |
| 66 } | 69 } |
| 67 | 70 |
| 68 void RemoveSctpDataStream(int sid) override { | 71 void RemoveSctpDataStream(int sid) override { |
| 69 ASSERT(sid >= 0); | 72 RTC_CHECK(sid >= 0); |
| 70 send_ssrcs_.erase(sid); | 73 send_ssrcs_.erase(sid); |
| 71 recv_ssrcs_.erase(sid); | 74 recv_ssrcs_.erase(sid); |
| 72 } | 75 } |
| 73 | 76 |
| 74 bool ReadyToSendData() const override { return ready_to_send_; } | 77 bool ReadyToSendData() const override { return ready_to_send_; } |
| 75 | 78 |
| 76 // Set true to emulate the SCTP stream being blocked by congestion control. | 79 // Set true to emulate the SCTP stream being blocked by congestion control. |
| 77 void set_send_blocked(bool blocked) { | 80 void set_send_blocked(bool blocked) { |
| 78 send_blocked_ = blocked; | 81 send_blocked_ = blocked; |
| 79 if (!blocked) { | 82 if (!blocked) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 92 | 95 |
| 93 // Set true to emulate the transport channel creation, e.g. after | 96 // Set true to emulate the transport channel creation, e.g. after |
| 94 // setLocalDescription/setRemoteDescription called with data content. | 97 // setLocalDescription/setRemoteDescription called with data content. |
| 95 void set_transport_available(bool available) { | 98 void set_transport_available(bool available) { |
| 96 transport_available_ = available; | 99 transport_available_ = available; |
| 97 } | 100 } |
| 98 | 101 |
| 99 // Set true to emulate the transport ReadyToSendData signal when the transport | 102 // Set true to emulate the transport ReadyToSendData signal when the transport |
| 100 // becomes writable for the first time. | 103 // becomes writable for the first time. |
| 101 void set_ready_to_send(bool ready) { | 104 void set_ready_to_send(bool ready) { |
| 102 ASSERT(transport_available_); | 105 RTC_CHECK(transport_available_); |
| 103 ready_to_send_ = ready; | 106 ready_to_send_ = ready; |
| 104 if (ready) { | 107 if (ready) { |
| 105 std::set<webrtc::DataChannel*>::iterator it; | 108 std::set<webrtc::DataChannel*>::iterator it; |
| 106 for (it = connected_channels_.begin(); | 109 for (it = connected_channels_.begin(); |
| 107 it != connected_channels_.end(); | 110 it != connected_channels_.end(); |
| 108 ++it) { | 111 ++it) { |
| 109 (*it)->OnChannelReady(true); | 112 (*it)->OnChannelReady(true); |
| 110 } | 113 } |
| 111 } | 114 } |
| 112 } | 115 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 135 cricket::SendDataParams last_send_data_params_; | 138 cricket::SendDataParams last_send_data_params_; |
| 136 bool send_blocked_; | 139 bool send_blocked_; |
| 137 bool transport_available_; | 140 bool transport_available_; |
| 138 bool ready_to_send_; | 141 bool ready_to_send_; |
| 139 bool transport_error_; | 142 bool transport_error_; |
| 140 std::set<webrtc::DataChannel*> connected_channels_; | 143 std::set<webrtc::DataChannel*> connected_channels_; |
| 141 std::set<uint32_t> send_ssrcs_; | 144 std::set<uint32_t> send_ssrcs_; |
| 142 std::set<uint32_t> recv_ssrcs_; | 145 std::set<uint32_t> recv_ssrcs_; |
| 143 }; | 146 }; |
| 144 #endif // WEBRTC_API_TEST_FAKEDATACHANNELPROVIDER_H_ | 147 #endif // WEBRTC_API_TEST_FAKEDATACHANNELPROVIDER_H_ |
| OLD | NEW |