Fire a state change event when clearing DtlsTransport
This will happen in normal operation when the PeerConnection is closed. If it is already in the Closed state, do not fire an event. Bug: chromium:907849 Change-Id: Icc7eaf487a287ed494d881b877a9b4e97b2a44b8 Reviewed-on: https://webrtc-review.googlesource.com/c/116485 Commit-Queue: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/master@{#26167}
This commit is contained in:
parent
8bacf255d2
commit
cdc3045973
@ -77,7 +77,15 @@ void DtlsTransport::UnregisterObserver() {
|
||||
// Internal functions
|
||||
void DtlsTransport::Clear() {
|
||||
RTC_DCHECK(signaling_thread_->IsCurrent());
|
||||
internal_dtls_transport_.reset();
|
||||
RTC_DCHECK(internal());
|
||||
if (internal()->dtls_state() != cricket::DTLS_TRANSPORT_CLOSED) {
|
||||
internal_dtls_transport_.reset();
|
||||
if (observer_) {
|
||||
observer_->OnStateChange(Information());
|
||||
}
|
||||
} else {
|
||||
internal_dtls_transport_.reset();
|
||||
}
|
||||
}
|
||||
|
||||
void DtlsTransport::OnInternalDtlsState(
|
||||
|
||||
@ -35,6 +35,14 @@ class TestDtlsTransportObserver : public DtlsTransportObserverInterface {
|
||||
|
||||
void OnError(RTCError error) override {}
|
||||
|
||||
DtlsTransportState state() {
|
||||
if (states_.size() > 0) {
|
||||
return states_[states_.size() - 1];
|
||||
} else {
|
||||
return DtlsTransportState::kNew;
|
||||
}
|
||||
}
|
||||
|
||||
bool state_change_called_ = false;
|
||||
std::vector<DtlsTransportState> states_;
|
||||
};
|
||||
@ -94,4 +102,15 @@ TEST_F(DtlsTransportTest, EventsObservedWhenConnecting) {
|
||||
DtlsTransportState::kConnected));
|
||||
}
|
||||
|
||||
TEST_F(DtlsTransportTest, CloseWhenClearing) {
|
||||
CreateTransport();
|
||||
transport()->RegisterObserver(observer());
|
||||
CompleteDtlsHandshake();
|
||||
ASSERT_TRUE_WAIT(observer_.state() == DtlsTransportState::kConnected,
|
||||
kDefaultTimeout);
|
||||
transport()->Clear();
|
||||
ASSERT_TRUE_WAIT(observer_.state() == DtlsTransportState::kClosed,
|
||||
kDefaultTimeout);
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user