Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2704)

Unified Diff: chrome/browser/media/router/discovery/dial/dial_media_sink_service.cc

Issue 2837363002: [Media Router] Use DialMediaSinkService in MediaRouterMojoImpl (Closed)
Patch Set: resolve code review comments from Mark Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/media/router/discovery/dial/dial_media_sink_service.cc
diff --git a/chrome/browser/media/router/discovery/dial/dial_media_sink_service.cc b/chrome/browser/media/router/discovery/dial/dial_media_sink_service.cc
index 562dcd5b8a213b51bed1f6e38abd4a3ed215c299..158d102bd492b6e5fb1fbbd59960839906f8127a 100644
--- a/chrome/browser/media/router/discovery/dial/dial_media_sink_service.cc
+++ b/chrome/browser/media/router/discovery/dial/dial_media_sink_service.cc
@@ -22,21 +22,24 @@ DialMediaSinkService::DialMediaSinkService(
const OnSinksDiscoveredCallback& callback,
net::URLRequestContextGetter* request_context)
: MediaSinkService(callback), request_context_(request_context) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(request_context_);
}
DialMediaSinkService::~DialMediaSinkService() {}
void DialMediaSinkService::Start() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- dial_registry()->RegisterObserver(this);
- dial_registry()->StartPeriodicDiscovery();
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ content::BrowserThread::PostTask(
+ content::BrowserThread::IO, FROM_HERE,
+ base::Bind(&DialMediaSinkService::StartOnIOThread, this));
}
void DialMediaSinkService::Stop() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- dial_registry()->UnregisterObserver(this);
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ content::BrowserThread::PostTask(
+ content::BrowserThread::IO, FROM_HERE,
+ base::Bind(&DialMediaSinkService::StopOnIOThread, this));
}
DialRegistry* DialMediaSinkService::dial_registry() {
@@ -56,6 +59,32 @@ DeviceDescriptionService* DialMediaSinkService::GetDescriptionService() {
return description_service_.get();
}
+void DialMediaSinkService::StartOnIOThread() {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ dial_registry()->RegisterObserver(this);
+ dial_registry()->OnListenerAdded();
+}
+
+void DialMediaSinkService::StopOnIOThread() {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ dial_registry()->OnListenerRemoved();
+ dial_registry()->UnregisterObserver(this);
+}
+
+void DialMediaSinkService::OnFetchCompletedOnUIThread() {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ auto sinks = current_sinks_;
Kevin M 2017/05/03 21:07:27 Can you just work with current_sinks_ and mrp_sink
zhaobin 2017/05/04 23:52:35 Done.
+ if (sinks == mrp_sinks_) {
+ DVLOG(2) << "No update to sink list.";
+ return;
+ }
+
+ DVLOG(2) << "Send sinks to media router, [size]: " << sinks.size();
+ sink_discovery_callback_.Run(
+ std::vector<MediaSinkInternal>(sinks.begin(), sinks.end()));
+ mrp_sinks_ = std::move(sinks);
+}
+
void DialMediaSinkService::OnDialDeviceEvent(
const DialRegistry::DeviceList& devices) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
@@ -131,17 +160,9 @@ void DialMediaSinkService::OnFetchCompleted() {
DCHECK(!sink_discovery_callback_.is_null());
finish_timer_.reset();
-
- auto sinks = current_sinks_;
- if (sinks == mrp_sinks_) {
- DVLOG(2) << "No update to sink list.";
- return;
- }
-
- DVLOG(2) << "Send sinks to media router, [size]: " << sinks.size();
- sink_discovery_callback_.Run(
- std::vector<MediaSinkInternal>(sinks.begin(), sinks.end()));
- mrp_sinks_ = std::move(sinks);
+ content::BrowserThread::PostTask(
+ content::BrowserThread::UI, FROM_HERE,
+ base::Bind(&DialMediaSinkService::OnFetchCompletedOnUIThread, this));
}
} // namespace media_router

Powered by Google App Engine
This is Rietveld 408576698