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

Unified Diff: chrome/browser/ui/webui/media_router/media_router_ui.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/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 8e8e974063672381b1a29e92462627bebf12a0df..8bb7b4cf80c236a42c84a9013a1ff06ac6aa6644 100644
--- a/chrome/browser/ui/webui/media_router/media_router_ui.cc
+++ b/chrome/browser/ui/webui/media_router/media_router_ui.cc
@@ -29,6 +29,7 @@
#include "chrome/browser/media/router/media_sinks_observer.h"
#include "chrome/browser/media/router/media_source.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_router_mojo_impl.h"
#include "chrome/browser/media/router/presentation_service_delegate_impl.h"
#include "chrome/browser/media/router/route_request_result.h"
@@ -153,6 +154,16 @@ void MediaRouterUI::UIMediaRoutesObserver::OnRoutesUpdated(
callback_.Run(routes, joinable_route_ids);
}
+MediaRouterUI::UIMediaRouteStatusObserver::UIMediaRouteStatusObserver(
+ MediaRouterWebUIMessageHandler* handler)
+ : handler_(handler) {}
+MediaRouterUI::UIMediaRouteStatusObserver::~UIMediaRouteStatusObserver() {}
+
+void MediaRouterUI::UIMediaRouteStatusObserver::OnMediaRouteStatusUpdated(
+ const MediaStatus& status) {
+ handler_->UpdateMediaRouteStatus(status);
+}
+
MediaRouterUI::MediaRouterUI(content::WebUI* web_ui)
: ConstrainedWebDialogUI(web_ui),
ui_initialized_(false),
@@ -211,6 +222,8 @@ MediaRouterUI::~MediaRouterUI() {
"No screens found."));
}
}
+ if (route_controller_)
+ route_controller_->RemoveObserver(route_status_observer_.get());
}
void MediaRouterUI::InitWithDefaultMediaSource(
@@ -615,6 +628,11 @@ void MediaRouterUI::OnRoutesUpdated(
if (ui_initialized_)
handler_->UpdateRoutes(routes_, joinable_route_ids_,
routes_and_cast_modes_);
+
+ if (selected_route_ && !IsValidRouteId(selected_route_.value())) {
+ selected_route_.reset();
+ route_controller_ = nullptr;
+ }
}
void MediaRouterUI::OnRouteResponseReceived(
@@ -761,6 +779,56 @@ void MediaRouterUI::UpdateMaxDialogHeight(int height) {
handler_->UpdateMaxDialogHeight(height);
}
+void MediaRouterUI::PlayRoute() {
+ if (route_controller_)
+ route_controller_->Play();
+}
+
+void MediaRouterUI::PauseRoute() {
+ if (route_controller_)
+ route_controller_->Pause();
+}
+
+void MediaRouterUI::SeekRoute(uint32_t time) {
+ if (route_controller_)
+ route_controller_->Seek(time);
+}
+
+void MediaRouterUI::SetRouteVolume(float volume) {
+ if (route_controller_)
+ route_controller_->SetVolume(volume);
+}
+
+void MediaRouterUI::SetRouteMute(bool mute) {
+ if (route_controller_)
+ route_controller_->SetMute(mute);
+}
+
+void MediaRouterUI::OnUIDetailsViewOpened(MediaRoute::Id route_id) {
+ if (!IsValidRouteId(route_id))
+ return;
+ selected_route_ = base::Optional<MediaRoute::Id>(route_id);
+ route_controller_ = router_->GetControllerForRoute(route_id);
+ route_status_observer_ =
+ base::MakeUnique<UIMediaRouteStatusObserver>(handler_);
+ route_controller_->AddObserver(route_status_observer_.get());
+}
+
+void MediaRouterUI::OnUIDetailsViewClosed() {
+ selected_route_.reset();
+ if (route_controller_)
+ route_controller_->RemoveObserver(route_status_observer_.get());
+ route_controller_ = nullptr;
+ route_status_observer_.reset();
+}
+
+bool MediaRouterUI::IsValidRouteId(const MediaRoute::Id& route_id) const {
+ return std::find_if(routes_.begin(), routes_.end(),
+ [&route_id](const MediaRoute& route) {
+ return route.media_route_id() == route_id;
+ }) != routes_.end();
+}
+
std::string MediaRouterUI::GetSerializedInitiatorOrigin() const {
url::Origin origin = initiator_
? url::Origin(initiator_->GetLastCommittedURL())

Powered by Google App Engine
This is Rietveld 408576698