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

Unified Diff: chrome/browser/ui/webui/media_router/query_result_manager.cc

Issue 1805813002: [Media Router] Wiring for searching route providers for new sinks. (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/ui/webui/media_router/query_result_manager.cc
diff --git a/chrome/browser/ui/webui/media_router/query_result_manager.cc b/chrome/browser/ui/webui/media_router/query_result_manager.cc
index e451fdb3e4971b53f3d2d077d768c3c28eb8a1c4..bec3ef2c74c850cde022602a1b013a827555e86d 100644
--- a/chrome/browser/ui/webui/media_router/query_result_manager.cc
+++ b/chrome/browser/ui/webui/media_router/query_result_manager.cc
@@ -8,6 +8,7 @@
#include "base/stl_util.h"
#include "chrome/browser/media/router/media_router.h"
#include "chrome/browser/media/router/media_sinks_observer.h"
+#include "chrome/browser/media/router/media_sinks_search_request.h"
namespace media_router {
@@ -52,6 +53,22 @@ class QueryResultManager::CastModeMediaSinksObserver
QueryResultManager* result_manager_;
};
+class QueryResultManager::SearchSinksRequest : public MediaSinksSearchRequest {
+ public:
+ SearchSinksRequest(const MediaSource& source,
+ const MediaSink::Id& sink_id,
+ QueryResultManager* result_manager)
+ : MediaSinksSearchRequest(source, sink_id),
+ result_manager_(result_manager) {}
+
+ void OnResultsReceived(const std::vector<MediaSink>& result) override {
+ result_manager_->NotifyOnSearchResults(sink_id(), result);
+ }
+
+ private:
+ QueryResultManager* result_manager_;
+};
+
QueryResultManager::QueryResultManager(MediaRouter* router) : router_(router) {
DCHECK(router_);
}
@@ -102,6 +119,19 @@ void QueryResultManager::StopSinksQuery(MediaCastMode cast_mode) {
NotifyOnResultsUpdated();
}
+void QueryResultManager::StartSinkSearch(MediaCastMode cast_mode,
+ const MediaSink::Id& sink_id) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+
+ auto source = GetSourceForCastMode(cast_mode);
+ if (source.Empty()) {
+ return;
+ }
+ auto observer =
+ make_scoped_ptr(new SearchSinksRequest(source, sink_id, this));
+ router_->RegisterMediaSinksSearchRequest(std::move(observer));
+}
+
void QueryResultManager::SetSourceForCastMode(
MediaCastMode cast_mode, const MediaSource& source) {
DCHECK(thread_checker_.CalledOnValidThread());
@@ -158,11 +188,11 @@ void QueryResultManager::GetSupportedCastModes(CastModeSet* cast_modes) const {
}
MediaSource QueryResultManager::GetSourceForCastMode(
- MediaCastMode cast_mode) const {
+ MediaCastMode cast_mode) const {
DCHECK(thread_checker_.CalledOnValidThread());
auto source_it = cast_mode_sources_.find(cast_mode);
- return source_it == cast_mode_sources_.end() ?
- MediaSource() : source_it->second;
+ return source_it == cast_mode_sources_.end() ? MediaSource()
+ : source_it->second;
}
void QueryResultManager::NotifyOnResultsUpdated() {
@@ -174,4 +204,18 @@ void QueryResultManager::NotifyOnResultsUpdated() {
OnResultsUpdated(sinks));
}
+void QueryResultManager::NotifyOnSearchResults(
+ const MediaSink::Id& sink_id,
+ const std::vector<MediaSink>& sinks) {
+ std::vector<MediaSinkWithCastModes> sinks_with_cast_modes;
+ sinks_with_cast_modes.reserve(sinks.size());
+ for (const auto& sink : sinks) {
+ sinks_with_cast_modes.push_back(MediaSinkWithCastModes(sink));
+ sinks_with_cast_modes.back().cast_modes.insert(TAB_MIRROR);
+ sinks_with_cast_modes.back().cast_modes.insert(DESKTOP_MIRROR);
+ }
+ FOR_EACH_OBSERVER(QueryResultManager::Observer, observers_,
+ OnSearchResultsReceived(sink_id, sinks_with_cast_modes));
+}
+
} // namespace media_router

Powered by Google App Engine
This is Rietveld 408576698