Add 2 new virtual methods to IceTransportInternal

This will allow the blink-layer ICE-transport handling code
to use the virtual interface class rather than the concrete
implementation class.

Bug: chromium:864871
Change-Id: I5dfd1f266b3f3eabe42e09ba35afe218d25634b1
Reviewed-on: https://webrtc-review.googlesource.com/c/118360
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26333}
This commit is contained in:
Harald Alvestrand 2019-01-21 09:29:42 +01:00 committed by Commit Bot
parent a882fb3ee4
commit 4241cf5ed5
6 changed files with 46 additions and 1 deletions

View File

@ -191,6 +191,8 @@ class FakeIceTransport : public IceTransportInternal {
remote_candidates_.erase(it);
}
void RemoveAllRemoteCandidates() override { remote_candidates_.clear(); }
bool GetStats(ConnectionInfos* candidate_pair_stats_list,
CandidateStatsList* candidate_stats_list) override {
CandidateStats candidate_stats;
@ -204,6 +206,8 @@ class FakeIceTransport : public IceTransportInternal {
absl::optional<int> GetRttEstimate() override { return absl::nullopt; }
const Connection* selected_connection() const override { return nullptr; }
// Fake PacketTransportInternal implementation.
bool writable() const override { return writable_; }
bool receiving() const override { return receiving_; }

View File

@ -242,6 +242,8 @@ class RTC_EXPORT IceTransportInternal : public rtc::PacketTransportInternal {
virtual void RemoveRemoteCandidate(const Candidate& candidate) = 0;
virtual void RemoveAllRemoteCandidates() = 0;
virtual IceGatheringState gathering_state() const = 0;
// Returns the current stats for this connection.
@ -252,6 +254,8 @@ class RTC_EXPORT IceTransportInternal : public rtc::PacketTransportInternal {
// absl::optional if there is none.
virtual absl::optional<int> GetRttEstimate() = 0;
virtual const Connection* selected_connection() const = 0;
sigslot::signal1<IceTransportInternal*> SignalGatheringState;
// Handles sending and receiving of candidates.

View File

@ -62,9 +62,11 @@ class MockIceTransport : public IceTransportInternal {
void SetRemoteIceMode(IceMode mode) override {}
void SetIceConfig(const IceConfig& config) override {}
absl::optional<int> GetRttEstimate() override { return absl::nullopt; }
const Connection* selected_connection() const override { return nullptr; }
void MaybeStartGathering() override {}
void AddRemoteCandidate(const Candidate& candidate) override {}
void RemoveRemoteCandidate(const Candidate& candidate) override {}
void RemoveAllRemoteCandidates() override {}
IceGatheringState gathering_state() const override {
return IceGatheringState::kIceGatheringComplete;
}

View File

@ -714,6 +714,10 @@ RTCError P2PTransportChannel::ValidateIceConfig(const IceConfig& config) {
return RTCError::OK();
}
const Connection* P2PTransportChannel::selected_connection() const {
return selected_connection_;
}
int P2PTransportChannel::check_receiving_interval() const {
return std::max(MIN_CHECK_RECEIVING_INTERVAL,
config_.receiving_timeout_or_default() / 10);
@ -1180,6 +1184,10 @@ void P2PTransportChannel::RemoveRemoteCandidate(
}
}
void P2PTransportChannel::RemoveAllRemoteCandidates() {
remote_candidates_.clear();
}
// Creates connections from all of the ports that we care about to the given
// remote candidate. The return value is true if we created a connection from
// the origin port.

View File

@ -112,6 +112,7 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal {
void ResolveHostnameCandidate(const Candidate& candidate);
void AddRemoteCandidate(const Candidate& candidate) override;
void RemoveRemoteCandidate(const Candidate& candidate) override;
void RemoveAllRemoteCandidates() override;
// Sets the parameters in IceConfig. We do not set them blindly. Instead, we
// only update the parameter if it is considered set in |config|. For example,
// a negative value of receiving_timeout will be considered "not set" and we
@ -132,12 +133,12 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal {
bool GetStats(std::vector<ConnectionInfo>* candidate_pair_stats_list,
std::vector<CandidateStats>* candidate_stats_list) override;
absl::optional<int> GetRttEstimate() override;
const Connection* selected_connection() const override;
// TODO(honghaiz): Remove this method once the reference of it in
// Chromoting is removed.
const Connection* best_connection() const { return selected_connection_; }
const Connection* selected_connection() const { return selected_connection_; }
void set_incoming_only(bool value) { incoming_only_ = value; }
// Note: These are only for testing purpose.

View File

@ -0,0 +1,26 @@
/*
* Copyright 2019 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.
*/
#include "pc/ice_transport.h"
#include "p2p/base/fake_port_allocator.h"
#include "test/gtest.h"
namespace webrtc {
class IceTransportTest : public testing::Test {};
TEST_F(IceTransportTest, CreateStandaloneIceTransport) {
auto port_allocator = new cricket::FakePortAllocator(nullptr, nullptr);
auto transport = CreateIceTransport(port_allocator);
ASSERT_TRUE(transport->internal());
}
} // namespace webrtc