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

Unified Diff: chrome/browser/media/router/media_router_mojo_impl.cc

Issue 1784533004: [Media Router] Add origins to sink query results. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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/media_router_mojo_impl.cc
diff --git a/chrome/browser/media/router/media_router_mojo_impl.cc b/chrome/browser/media/router/media_router_mojo_impl.cc
index 787dbdb50c214333bb4730b1eea55f83b2c4d415..f1acd360d8d3504b174011b196640edc7c048812 100644
--- a/chrome/browser/media/router/media_router_mojo_impl.cc
+++ b/chrome/browser/media/router/media_router_mojo_impl.cc
@@ -165,7 +165,8 @@ void MediaRouterMojoImpl::OnIssue(const interfaces::IssuePtr issue) {
void MediaRouterMojoImpl::OnSinksReceived(
const mojo::String& media_source,
- mojo::Array<interfaces::MediaSinkPtr> sinks) {
+ mojo::Array<interfaces::MediaSinkPtr> sinks,
+ mojo::Array<mojo::String> origins) {
DCHECK(thread_checker_.CalledOnValidThread());
DVLOG_WITH_INSTANCE(1) << "OnSinksReceived";
auto it = sinks_queries_.find(media_source);
@@ -182,12 +183,21 @@ void MediaRouterMojoImpl::OnSinksReceived(
for (size_t i = 0; i < sinks.size(); ++i)
cached_sink_list.push_back(sinks[i].To<MediaSink>());
+ auto& origins_list = sinks_query->origins;
+ origins_list.clear();
+ origins_list.reserve(origins.size());
+ for (size_t i = 0; i < origins.size(); ++i) {
+ GURL origin(origins[i].get());
+ DLOG_IF(ERROR, !origin.is_valid()) << "Received invalid origin: " << origin;
+ origins_list.push_back(origin);
mark a. foltz 2016/03/11 01:20:23 If we receive an invalid origin from the MRPM, can
imcheng 2016/03/14 21:30:20 Changed it to do an early return if an origin is i
+ }
+
if (!sinks_query->observers.might_have_observers()) {
DVLOG_WITH_INSTANCE(1)
<< "Received sink list without any active observers: " << media_source;
} else {
FOR_EACH_OBSERVER(MediaSinksObserver, sinks_query->observers,
- OnSinksReceived(cached_sink_list));
+ OnSinksUpdated(cached_sink_list, origins_list));
}
}
@@ -395,7 +405,7 @@ bool MediaRouterMojoImpl::RegisterMediaSinksObserver(
// |observer| can be immediately notified with an empty list.
sinks_query->observers.AddObserver(observer);
if (availability_ == interfaces::MediaRouter::SinkAvailability::UNAVAILABLE) {
- observer->OnSinksReceived(std::vector<MediaSink>());
+ observer->OnSinksUpdated(std::vector<MediaSink>(), std::vector<GURL>());
} else {
// Need to call MRPM to start observing sinks if the query is new.
if (new_query) {
@@ -403,7 +413,8 @@ bool MediaRouterMojoImpl::RegisterMediaSinksObserver(
RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoStartObservingMediaSinks,
base::Unretained(this), source_id));
} else if (sinks_query->has_cached_result) {
- observer->OnSinksReceived(sinks_query->cached_sink_list);
+ observer->OnSinksUpdated(sinks_query->cached_sink_list,
mark a. foltz 2016/03/11 01:20:23 It seems like an observer could get an empty list
imcheng 2016/03/14 21:30:20 It should be ok for now. In all cases, the observe
+ sinks_query->origins);
}
}
return true;
@@ -699,6 +710,7 @@ void MediaRouterMojoImpl::OnSinkAvailabilityUpdated(
query->is_active = false;
query->has_cached_result = false;
query->cached_sink_list.clear();
+ query->origins.clear();
}
} else {
// Sinks are now available. Tell MRPM to start all sink queries again.

Powered by Google App Engine
This is Rietveld 408576698