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}
This commit is contained in:
Qingsi Wang
2019-08-28 09:18:37 -07:00
committed by Commit Bot
parent 66d6c3b70b
commit 7cdcda9dd5
5 changed files with 17 additions and 15 deletions

View File

@ -1981,18 +1981,17 @@ void P2PTransportChannel::SwitchSelectedConnection(Connection* conn,
} else { } else {
RTC_LOG(LS_INFO) << ToString() << ": No selected connection"; RTC_LOG(LS_INFO) << ToString() << ": No selected connection";
} }
SignalNetworkRouteChanged(network_route_);
// Create event for candidate pair change. // Create event for candidate pair change.
if (selected_connection_) { if (selected_connection_) {
CandidatePairChangeEvent pair_change; CandidatePairChangeEvent pair_change;
pair_change.reason = reason; pair_change.reason = reason;
pair_change.local_candidate = selected_connection_->local_candidate(); pair_change.selected_candidate_pair = *GetSelectedCandidatePair();
pair_change.remote_candidate = selected_connection_->remote_candidate();
pair_change.last_data_received_ms = pair_change.last_data_received_ms =
selected_connection_->last_data_received(); selected_connection_->last_data_received();
SignalCandidatePairChanged(pair_change); SignalCandidatePairChanged(pair_change);
} }
SignalNetworkRouteChanged(network_route_);
++selected_candidate_pair_changes_; ++selected_candidate_pair_changes_;
} }

View File

@ -3379,9 +3379,11 @@ class P2PTransportChannelPingTest : public ::testing::Test,
if (!conn) { if (!conn) {
return !last_candidate_change_event_.has_value(); return !last_candidate_change_event_.has_value();
} else { } 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()) && conn->local_candidate()) &&
last_candidate_change_event_->remote_candidate.IsEquivalent( last_selected_pair.remote_candidate().IsEquivalent(
conn->remote_candidate()) && conn->remote_candidate()) &&
last_candidate_change_event_->last_data_received_ms == last_candidate_change_event_->last_data_received_ms ==
conn->last_data_received() && conn->last_data_received() &&

View File

@ -149,8 +149,7 @@ struct IceCandidateErrorEvent {
}; };
struct CandidatePairChangeEvent { struct CandidatePairChangeEvent {
Candidate local_candidate; CandidatePair selected_candidate_pair;
Candidate remote_candidate;
int64_t last_data_received_ms; int64_t last_data_received_ms;
std::string reason; std::string reason;
}; };

View File

@ -124,9 +124,10 @@ SdpSemantics JavaToNativeSdpSemantics(JNIEnv* jni,
ScopedJavaLocalRef<jobject> NativeToJavaCandidatePairChange( ScopedJavaLocalRef<jobject> NativeToJavaCandidatePairChange(
JNIEnv* env, JNIEnv* env,
const cricket::CandidatePairChangeEvent& event) { const cricket::CandidatePairChangeEvent& event) {
const auto& selected_pair = event.selected_candidate_pair;
return Java_CandidatePairChangeEvent_Constructor( return Java_CandidatePairChangeEvent_Constructor(
env, NativeToJavaCandidate(env, event.local_candidate), env, NativeToJavaCandidate(env, selected_pair.local_candidate()),
NativeToJavaCandidate(env, event.remote_candidate), NativeToJavaCandidate(env, selected_pair.remote_candidate()),
static_cast<int>(event.last_data_received_ms), static_cast<int>(event.last_data_received_ms),
NativeToJavaString(env, event.reason)); NativeToJavaString(env, event.reason));
} }

View File

@ -235,14 +235,15 @@ void PeerConnectionDelegateAdapter::OnIceCandidatesRemoved(
void PeerConnectionDelegateAdapter::OnIceSelectedCandidatePairChanged( void PeerConnectionDelegateAdapter::OnIceSelectedCandidatePairChanged(
const cricket::CandidatePairChangeEvent &event) { const cricket::CandidatePairChangeEvent &event) {
std::unique_ptr<JsepIceCandidate> local_candidate_wrapper( const auto &selected_pair = event.selected_candidate_pair;
new JsepIceCandidate(event.local_candidate.transport_name(), -1, event.local_candidate)); auto local_candidate_wrapper = absl::make_unique<JsepIceCandidate>(
selected_pair.local_candidate().transport_name(), -1, selected_pair.local_candidate());
RTCIceCandidate *local_candidate = RTCIceCandidate *local_candidate =
[[RTCIceCandidate alloc] initWithNativeCandidate:local_candidate_wrapper.get()]; [[RTCIceCandidate alloc] initWithNativeCandidate:local_candidate_wrapper.release()];
std::unique_ptr<JsepIceCandidate> remote_candidate_wrapper( auto remote_candidate_wrapper = absl::make_unique<JsepIceCandidate>(
new JsepIceCandidate(event.remote_candidate.transport_name(), -1, event.remote_candidate)); selected_pair.remote_candidate().transport_name(), -1, selected_pair.remote_candidate());
RTCIceCandidate *remote_candidate = RTCIceCandidate *remote_candidate =
[[RTCIceCandidate alloc] initWithNativeCandidate:remote_candidate_wrapper.get()]; [[RTCIceCandidate alloc] initWithNativeCandidate:remote_candidate_wrapper.release()];
RTCPeerConnection *peer_connection = peer_connection_; RTCPeerConnection *peer_connection = peer_connection_;
NSString *nsstr_reason = [NSString stringForStdString:event.reason]; NSString *nsstr_reason = [NSString stringForStdString:event.reason];
if ([peer_connection.delegate if ([peer_connection.delegate