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

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

Issue 2731043002: [Media Router] Add a presentation id to MediaRoute mapping in the MR (Closed)
Patch Set: resolve code review comments from Derek Created 3 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_base.cc
diff --git a/chrome/browser/media/router/media_router_base.cc b/chrome/browser/media/router/media_router_base.cc
index 923afc4efc79b6e37ec7dc9f865c8d1f5b3f6c2b..9246b7859d22cf434ce01bb852f9723d8b943e8e 100644
--- a/chrome/browser/media/router/media_router_base.cc
+++ b/chrome/browser/media/router/media_router_base.cc
@@ -27,7 +27,27 @@ class MediaRouterBase::InternalMediaRoutesObserver
void OnRoutesUpdated(
const std::vector<MediaRoute>& routes,
const std::vector<MediaRoute::Id>& joinable_route_ids) override {
+ std::vector<MediaRoute> old_routes = std::move(current_routes);
current_routes = routes;
+
+ // Restore presentation id from old route.
+ for (auto& route : current_routes) {
+ if (route.presentation_id().has_value())
+ continue;
+
+ auto old_route_it = std::find_if(old_routes.begin(), old_routes.end(),
+ [&route](const MediaRoute& old_route) {
+ return route.media_route_id() ==
+ old_route.media_route_id();
+ });
+
+ if (old_route_it == old_routes.end())
+ continue;
+
+ if (old_route_it->presentation_id().has_value())
+ route.set_presentation_id(old_route_it->presentation_id().value());
+ }
+
incognito_route_ids.clear();
// TODO(crbug.com/611486): Have the MRPM pass a list of joinable route ids
// via |joinable_route_ids|, and check here if it is non-empty.
@@ -38,6 +58,30 @@ class MediaRouterBase::InternalMediaRoutesObserver
}
}
+ const MediaRoute* GetPresentationRoute(
+ const std::string& presentation_id) const {
+ for (const auto& route : current_routes) {
+ if (route.presentation_id().has_value() &&
+ route.presentation_id().value() == presentation_id)
+ return &route;
+ }
+
+ return nullptr;
+ }
+
+ void SetPresentationId(const MediaRoute::Id& route_id,
mark a. foltz 2017/03/13 17:52:11 Can the presentation ID just be set on the Route i
+ const std::string& presentation_id) {
+ auto route_it = std::find_if(current_routes.begin(), current_routes.end(),
+ [&route_id](const MediaRoute& route) {
+ return route.media_route_id() == route_id;
+ });
+
+ if (route_it == current_routes.end())
+ return;
+
+ route_it->set_presentation_id(presentation_id);
+ }
+
bool has_route;
std::vector<MediaRoute> current_routes;
std::vector<MediaRoute::Id> incognito_route_ids;
@@ -76,6 +120,19 @@ std::vector<MediaRoute> MediaRouterBase::GetCurrentRoutes() const {
return internal_routes_observer_->current_routes;
}
+const MediaRoute* MediaRouterBase::GetPresentationRoute(
+ const std::string& presentation_id) const {
+ DCHECK(internal_routes_observer_);
+ return internal_routes_observer_->GetPresentationRoute(presentation_id);
+}
+
+void MediaRouterBase::SetPresentationId(const MediaRoute::Id& route_id,
+ const std::string& presentation_id) {
+ DCHECK(internal_routes_observer_);
+ return internal_routes_observer_->SetPresentationId(route_id,
+ presentation_id);
+}
+
MediaRouterBase::MediaRouterBase() : initialized_(false) {}
// static
« no previous file with comments | « chrome/browser/media/router/media_router_base.h ('k') | chrome/browser/media/router/media_router_base_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698