Index: content/renderer/media/mock_media_stream_dependency_factory.cc |
diff --git a/content/renderer/media/mock_media_stream_dependency_factory.cc b/content/renderer/media/mock_media_stream_dependency_factory.cc |
index 3920a71196e6454d465c63307ebbd5eb91b3258a..dc3ea0e284352ad6b1cccb5b5da8ec10a69d3cf1 100644 |
--- a/content/renderer/media/mock_media_stream_dependency_factory.cc |
+++ b/content/renderer/media/mock_media_stream_dependency_factory.cc |
@@ -136,8 +136,7 @@ webrtc::MediaSourceInterface::SourceState MockAudioSource::state() const { |
} |
MockVideoSource::MockVideoSource() |
- : observer_(NULL), |
- state_(MediaSourceInterface::kInitializing) { |
+ : state_(MediaSourceInterface::kInitializing) { |
} |
MockVideoSource::~MockVideoSource() {} |
@@ -156,26 +155,37 @@ void MockVideoSource::RemoveSink(cricket::VideoRenderer* output) { |
} |
void MockVideoSource::RegisterObserver(webrtc::ObserverInterface* observer) { |
- observer_ = observer; |
+ observers_.push_back(observer); |
} |
void MockVideoSource::UnregisterObserver(webrtc::ObserverInterface* observer) { |
- DCHECK(observer_ == observer); |
- observer_ = NULL; |
+ for (std::list<ObserverInterface*>::iterator it = observers_.begin(); |
+ it != observers_.end(); it++) { |
+ if (*it == observer) { |
+ observers_.erase(it); |
+ break; |
+ } |
+ } |
+} |
+ |
+void MockVideoSource::FireOnChanged() { |
+ std::list<ObserverInterface*> observers = observers_; |
+ for (std::list<ObserverInterface*>::iterator it = observers.begin(); |
+ it != observers.end(); ++it) { |
+ (*it)->OnChanged(); |
+ } |
} |
void MockVideoSource::SetLive() { |
DCHECK_EQ(MediaSourceInterface::kInitializing, state_); |
state_ = MediaSourceInterface::kLive; |
- if (observer_) |
- observer_->OnChanged(); |
+ FireOnChanged(); |
} |
void MockVideoSource::SetEnded() { |
DCHECK_NE(MediaSourceInterface::kEnded, state_); |
state_ = MediaSourceInterface::kEnded; |
- if (observer_) |
- observer_->OnChanged(); |
+ FireOnChanged(); |
} |
webrtc::MediaSourceInterface::SourceState MockVideoSource::state() const { |