Index: chrome/browser/media/router/discovery/media_sink_service_base.h |
diff --git a/chrome/browser/media/router/discovery/media_sink_service_base.h b/chrome/browser/media/router/discovery/media_sink_service_base.h |
index 482189555147a0a770ce62281743be3f9ba7848d..ef3d2f66c050985f020c2f04085f841d0dda09ed 100644 |
--- a/chrome/browser/media/router/discovery/media_sink_service_base.h |
+++ b/chrome/browser/media/router/discovery/media_sink_service_base.h |
@@ -9,6 +9,7 @@ |
#include <set> |
#include "base/gtest_prod_util.h" |
+#include "base/observer_list.h" |
#include "base/timer/timer.h" |
#include "chrome/common/media_router/discovery/media_sink_internal.h" |
#include "chrome/common/media_router/discovery/media_sink_service.h" |
@@ -20,11 +21,15 @@ class MediaSinkServiceBase : public MediaSinkService { |
explicit MediaSinkServiceBase(const OnSinksDiscoveredCallback& callback); |
~MediaSinkServiceBase() override; |
+ // MediaSinkService implementation |
+ void AddObserver(Observer* observer) override; |
+ void RemoveObserver(Observer* observer) override; |
+ |
protected: |
void SetTimerForTest(std::unique_ptr<base::Timer> timer); |
// Called when |finish_timer_| expires. |
- void OnFetchCompleted(); |
+ virtual void OnFetchCompleted(); |
// Helper function to start |finish_timer_|. Create a new timer if none |
// exists. |
@@ -40,19 +45,31 @@ class MediaSinkServiceBase : public MediaSinkService { |
// Overriden by subclass to report device counts. |
virtual void RecordDeviceCounts() {} |
+ // Adds media sink to current service. |
+ void AddSink(const MediaSinkInternal& sink); |
+ |
+ // Removes all media sinks from current service. |
+ void RemoveSinks(); |
+ |
+ // Returns size of media sinks in current service. |
+ size_t GetCurrentSinksSize(); |
+ |
// Time out value for |finish_timer_| |
int fetch_complete_timeout_secs_; |
- // Sorted sinks from current round of discovery. |
- std::set<MediaSinkInternal> current_sinks_; |
- |
- // Sorted sinks sent to Media Router Provider in last FetchCompleted(). |
- std::set<MediaSinkInternal> mrp_sinks_; |
+ base::ObserverList<MediaSinkService::Observer> observers_; |
private: |
friend class MediaSinkServiceBaseTest; |
FRIEND_TEST_ALL_PREFIXES(MediaSinkServiceBaseTest, |
TestFetchCompleted_SameSink); |
+ FRIEND_TEST_ALL_PREFIXES(MediaSinkServiceBaseTest, TestAddRemoveSinks); |
+ |
+ // Sorted sinks from current round of discovery. |
+ std::set<MediaSinkInternal> current_sinks_; |
+ |
+ // Sorted sinks sent to Media Router Provider in last FetchCompleted(). |
+ std::set<MediaSinkInternal> mrp_sinks_; |
// Timer for finishing fetching. |
std::unique_ptr<base::Timer> finish_timer_; |