Use the sanitized pair when surfacing the candidate pair change event.
TBR=andersc@webrtc.org
Bug: None
Change-Id: Ie2c389fe966dada2768e3222e1f8da74e1715568
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/150762
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Reviewed-by: Alex Drake <alexdrake@webrtc.org>
Reviewed-by: Alex Glaznev <glaznev@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29052}
diff --git a/p2p/base/p2p_transport_channel.cc b/p2p/base/p2p_transport_channel.cc
index 9e1c720..23a9949 100644
--- a/p2p/base/p2p_transport_channel.cc
+++ b/p2p/base/p2p_transport_channel.cc
@@ -1981,18 +1981,17 @@
} else {
RTC_LOG(LS_INFO) << ToString() << ": No selected connection";
}
+ SignalNetworkRouteChanged(network_route_);
// Create event for candidate pair change.
if (selected_connection_) {
CandidatePairChangeEvent pair_change;
pair_change.reason = reason;
- pair_change.local_candidate = selected_connection_->local_candidate();
- pair_change.remote_candidate = selected_connection_->remote_candidate();
+ pair_change.selected_candidate_pair = *GetSelectedCandidatePair();
pair_change.last_data_received_ms =
selected_connection_->last_data_received();
SignalCandidatePairChanged(pair_change);
}
- SignalNetworkRouteChanged(network_route_);
++selected_candidate_pair_changes_;
}
diff --git a/p2p/base/p2p_transport_channel_unittest.cc b/p2p/base/p2p_transport_channel_unittest.cc
index 72ab65c..dd48979 100644
--- a/p2p/base/p2p_transport_channel_unittest.cc
+++ b/p2p/base/p2p_transport_channel_unittest.cc
@@ -3379,9 +3379,11 @@
if (!conn) {
return !last_candidate_change_event_.has_value();
} else {
- return last_candidate_change_event_->local_candidate.IsEquivalent(
+ const auto& last_selected_pair =
+ last_candidate_change_event_->selected_candidate_pair;
+ return last_selected_pair.local_candidate().IsEquivalent(
conn->local_candidate()) &&
- last_candidate_change_event_->remote_candidate.IsEquivalent(
+ last_selected_pair.remote_candidate().IsEquivalent(
conn->remote_candidate()) &&
last_candidate_change_event_->last_data_received_ms ==
conn->last_data_received() &&
diff --git a/p2p/base/port.h b/p2p/base/port.h
index 4251cd4..65b543c 100644
--- a/p2p/base/port.h
+++ b/p2p/base/port.h
@@ -149,8 +149,7 @@
};
struct CandidatePairChangeEvent {
- Candidate local_candidate;
- Candidate remote_candidate;
+ CandidatePair selected_candidate_pair;
int64_t last_data_received_ms;
std::string reason;
};
diff --git a/sdk/android/src/jni/pc/peer_connection.cc b/sdk/android/src/jni/pc/peer_connection.cc
index c95e576..13f8301 100644
--- a/sdk/android/src/jni/pc/peer_connection.cc
+++ b/sdk/android/src/jni/pc/peer_connection.cc
@@ -124,9 +124,10 @@
ScopedJavaLocalRef<jobject> NativeToJavaCandidatePairChange(
JNIEnv* env,
const cricket::CandidatePairChangeEvent& event) {
+ const auto& selected_pair = event.selected_candidate_pair;
return Java_CandidatePairChangeEvent_Constructor(
- env, NativeToJavaCandidate(env, event.local_candidate),
- NativeToJavaCandidate(env, event.remote_candidate),
+ env, NativeToJavaCandidate(env, selected_pair.local_candidate()),
+ NativeToJavaCandidate(env, selected_pair.remote_candidate()),
static_cast<int>(event.last_data_received_ms),
NativeToJavaString(env, event.reason));
}
diff --git a/sdk/objc/api/peerconnection/RTCPeerConnection.mm b/sdk/objc/api/peerconnection/RTCPeerConnection.mm
index 156f7a4..f3e91c4 100644
--- a/sdk/objc/api/peerconnection/RTCPeerConnection.mm
+++ b/sdk/objc/api/peerconnection/RTCPeerConnection.mm
@@ -235,14 +235,15 @@
void PeerConnectionDelegateAdapter::OnIceSelectedCandidatePairChanged(
const cricket::CandidatePairChangeEvent &event) {
- std::unique_ptr<JsepIceCandidate> local_candidate_wrapper(
- new JsepIceCandidate(event.local_candidate.transport_name(), -1, event.local_candidate));
+ const auto &selected_pair = event.selected_candidate_pair;
+ auto local_candidate_wrapper = absl::make_unique<JsepIceCandidate>(
+ selected_pair.local_candidate().transport_name(), -1, selected_pair.local_candidate());
RTCIceCandidate *local_candidate =
- [[RTCIceCandidate alloc] initWithNativeCandidate:local_candidate_wrapper.get()];
- std::unique_ptr<JsepIceCandidate> remote_candidate_wrapper(
- new JsepIceCandidate(event.remote_candidate.transport_name(), -1, event.remote_candidate));
+ [[RTCIceCandidate alloc] initWithNativeCandidate:local_candidate_wrapper.release()];
+ auto remote_candidate_wrapper = absl::make_unique<JsepIceCandidate>(
+ selected_pair.remote_candidate().transport_name(), -1, selected_pair.remote_candidate());
RTCIceCandidate *remote_candidate =
- [[RTCIceCandidate alloc] initWithNativeCandidate:remote_candidate_wrapper.get()];
+ [[RTCIceCandidate alloc] initWithNativeCandidate:remote_candidate_wrapper.release()];
RTCPeerConnection *peer_connection = peer_connection_;
NSString *nsstr_reason = [NSString stringForStdString:event.reason];
if ([peer_connection.delegate