Index: chrome/browser/media/router/discovery/dial/dial_media_sink_service_impl.h |
diff --git a/chrome/browser/media/router/discovery/dial/dial_media_sink_service_impl.h b/chrome/browser/media/router/discovery/dial/dial_media_sink_service_impl.h |
index e238bc4ed7de4679807f3c1ba538b5642fea9592..4209d199c45162665f55c783516dc515e24b3e89 100644 |
--- a/chrome/browser/media/router/discovery/dial/dial_media_sink_service_impl.h |
+++ b/chrome/browser/media/router/discovery/dial/dial_media_sink_service_impl.h |
@@ -18,6 +18,24 @@ namespace media_router { |
class DeviceDescriptionService; |
class DialRegistry; |
+// A delegate class registered with DialMediaSinkService to receive |
+// notifications when dial sinks are added or removed from DialMediaSinkService |
+class DialMediaSinkServiceDelegate |
+ : public base::RefCountedThreadSafe<DialMediaSinkServiceDelegate> { |
+ public: |
+ // Invoked when |sink| is added to DialMediaSinkServiceImpl instance. |
+ virtual void OnDialSinkAdded(const MediaSinkInternal& sink) = 0; |
+ |
+ // Invoked when dial sinks are removed from DialMediaSinkServiceImpl instance. |
+ virtual void OnDialSinksRemoved() = 0; |
+ |
+ protected: |
+ virtual ~DialMediaSinkServiceDelegate() {} |
+ |
+ private: |
+ friend class base::RefCountedThreadSafe<DialMediaSinkServiceDelegate>; |
+}; |
+ |
// A service which can be used to start background discovery and resolution of |
// DIAL devices (Smart TVs, Game Consoles, etc.). |
// This class is not thread safe. All methods must be called from the IO thread. |
@@ -28,6 +46,9 @@ class DialMediaSinkServiceImpl : public MediaSinkServiceBase, |
net::URLRequestContextGetter* request_context); |
~DialMediaSinkServiceImpl() override; |
+ void SetDialMediaSinkServiceDelegate( |
+ scoped_refptr<DialMediaSinkServiceDelegate> delegate); |
+ |
// MediaSinkService implementation |
void Start() override; |
void Stop() override; |
@@ -78,6 +99,8 @@ class DialMediaSinkServiceImpl : public MediaSinkServiceBase, |
// Device data list from current round of discovery. |
DialRegistry::DeviceList current_devices_; |
+ scoped_refptr<DialMediaSinkServiceDelegate> delegate_; |
+ |
scoped_refptr<net::URLRequestContextGetter> request_context_; |
MediaRouterMetrics metrics_; |