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

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

Issue 2731033002: [Media Router] Custom Controls 3 - add plumbing through MRUI and MRWebUIMessageHandler (Closed)
Patch Set: Address Derek's comments 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..b196b0875974ce330cd4376869985d89dac68f24 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,28 @@ 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) {
+ current_media_status_ = base::make_optional<MediaStatus>(MediaStatus(status));
+ ui_->handler_->UpdateMediaRouteStatus(status);
+}
+
+void MediaRouterUI::UIMediaRouteControllerObserver::OnControllerInvalidated() {
+ ui_->OnRouteControllerInvalidated();
+}
+
+const MediaStatus*
+MediaRouterUI::UIMediaRouteControllerObserver::GetCurrentMediaStatus() const {
+ return current_media_status_ ? &current_media_status_.value() : nullptr;
+}
+
MediaRouterUI::MediaRouterUI(content::WebUI* web_ui)
: ConstrainedWebDialogUI(web_ui),
ui_initialized_(false),
@@ -760,6 +783,58 @@ 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_->GetCurrentMediaStatus() &&
+ time >= base::TimeDelta() &&
+ time <= route_controller_observer_->GetCurrentMediaStatus()->duration) {
+ route_controller_observer_->controller()->Seek(time);
+ }
+}
+
+void MediaRouterUI::SetRouteVolume(float volume) {
+ if (route_controller_observer_ && volume >= 0 && volume <= 1)
+ route_controller_observer_->controller()->SetVolume(volume);
+}
+
+void MediaRouterUI::SetRouteMute(bool mute) {
+ if (route_controller_observer_)
+ route_controller_observer_->controller()->SetMute(mute);
+}
+
+void MediaRouterUI::OnUIDetailsViewOpened(const MediaRoute::Id& route_id) {
+ if (!IsValidRouteId(route_id))
+ return;
+ route_controller_observer_ = base::MakeUnique<UIMediaRouteControllerObserver>(
+ this, router_->GetRouteController(route_id));
mark a. foltz 2017/04/26 21:01:18 If the route is invalid, does |router_| return a n
takumif 2017/04/27 03:04:17 Right, MediaRouter would return null in that case.
+}
+
+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())

Powered by Google App Engine
This is Rietveld 408576698