| 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())
|
|
|