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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/media_router/media_router_ui.h" 5 #include "chrome/browser/ui/webui/media_router/media_router_ui.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <unordered_map> 9 #include <unordered_map>
10 #include <utility> 10 #include <utility>
(...skipping 13 matching lines...) Expand all
24 #include "chrome/browser/media/router/media_router_metrics.h" 24 #include "chrome/browser/media/router/media_router_metrics.h"
25 #include "chrome/browser/media/router/media_routes_observer.h" 25 #include "chrome/browser/media/router/media_routes_observer.h"
26 #include "chrome/browser/media/router/media_sinks_observer.h" 26 #include "chrome/browser/media/router/media_sinks_observer.h"
27 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h" 27 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h"
28 #include "chrome/browser/media/router/presentation_service_delegate_impl.h" 28 #include "chrome/browser/media/router/presentation_service_delegate_impl.h"
29 #include "chrome/browser/profiles/profile.h" 29 #include "chrome/browser/profiles/profile.h"
30 #include "chrome/browser/sessions/session_tab_helper.h" 30 #include "chrome/browser/sessions/session_tab_helper.h"
31 #include "chrome/browser/ui/webui/media_router/media_router_localized_strings_pr ovider.h" 31 #include "chrome/browser/ui/webui/media_router/media_router_localized_strings_pr ovider.h"
32 #include "chrome/browser/ui/webui/media_router/media_router_resources_provider.h " 32 #include "chrome/browser/ui/webui/media_router/media_router_resources_provider.h "
33 #include "chrome/browser/ui/webui/media_router/media_router_webui_message_handle r.h" 33 #include "chrome/browser/ui/webui/media_router/media_router_webui_message_handle r.h"
34 #include "chrome/common/chrome_features.h"
34 #include "chrome/common/media_router/issue.h" 35 #include "chrome/common/media_router/issue.h"
35 #include "chrome/common/media_router/media_route.h" 36 #include "chrome/common/media_router/media_route.h"
36 #include "chrome/common/media_router/media_sink.h" 37 #include "chrome/common/media_router/media_sink.h"
37 #include "chrome/common/media_router/media_source.h" 38 #include "chrome/common/media_router/media_source.h"
38 #include "chrome/common/media_router/media_source_helper.h" 39 #include "chrome/common/media_router/media_source_helper.h"
39 #include "chrome/common/media_router/route_request_result.h" 40 #include "chrome/common/media_router/route_request_result.h"
40 #include "chrome/common/pref_names.h" 41 #include "chrome/common/pref_names.h"
41 #include "chrome/common/url_constants.h" 42 #include "chrome/common/url_constants.h"
42 #include "chrome/grit/generated_resources.h" 43 #include "chrome/grit/generated_resources.h"
43 #include "components/prefs/pref_service.h" 44 #include "components/prefs/pref_service.h"
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 } 147 }
147 148
148 MediaRouterUI::UIMediaRoutesObserver::~UIMediaRoutesObserver() {} 149 MediaRouterUI::UIMediaRoutesObserver::~UIMediaRoutesObserver() {}
149 150
150 void MediaRouterUI::UIMediaRoutesObserver::OnRoutesUpdated( 151 void MediaRouterUI::UIMediaRoutesObserver::OnRoutesUpdated(
151 const std::vector<MediaRoute>& routes, 152 const std::vector<MediaRoute>& routes,
152 const std::vector<MediaRoute::Id>& joinable_route_ids) { 153 const std::vector<MediaRoute::Id>& joinable_route_ids) {
153 callback_.Run(routes, joinable_route_ids); 154 callback_.Run(routes, joinable_route_ids);
154 } 155 }
155 156
157 MediaRouterUI::UIMediaRouteControllerObserver::UIMediaRouteControllerObserver(
158 MediaRouterUI* ui,
159 scoped_refptr<MediaRouteController> controller)
160 : MediaRouteController::Observer(std::move(controller)), ui_(ui) {}
161 MediaRouterUI::UIMediaRouteControllerObserver::
162 ~UIMediaRouteControllerObserver() {}
163
164 void MediaRouterUI::UIMediaRouteControllerObserver::OnMediaStatusUpdated(
165 const MediaStatus& status) {
166 current_media_status_ = base::make_optional<MediaStatus>(MediaStatus(status));
167 ui_->handler_->UpdateMediaRouteStatus(status);
168 }
169
170 void MediaRouterUI::UIMediaRouteControllerObserver::OnControllerInvalidated() {
171 ui_->OnRouteControllerInvalidated();
172 }
173
174 const MediaStatus*
175 MediaRouterUI::UIMediaRouteControllerObserver::GetCurrentMediaStatus() const {
176 return current_media_status_ ? &current_media_status_.value() : nullptr;
177 }
178
156 MediaRouterUI::MediaRouterUI(content::WebUI* web_ui) 179 MediaRouterUI::MediaRouterUI(content::WebUI* web_ui)
157 : ConstrainedWebDialogUI(web_ui), 180 : ConstrainedWebDialogUI(web_ui),
158 ui_initialized_(false), 181 ui_initialized_(false),
159 current_route_request_id_(-1), 182 current_route_request_id_(-1),
160 route_request_counter_(0), 183 route_request_counter_(0),
161 initiator_(nullptr), 184 initiator_(nullptr),
162 router_(nullptr), 185 router_(nullptr),
163 weak_factory_(this) { 186 weak_factory_(this) {
164 auto handler = base::MakeUnique<MediaRouterWebUIMessageHandler>(this); 187 auto handler = base::MakeUnique<MediaRouterWebUIMessageHandler>(this);
165 handler_ = handler.get(); 188 handler_ = handler.get();
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 MediaRouterMetrics::RecordMediaRouterDialogLoaded( 776 MediaRouterMetrics::RecordMediaRouterDialogLoaded(
754 base::Time::Now() - start_time_); 777 base::Time::Now() - start_time_);
755 start_time_ = base::Time(); 778 start_time_ = base::Time();
756 } 779 }
757 } 780 }
758 781
759 void MediaRouterUI::UpdateMaxDialogHeight(int height) { 782 void MediaRouterUI::UpdateMaxDialogHeight(int height) {
760 handler_->UpdateMaxDialogHeight(height); 783 handler_->UpdateMaxDialogHeight(height);
761 } 784 }
762 785
786 void MediaRouterUI::PlayRoute() {
787 if (route_controller_observer_)
788 route_controller_observer_->controller()->Play();
789 }
790
791 void MediaRouterUI::PauseRoute() {
792 if (route_controller_observer_)
793 route_controller_observer_->controller()->Pause();
794 }
795
796 void MediaRouterUI::SeekRoute(base::TimeDelta time) {
797 if (route_controller_observer_ &&
798 route_controller_observer_->GetCurrentMediaStatus() &&
799 time >= base::TimeDelta() &&
800 time <= route_controller_observer_->GetCurrentMediaStatus()->duration) {
801 route_controller_observer_->controller()->Seek(time);
802 }
803 }
804
805 void MediaRouterUI::SetRouteVolume(float volume) {
806 if (route_controller_observer_ && volume >= 0 && volume <= 1)
807 route_controller_observer_->controller()->SetVolume(volume);
808 }
809
810 void MediaRouterUI::SetRouteMute(bool mute) {
811 if (route_controller_observer_)
812 route_controller_observer_->controller()->SetMute(mute);
813 }
814
815 void MediaRouterUI::OnUIDetailsViewOpened(const MediaRoute::Id& route_id) {
816 if (!IsValidRouteId(route_id))
817 return;
818 route_controller_observer_ = base::MakeUnique<UIMediaRouteControllerObserver>(
819 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.
820 }
821
822 void MediaRouterUI::OnUIDetailsViewClosed() {
823 route_controller_observer_.reset();
824 }
825
826 bool MediaRouterUI::IsValidRouteId(const MediaRoute::Id& route_id) const {
827 return std::find_if(routes_.begin(), routes_.end(),
828 [&route_id](const MediaRoute& route) {
829 return route.media_route_id() == route_id;
830 }) != routes_.end();
831 }
832
833 void MediaRouterUI::OnRouteControllerInvalidated() {
834 route_controller_observer_.reset();
835 handler_->OnRouteControllerInvalidated();
836 }
837
763 std::string MediaRouterUI::GetSerializedInitiatorOrigin() const { 838 std::string MediaRouterUI::GetSerializedInitiatorOrigin() const {
764 url::Origin origin = initiator_ 839 url::Origin origin = initiator_
765 ? url::Origin(initiator_->GetLastCommittedURL()) 840 ? url::Origin(initiator_->GetLastCommittedURL())
766 : url::Origin(); 841 : url::Origin();
767 return origin.Serialize(); 842 return origin.Serialize();
768 } 843 }
769 844
770 } // namespace media_router 845 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698