Chromium Code Reviews| 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..1a092ed0eacce33bfec2c2b90aead351fb8e0cdd 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_->handler_->UpdateMediaRouteStatus(status); |
| +} |
| + |
| +void MediaRouterUI::UIMediaRouteControllerObserver::OnControllerInvalidated() { |
| + ui_->OnRouteControllerInvalidated(); |
| +} |
| + |
| MediaRouterUI::MediaRouterUI(content::WebUI* web_ui) |
| : ConstrainedWebDialogUI(web_ui), |
| ui_initialized_(false), |
| @@ -760,6 +777,54 @@ void MediaRouterUI::UpdateMaxDialogHeight(int height) { |
| handler_->UpdateMaxDialogHeight(height); |
| } |
| +void MediaRouterUI::PlayRoute() { |
| + if (route_controller_observer_) |
| + route_controller_observer_->controller()->Play(); |
| +} |
| + |
| +void MediaRouterUI::PauseRoute() { |
| + if (route_controller_observer_) |
| + route_controller_observer_->controller()->Pause(); |
| +} |
| + |
| +void MediaRouterUI::SeekRoute(base::TimeDelta time) { |
| + if (route_controller_observer_) |
| + route_controller_observer_->controller()->Seek(time); |
| +} |
| + |
| +void MediaRouterUI::SetRouteVolume(float volume) { |
| + if (route_controller_observer_) |
| + route_controller_observer_->controller()->SetVolume(volume); |
| +} |
| + |
| +void MediaRouterUI::SetRouteMute(bool mute) { |
| + if (route_controller_observer_) |
| + route_controller_observer_->controller()->SetMute(mute); |
| +} |
| + |
| +void MediaRouterUI::OnUIDetailsViewOpened(MediaRoute::Id route_id) { |
|
imcheng
2017/04/22 00:22:51
const ref for route_id
takumif
2017/04/24 20:59:23
Done.
|
| + if (!IsValidRouteId(route_id)) |
| + return; |
| + route_controller_observer_ = base::MakeUnique<UIMediaRouteControllerObserver>( |
|
imcheng
2017/04/22 00:22:51
What if route_controller_observer_ is already non-
takumif
2017/04/24 20:59:23
That should be fine. Given we can only have the ro
imcheng
2017/04/26 21:48:39
In general we can't always trust the WebUI to do t
takumif
2017/04/27 03:04:17
Done.
|
| + this, router_->GetRouteController(route_id)); |
| +} |
| + |
| +void MediaRouterUI::OnUIDetailsViewClosed() { |
| + route_controller_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(); |
| +} |
| + |
| +void MediaRouterUI::OnRouteControllerInvalidated() { |
| + route_controller_observer_.reset(); |
| + handler_->OnRouteControllerInvalidated(); |
| +} |
| + |
| std::string MediaRouterUI::GetSerializedInitiatorOrigin() const { |
| url::Origin origin = initiator_ |
| ? url::Origin(initiator_->GetLastCommittedURL()) |