Reland "Expose can_trickle_ice_candidates on PeerConnection"

This reverts commit cb8c40138ca170f841bc45fa6771cdfc4b966e5f.

Reason for revert: Added missing default.

Original change's description:
> Revert "Expose can_trickle_ice_candidates on PeerConnection"
>
> This reverts commit c6a65c8866487c6adc0a7bb472d3bad9389501f9.
>
> Reason for revert: Breaks downstream due to missing default
>
> Original change's description:
> > Expose can_trickle_ice_candidates on PeerConnection
> >
> > Bug: chromium:708484
> > Change-Id: I9a40e75066341f0d9f965bd3718bfcb3f0459533
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/169450
> > Commit-Queue: Harald Alvestrand <hta@webrtc.org>
> > Reviewed-by: Taylor <deadbeef@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#30653}
>
> TBR=deadbeef@webrtc.org,hta@webrtc.org
>
> Change-Id: Iaa5b977c4237715a8a5127cf167cf6512a3f7059
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: chromium:708484
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/169540
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Commit-Queue: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#30655}

TBR=deadbeef@webrtc.org,hta@webrtc.org

Change-Id: I608da7781f158b4b02dd226d4dcd5615c4935fa8
Bug: chromium:708484
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/169541
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30656}
This commit is contained in:
Harald Alvestrand 2020-03-02 11:20:00 +01:00 committed by Commit Bot
parent cb8c40138c
commit 61f74d91f8
9 changed files with 35 additions and 0 deletions

View File

@ -1010,6 +1010,7 @@ if (rtc_include_tests) {
sources = [ "test/compile_all_headers.cc" ]
deps = [
":dummy_peer_connection",
":fake_frame_decryptor",
":fake_frame_encryptor",
":fake_media_transport",

View File

@ -1109,6 +1109,13 @@ class RTC_EXPORT PeerConnectionInterface : public rtc::RefCountInterface {
virtual IceGatheringState ice_gathering_state() = 0;
// Returns the current state of canTrickleIceCandidates per
// https://w3c.github.io/webrtc-pc/#attributes-1
virtual absl::optional<bool> can_trickle_ice_candidates() {
// TODO(crbug.com/708484): Remove default implementation.
return absl::nullopt;
}
// Start RtcEventLog using an existing output-sink. Takes ownership of
// |output| and passes it on to Call, which will take the ownership. If the
// operation fails the output will be closed and deallocated. The event log

View File

@ -131,6 +131,7 @@ PROXY_METHOD0(IceConnectionState, ice_connection_state)
PROXY_METHOD0(IceConnectionState, standardized_ice_connection_state)
PROXY_METHOD0(PeerConnectionState, peer_connection_state)
PROXY_METHOD0(IceGatheringState, ice_gathering_state)
PROXY_METHOD0(absl::optional<bool>, can_trickle_ice_candidates)
PROXY_METHOD2(bool,
StartRtcEventLog,
std::unique_ptr<RtcEventLogOutput>,

View File

@ -229,6 +229,8 @@ class DummyPeerConnection : public PeerConnectionInterface {
return IceGatheringState();
}
absl::optional<bool> can_trickle_ice_candidates() { return absl::nullopt; }
bool StartRtcEventLog(std::unique_ptr<RtcEventLogOutput> output,
int64_t output_period_ms) override {
return false;

View File

@ -127,6 +127,7 @@ class MockPeerConnectionInterface
MOCK_METHOD0(standardized_ice_connection_state, IceConnectionState());
MOCK_METHOD0(peer_connection_state, PeerConnectionState());
MOCK_METHOD0(ice_gathering_state, IceGatheringState());
MOCK_METHOD0(can_trickle_ice_candidates, absl::optional<bool>());
MOCK_METHOD2(StartRtcEventLog,
bool(std::unique_ptr<RtcEventLogOutput>, int64_t));
MOCK_METHOD1(StartRtcEventLog, bool(std::unique_ptr<RtcEventLogOutput>));

View File

@ -2144,6 +2144,23 @@ PeerConnection::ice_gathering_state() {
return ice_gathering_state_;
}
absl::optional<bool> PeerConnection::can_trickle_ice_candidates() {
RTC_DCHECK_RUN_ON(signaling_thread());
SessionDescriptionInterface* description = current_remote_description_.get();
if (!description) {
description = pending_remote_description_.get();
}
if (!description) {
return absl::nullopt;
}
// TODO(bugs.webrtc.org/7443): Change to retrieve from session-level option.
if (description->description()->transport_infos().size() < 1) {
return absl::nullopt;
}
return description->description()->transport_infos()[0].description.HasOption(
"trickle");
}
rtc::scoped_refptr<DataChannelInterface> PeerConnection::CreateDataChannel(
const std::string& label,
const DataChannelInit* config) {

View File

@ -189,6 +189,7 @@ class PeerConnection : public PeerConnectionInternal,
IceConnectionState standardized_ice_connection_state() override;
PeerConnectionState peer_connection_state() override;
IceGatheringState ice_gathering_state() override;
absl::optional<bool> can_trickle_ice_candidates() override;
const SessionDescriptionInterface* local_description() const override;
const SessionDescriptionInterface* remote_description() const override;

View File

@ -3485,7 +3485,10 @@ TEST_P(PeerConnectionInterfaceTest, OffersAndAnswersHaveTrickleIceOption) {
EXPECT_TRUE(desc->transport_infos()[1].description.HasOption("trickle"));
// Apply the offer as a remote description, then create an answer.
EXPECT_FALSE(pc_->can_trickle_ice_candidates());
EXPECT_TRUE(DoSetRemoteDescription(std::move(offer)));
ASSERT_TRUE(pc_->can_trickle_ice_candidates());
EXPECT_TRUE(*(pc_->can_trickle_ice_candidates()));
std::unique_ptr<SessionDescriptionInterface> answer;
ASSERT_TRUE(DoCreateAnswer(&answer, &options));
desc = answer->description();

View File

@ -217,6 +217,8 @@ class FakePeerConnectionBase : public PeerConnectionInternal {
return IceGatheringState::kIceGatheringNew;
}
absl::optional<bool> can_trickle_ice_candidates() { return absl::nullopt; }
bool StartRtcEventLog(std::unique_ptr<RtcEventLogOutput> output,
int64_t output_period_ms) override {
return false;