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

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

Issue 2724513002: (Not for review) Dummy C++ side Custom Controls implementation (Closed)
Patch Set: . Created 3 years, 10 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/mojo/media_router_mojo_impl.cc
diff --git a/chrome/browser/media/router/mojo/media_router_mojo_impl.cc b/chrome/browser/media/router/mojo/media_router_mojo_impl.cc
index 82bf5d61afcd190d2b1eff7d8f50206112bf1dd8..669e9c29f99b059d4552bec2c6943c2516dcb237 100644
--- a/chrome/browser/media/router/mojo/media_router_mojo_impl.cc
+++ b/chrome/browser/media/router/mojo/media_router_mojo_impl.cc
@@ -21,6 +21,7 @@
#include "chrome/browser/media/router/media_routes_observer.h"
#include "chrome/browser/media/router/media_sinks_observer.h"
#include "chrome/browser/media/router/media_source_helper.h"
+#include "chrome/browser/media/router/mojo/media_route_controller.h"
#include "chrome/browser/media/router/mojo/media_route_provider_util_win.h"
#include "chrome/browser/media/router/mojo/media_router_mojo_metrics.h"
#include "chrome/browser/media/router/route_message.h"
@@ -217,6 +218,8 @@ void MediaRouterMojoImpl::OnRoutesUpdated(
for (auto& observer : it->second->observers)
observer.OnRoutesUpdated(routes, joinable_route_ids);
+
+ RemoveInvalidMediaRouteControllers(routes);
}
void MediaRouterMojoImpl::RouteResponseReceived(
@@ -385,6 +388,23 @@ void MediaRouterMojoImpl::SearchSinks(
search_input, domain, sink_callback));
}
+MediaRouteController* MediaRouterMojoImpl::GetControllerForRoute(
+ const MediaRoute::Id& route_id) {
+ auto it = route_controllers_.find(route_id);
+ if (it != route_controllers_.end())
+ return it->second.get();
+ route_controllers_[route_id] = base::MakeUnique<MediaRouteController>(
+ route_id, media_route_provider_.get(),
+ base::Bind(&MediaRouterMojoImpl::DestroyMediaRouteController,
+ base::Unretained(this), route_id));
+ return route_controllers_[route_id].get();
+}
+
+void MediaRouterMojoImpl::DestroyMediaRouteController(
+ const MediaRoute::Id& route_id) {
+ route_controllers_.erase(route_id);
+}
+
bool MediaRouterMojoImpl::RegisterMediaSinksObserver(
MediaSinksObserver* observer) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -935,4 +955,20 @@ void MediaRouterMojoImpl::DoUpdateMediaSinks(
media_route_provider_->UpdateMediaSinks(source_id);
}
+void MediaRouterMojoImpl::RemoveInvalidMediaRouteControllers(
+ const std::vector<MediaRoute>& routes) {
+ auto it = route_controllers_.begin();
+ while (it != route_controllers_.end()) {
+ const MediaRoute::Id& route_id = it->first;
+ if (std::find_if(routes.begin(), routes.end(),
+ [&route_id](const MediaRoute& route) {
+ return route.media_route_id() == route_id;
+ }) == routes.end()) {
+ it = route_controllers_.erase(it);
+ } else {
+ ++it;
+ }
+ }
+}
+
} // namespace media_router
« no previous file with comments | « chrome/browser/media/router/mojo/media_router_mojo_impl.h ('k') | chrome/browser/media/router/mojo/media_status.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698