Index: chrome/browser/media/router/discovery/media_sink_service_base.cc |
diff --git a/chrome/browser/media/router/discovery/media_sink_service_base.cc b/chrome/browser/media/router/discovery/media_sink_service_base.cc |
index a1ccff11dccc786dfa4f97ed3ef1417eae112fb2..7e382a2a35994a956fa7bb828b246c84786680a6 100644 |
--- a/chrome/browser/media/router/discovery/media_sink_service_base.cc |
+++ b/chrome/browser/media/router/discovery/media_sink_service_base.cc |
@@ -20,6 +20,15 @@ MediaSinkServiceBase::MediaSinkServiceBase( |
MediaSinkServiceBase::~MediaSinkServiceBase() = default; |
+void MediaSinkServiceBase::AddObserver(Observer* observer) { |
+ if (!observers_.HasObserver(observer)) |
+ observers_.AddObserver(observer); |
+} |
+ |
+void MediaSinkServiceBase::RemoveObserver(Observer* observer) { |
+ observers_.RemoveObserver(observer); |
+} |
+ |
void MediaSinkServiceBase::SetTimerForTest(std::unique_ptr<base::Timer> timer) { |
DCHECK(!finish_timer_); |
finish_timer_ = std::move(timer); |
@@ -63,4 +72,22 @@ void MediaSinkServiceBase::RestartTimer() { |
StartTimer(); |
} |
+void MediaSinkServiceBase::AddSink(const MediaSinkInternal& sink) { |
+ if (!current_sinks_.insert(sink).second) |
+ return; |
+ |
+ for (auto& observer : observers_) |
+ observer.OnMediaSinkAdded(sink); |
+} |
+ |
+void MediaSinkServiceBase::RemoveSinks() { |
+ current_sinks_.clear(); |
+ for (auto& observer : observers_) |
+ observer.OnMediaSinksRemoved(); |
+} |
+ |
+size_t MediaSinkServiceBase::GetCurrentSinksSize() { |
+ return current_sinks_.size(); |
+} |
+ |
} // namespace media_router |