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

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

Issue 2859953002: Reland [Media Router] Custom Controls 3 - add plumbing through MRUI and MRWebUIMessageHandler (Closed)
Patch Set: Fix test failures Created 3 years, 8 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/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())

Powered by Google App Engine
This is Rietveld 408576698