Index: chrome/browser/media/router/discovery/dial/dial_media_sink_service.h |
diff --git a/chrome/browser/media/router/discovery/dial/dial_media_sink_service.h b/chrome/browser/media/router/discovery/dial/dial_media_sink_service.h |
index 86f72c5beba6118eb17052fe0f245a9b357fa052..e30c916722f4301beafeb20e242e7b1cd73a196a 100644 |
--- a/chrome/browser/media/router/discovery/dial/dial_media_sink_service.h |
+++ b/chrome/browser/media/router/discovery/dial/dial_media_sink_service.h |
@@ -28,22 +28,30 @@ class DialMediaSinkService : public MediaSinkService, |
net::URLRequestContextGetter* request_context); |
~DialMediaSinkService() override; |
+ // Stop listening to DIAL device event. |
+ virtual void Stop(); |
+ |
// MediaSinkService implementation |
void Start() override; |
- void Stop(); |
- |
protected: |
- virtual DialRegistry* dial_registry(); |
// Returns instance of device description service. Create a new one if none |
// exists. |
- virtual DeviceDescriptionService* GetDescriptionService(); |
+ DeviceDescriptionService* GetDescriptionService(); |
+ |
+ // Does not take ownership of |dial_registry|. |
+ void SetDialRegistryForTest(DialRegistry* dial_registry); |
+ void SetDescriptionServiceForTest( |
+ std::unique_ptr<DeviceDescriptionService> description_service); |
+ void SetTimerForTest(std::unique_ptr<base::Timer> timer); |
private: |
friend class DialMediaSinkServiceTest; |
FRIEND_TEST_ALL_PREFIXES(DialMediaSinkServiceTest, TestStart); |
- FRIEND_TEST_ALL_PREFIXES(DialMediaSinkServiceTest, TestFetchCompleted); |
+ FRIEND_TEST_ALL_PREFIXES(DialMediaSinkServiceTest, TestTimer); |
+ FRIEND_TEST_ALL_PREFIXES(DialMediaSinkServiceTest, |
+ TestFetchCompleted_SameSink); |
FRIEND_TEST_ALL_PREFIXES(DialMediaSinkServiceTest, TestIsDifferent); |
FRIEND_TEST_ALL_PREFIXES(DialMediaSinkServiceTest, |
TestOnDeviceDescriptionAvailable); |
@@ -65,13 +73,19 @@ class DialMediaSinkService : public MediaSinkService, |
// Called when |finish_timer_| expires. |
void OnFetchCompleted(); |
+ // Helper function to start |finish_timer_|. |
+ void StartTimer(); |
+ |
// Timer for finishing fetching. Starts in |OnDialDeviceEvent()|, and expires |
// 3 seconds later. If |OnDeviceDescriptionAvailable()| is called after |
// |finish_timer_| expires, |finish_timer_| is restarted. |
- std::unique_ptr<base::OneShotTimer> finish_timer_; |
+ std::unique_ptr<base::Timer> finish_timer_; |
std::unique_ptr<DeviceDescriptionService> description_service_; |
+ // Raw pointer to DialRegistry singleton. |
+ DialRegistry* dial_registry_ = nullptr; |
+ |
// Sorted sinks from current round of discovery. |
std::set<MediaSinkInternal> current_sinks_; |
@@ -82,6 +96,9 @@ class DialMediaSinkService : public MediaSinkService, |
DialRegistry::DeviceList current_devices_; |
scoped_refptr<net::URLRequestContextGetter> request_context_; |
+ |
+ // True if discovery has started. |
+ bool discovery_started_; |
}; |
} // namespace media_router |