| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/media/webrtc/media_stream_track_metrics.h" | 5 #include "content/renderer/media/webrtc/media_stream_track_metrics.h" |
| 6 | 6 |
| 7 #include <inttypes.h> | 7 #include <inttypes.h> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 262 DCHECK(thread_checker_.CalledOnValidThread()); | 262 DCHECK(thread_checker_.CalledOnValidThread()); |
| 263 for (IdSet::const_iterator it = ids.begin(); it != ids.end(); ++it) { | 263 for (IdSet::const_iterator it = ids.begin(); it != ids.end(); ++it) { |
| 264 owner_->SendLifetimeMessage(*it, track_type, event, stream_type_); | 264 owner_->SendLifetimeMessage(*it, track_type, event, stream_type_); |
| 265 } | 265 } |
| 266 } | 266 } |
| 267 | 267 |
| 268 MediaStreamTrackMetrics::MediaStreamTrackMetrics() | 268 MediaStreamTrackMetrics::MediaStreamTrackMetrics() |
| 269 : ice_state_(webrtc::PeerConnectionInterface::kIceConnectionNew) {} | 269 : ice_state_(webrtc::PeerConnectionInterface::kIceConnectionNew) {} |
| 270 | 270 |
| 271 MediaStreamTrackMetrics::~MediaStreamTrackMetrics() { | 271 MediaStreamTrackMetrics::~MediaStreamTrackMetrics() { |
| 272 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 272 for (const auto& observer : observers_) { | 273 for (const auto& observer : observers_) { |
| 273 observer->SendLifetimeMessages(DISCONNECTED); | 274 observer->SendLifetimeMessages(DISCONNECTED); |
| 274 } | 275 } |
| 275 } | 276 } |
| 276 | 277 |
| 277 void MediaStreamTrackMetrics::AddStream(StreamType type, | 278 void MediaStreamTrackMetrics::AddStream(StreamType type, |
| 278 MediaStreamInterface* stream) { | 279 MediaStreamInterface* stream) { |
| 279 DCHECK(CalledOnValidThread()); | 280 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 280 observers_.push_back( | 281 observers_.push_back( |
| 281 base::MakeUnique<MediaStreamTrackMetricsObserver>(type, stream, this)); | 282 base::MakeUnique<MediaStreamTrackMetricsObserver>(type, stream, this)); |
| 282 SendLifeTimeMessageDependingOnIceState(observers_.back().get()); | 283 SendLifeTimeMessageDependingOnIceState(observers_.back().get()); |
| 283 } | 284 } |
| 284 | 285 |
| 285 void MediaStreamTrackMetrics::RemoveStream(StreamType type, | 286 void MediaStreamTrackMetrics::RemoveStream(StreamType type, |
| 286 MediaStreamInterface* stream) { | 287 MediaStreamInterface* stream) { |
| 287 DCHECK(CalledOnValidThread()); | 288 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 288 auto it = std::find_if(observers_.begin(), observers_.end(), | 289 auto it = std::find_if(observers_.begin(), observers_.end(), |
| 289 ObserverFinder(type, stream)); | 290 ObserverFinder(type, stream)); |
| 290 if (it == observers_.end()) { | 291 if (it == observers_.end()) { |
| 291 // Since external apps could call removeStream with a stream they | 292 // Since external apps could call removeStream with a stream they |
| 292 // never added, this can happen without it being an error. | 293 // never added, this can happen without it being an error. |
| 293 return; | 294 return; |
| 294 } | 295 } |
| 295 | 296 |
| 296 observers_.erase(it); | 297 observers_.erase(it); |
| 297 } | 298 } |
| 298 | 299 |
| 299 void MediaStreamTrackMetrics::IceConnectionChange( | 300 void MediaStreamTrackMetrics::IceConnectionChange( |
| 300 PeerConnectionInterface::IceConnectionState new_state) { | 301 PeerConnectionInterface::IceConnectionState new_state) { |
| 301 DCHECK(CalledOnValidThread()); | 302 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| 302 ice_state_ = new_state; | 303 ice_state_ = new_state; |
| 303 for (const auto& observer : observers_) { | 304 for (const auto& observer : observers_) { |
| 304 SendLifeTimeMessageDependingOnIceState(observer.get()); | 305 SendLifeTimeMessageDependingOnIceState(observer.get()); |
| 305 } | 306 } |
| 306 } | 307 } |
| 307 void MediaStreamTrackMetrics::SendLifeTimeMessageDependingOnIceState( | 308 void MediaStreamTrackMetrics::SendLifeTimeMessageDependingOnIceState( |
| 308 MediaStreamTrackMetricsObserver* observer) { | 309 MediaStreamTrackMetricsObserver* observer) { |
| 309 // There is a state transition diagram for these states at | 310 // There is a state transition diagram for these states at |
| 310 // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCIceConnectionSt
ate | 311 // http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCIceConnectionSt
ate |
| 311 switch (ice_state_) { | 312 switch (ice_state_) { |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 } | 393 } |
| 393 | 394 |
| 394 uint64_t MediaStreamTrackMetrics::MakeUniqueId(const std::string& track_id, | 395 uint64_t MediaStreamTrackMetrics::MakeUniqueId(const std::string& track_id, |
| 395 StreamType stream_type) { | 396 StreamType stream_type) { |
| 396 return MakeUniqueIdImpl( | 397 return MakeUniqueIdImpl( |
| 397 reinterpret_cast<uint64_t>(reinterpret_cast<void*>(this)), track_id, | 398 reinterpret_cast<uint64_t>(reinterpret_cast<void*>(this)), track_id, |
| 398 stream_type); | 399 stream_type); |
| 399 } | 400 } |
| 400 | 401 |
| 401 } // namespace content | 402 } // namespace content |
| OLD | NEW |