Index: chrome/browser/ui/webui/media_router/media_router_ui.cc |
diff --git a/chrome/browser/ui/webui/media_router/media_router_ui.cc b/chrome/browser/ui/webui/media_router/media_router_ui.cc |
index 96ff4e614d12e2bb54a17105f1d5e349c70bcb2c..924e26a94dfd80d50b5f08d7887e5bc0983e8be5 100644 |
--- a/chrome/browser/ui/webui/media_router/media_router_ui.cc |
+++ b/chrome/browser/ui/webui/media_router/media_router_ui.cc |
@@ -31,6 +31,7 @@ |
#include "chrome/browser/ui/webui/media_router/media_router_localized_strings_provider.h" |
#include "chrome/browser/ui/webui/media_router/media_router_resources_provider.h" |
#include "chrome/browser/ui/webui/media_router/media_router_webui_message_handler.h" |
+#include "chrome/common/chrome_features.h" |
#include "chrome/common/media_router/issue.h" |
#include "chrome/common/media_router/media_route.h" |
#include "chrome/common/media_router/media_sink.h" |
@@ -153,6 +154,22 @@ void MediaRouterUI::UIMediaRoutesObserver::OnRoutesUpdated( |
callback_.Run(routes, joinable_route_ids); |
} |
+MediaRouterUI::UIMediaRouteControllerObserver::UIMediaRouteControllerObserver( |
+ MediaRouterUI* ui, |
+ scoped_refptr<MediaRouteController> controller) |
+ : MediaRouteController::Observer(std::move(controller)), ui_(ui) {} |
+MediaRouterUI::UIMediaRouteControllerObserver:: |
+ ~UIMediaRouteControllerObserver() {} |
+ |
+void MediaRouterUI::UIMediaRouteControllerObserver::OnMediaStatusUpdated( |
+ const MediaStatus& status) { |
+ ui_->UpdateMediaRouteStatus(status); |
+} |
+ |
+void MediaRouterUI::UIMediaRouteControllerObserver::OnControllerInvalidated() { |
+ ui_->OnRouteControllerInvalidated(); |
+} |
+ |
MediaRouterUI::MediaRouterUI(content::WebUI* web_ui) |
: ConstrainedWebDialogUI(web_ui), |
ui_initialized_(false), |
@@ -760,6 +777,39 @@ void MediaRouterUI::UpdateMaxDialogHeight(int height) { |
handler_->UpdateMaxDialogHeight(height); |
} |
+const MediaRouteController* MediaRouterUI::GetMediaRouteController() const { |
+ return route_controller_observer_ |
+ ? route_controller_observer_->controller().get() |
+ : nullptr; |
+} |
+ |
+void MediaRouterUI::OnMediaControllerUIAvailable( |
+ const MediaRoute::Id& route_id) { |
+ scoped_refptr<MediaRouteController> controller = |
+ router_->GetRouteController(route_id); |
+ if (!controller) { |
+ DVLOG(1) << "Requested a route controller with an invalid route ID."; |
+ return; |
+ } |
+ DVLOG_IF(1, route_controller_observer_) |
+ << "Route controller observer unexpectedly exists."; |
+ route_controller_observer_ = |
+ base::MakeUnique<UIMediaRouteControllerObserver>(this, controller); |
+} |
+ |
+void MediaRouterUI::OnMediaControllerUIClosed() { |
+ route_controller_observer_.reset(); |
+} |
+ |
+void MediaRouterUI::OnRouteControllerInvalidated() { |
+ route_controller_observer_.reset(); |
+ handler_->OnRouteControllerInvalidated(); |
+} |
+ |
+void MediaRouterUI::UpdateMediaRouteStatus(const MediaStatus& status) { |
+ handler_->UpdateMediaRouteStatus(status); |
+} |
+ |
std::string MediaRouterUI::GetSerializedInitiatorOrigin() const { |
url::Origin origin = initiator_ |
? url::Origin(initiator_->GetLastCommittedURL()) |