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

Side by Side 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, 9 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 11 matching lines...) Expand all
22 #include "chrome/browser/media/router/issues_observer.h" 22 #include "chrome/browser/media/router/issues_observer.h"
23 #include "chrome/browser/media/router/media_route.h" 23 #include "chrome/browser/media/router/media_route.h"
24 #include "chrome/browser/media/router/media_router.h" 24 #include "chrome/browser/media/router/media_router.h"
25 #include "chrome/browser/media/router/media_router_factory.h" 25 #include "chrome/browser/media/router/media_router_factory.h"
26 #include "chrome/browser/media/router/media_router_metrics.h" 26 #include "chrome/browser/media/router/media_router_metrics.h"
27 #include "chrome/browser/media/router/media_routes_observer.h" 27 #include "chrome/browser/media/router/media_routes_observer.h"
28 #include "chrome/browser/media/router/media_sink.h" 28 #include "chrome/browser/media/router/media_sink.h"
29 #include "chrome/browser/media/router/media_sinks_observer.h" 29 #include "chrome/browser/media/router/media_sinks_observer.h"
30 #include "chrome/browser/media/router/media_source.h" 30 #include "chrome/browser/media/router/media_source.h"
31 #include "chrome/browser/media/router/media_source_helper.h" 31 #include "chrome/browser/media/router/media_source_helper.h"
32 #include "chrome/browser/media/router/mojo/media_route_controller.h"
32 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h" 33 #include "chrome/browser/media/router/mojo/media_router_mojo_impl.h"
33 #include "chrome/browser/media/router/presentation_service_delegate_impl.h" 34 #include "chrome/browser/media/router/presentation_service_delegate_impl.h"
34 #include "chrome/browser/media/router/route_request_result.h" 35 #include "chrome/browser/media/router/route_request_result.h"
35 #include "chrome/browser/profiles/profile.h" 36 #include "chrome/browser/profiles/profile.h"
36 #include "chrome/browser/sessions/session_tab_helper.h" 37 #include "chrome/browser/sessions/session_tab_helper.h"
37 #include "chrome/browser/ui/webui/media_router/media_router_localized_strings_pr ovider.h" 38 #include "chrome/browser/ui/webui/media_router/media_router_localized_strings_pr ovider.h"
38 #include "chrome/browser/ui/webui/media_router/media_router_resources_provider.h " 39 #include "chrome/browser/ui/webui/media_router/media_router_resources_provider.h "
39 #include "chrome/browser/ui/webui/media_router/media_router_webui_message_handle r.h" 40 #include "chrome/browser/ui/webui/media_router/media_router_webui_message_handle r.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"
(...skipping 104 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::UIMediaRouteStatusObserver::UIMediaRouteStatusObserver(
158 MediaRouterWebUIMessageHandler* handler)
159 : handler_(handler) {}
160 MediaRouterUI::UIMediaRouteStatusObserver::~UIMediaRouteStatusObserver() {}
161
162 void MediaRouterUI::UIMediaRouteStatusObserver::OnMediaRouteStatusUpdated(
163 const MediaStatus& status) {
164 handler_->UpdateMediaRouteStatus(status);
165 }
166
156 MediaRouterUI::MediaRouterUI(content::WebUI* web_ui) 167 MediaRouterUI::MediaRouterUI(content::WebUI* web_ui)
157 : ConstrainedWebDialogUI(web_ui), 168 : ConstrainedWebDialogUI(web_ui),
158 ui_initialized_(false), 169 ui_initialized_(false),
159 current_route_request_id_(-1), 170 current_route_request_id_(-1),
160 route_request_counter_(0), 171 route_request_counter_(0),
161 initiator_(nullptr), 172 initiator_(nullptr),
162 router_(nullptr), 173 router_(nullptr),
163 weak_factory_(this) { 174 weak_factory_(this) {
164 auto handler = base::MakeUnique<MediaRouterWebUIMessageHandler>(this); 175 auto handler = base::MakeUnique<MediaRouterWebUIMessageHandler>(this);
165 handler_ = handler.get(); 176 handler_ = handler.get();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 if (presentation_sinks_available) { 215 if (presentation_sinks_available) {
205 create_session_request_->InvokeErrorCallback(content::PresentationError( 216 create_session_request_->InvokeErrorCallback(content::PresentationError(
206 content::PRESENTATION_ERROR_SESSION_REQUEST_CANCELLED, 217 content::PRESENTATION_ERROR_SESSION_REQUEST_CANCELLED,
207 "Dialog closed.")); 218 "Dialog closed."));
208 } else { 219 } else {
209 create_session_request_->InvokeErrorCallback(content::PresentationError( 220 create_session_request_->InvokeErrorCallback(content::PresentationError(
210 content::PRESENTATION_ERROR_NO_AVAILABLE_SCREENS, 221 content::PRESENTATION_ERROR_NO_AVAILABLE_SCREENS,
211 "No screens found.")); 222 "No screens found."));
212 } 223 }
213 } 224 }
225 if (route_controller_)
226 route_controller_->RemoveObserver(route_status_observer_.get());
214 } 227 }
215 228
216 void MediaRouterUI::InitWithDefaultMediaSource( 229 void MediaRouterUI::InitWithDefaultMediaSource(
217 content::WebContents* initiator, 230 content::WebContents* initiator,
218 PresentationServiceDelegateImpl* delegate) { 231 PresentationServiceDelegateImpl* delegate) {
219 DCHECK(initiator); 232 DCHECK(initiator);
220 DCHECK(!presentation_service_delegate_); 233 DCHECK(!presentation_service_delegate_);
221 DCHECK(!query_result_manager_.get()); 234 DCHECK(!query_result_manager_.get());
222 235
223 InitCommon(initiator); 236 InitCommon(initiator);
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 } 621 }
609 622
610 routes_.push_back(route); 623 routes_.push_back(route);
611 } 624 }
612 } 625 }
613 UpdateRoutesToCastModesMapping(); 626 UpdateRoutesToCastModesMapping();
614 627
615 if (ui_initialized_) 628 if (ui_initialized_)
616 handler_->UpdateRoutes(routes_, joinable_route_ids_, 629 handler_->UpdateRoutes(routes_, joinable_route_ids_,
617 routes_and_cast_modes_); 630 routes_and_cast_modes_);
631
632 if (selected_route_ && !IsValidRouteId(selected_route_.value())) {
633 selected_route_.reset();
634 route_controller_ = nullptr;
635 }
618 } 636 }
619 637
620 void MediaRouterUI::OnRouteResponseReceived( 638 void MediaRouterUI::OnRouteResponseReceived(
621 int route_request_id, 639 int route_request_id,
622 const MediaSink::Id& sink_id, 640 const MediaSink::Id& sink_id,
623 MediaCastMode cast_mode, 641 MediaCastMode cast_mode,
624 const base::string16& presentation_request_source_name, 642 const base::string16& presentation_request_source_name,
625 const RouteRequestResult& result) { 643 const RouteRequestResult& result) {
626 DVLOG(1) << "OnRouteResponseReceived"; 644 DVLOG(1) << "OnRouteResponseReceived";
627 // If we receive a new route that we aren't expecting, do nothing. 645 // If we receive a new route that we aren't expecting, do nothing.
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 MediaRouterMetrics::RecordMediaRouterDialogLoaded( 772 MediaRouterMetrics::RecordMediaRouterDialogLoaded(
755 base::Time::Now() - start_time_); 773 base::Time::Now() - start_time_);
756 start_time_ = base::Time(); 774 start_time_ = base::Time();
757 } 775 }
758 } 776 }
759 777
760 void MediaRouterUI::UpdateMaxDialogHeight(int height) { 778 void MediaRouterUI::UpdateMaxDialogHeight(int height) {
761 handler_->UpdateMaxDialogHeight(height); 779 handler_->UpdateMaxDialogHeight(height);
762 } 780 }
763 781
782 void MediaRouterUI::PlayRoute() {
783 if (route_controller_)
784 route_controller_->Play();
785 }
786
787 void MediaRouterUI::PauseRoute() {
788 if (route_controller_)
789 route_controller_->Pause();
790 }
791
792 void MediaRouterUI::SeekRoute(uint32_t time) {
793 if (route_controller_)
794 route_controller_->Seek(time);
795 }
796
797 void MediaRouterUI::SetRouteVolume(float volume) {
798 if (route_controller_)
799 route_controller_->SetVolume(volume);
800 }
801
802 void MediaRouterUI::SetRouteMute(bool mute) {
803 if (route_controller_)
804 route_controller_->SetMute(mute);
805 }
806
807 void MediaRouterUI::OnUIDetailsViewOpened(MediaRoute::Id route_id) {
808 if (!IsValidRouteId(route_id))
809 return;
810 selected_route_ = base::Optional<MediaRoute::Id>(route_id);
811 route_controller_ = router_->GetControllerForRoute(route_id);
812 route_status_observer_ =
813 base::MakeUnique<UIMediaRouteStatusObserver>(handler_);
814 route_controller_->AddObserver(route_status_observer_.get());
815 }
816
817 void MediaRouterUI::OnUIDetailsViewClosed() {
818 selected_route_.reset();
819 if (route_controller_)
820 route_controller_->RemoveObserver(route_status_observer_.get());
821 route_controller_ = nullptr;
822 route_status_observer_.reset();
823 }
824
825 bool MediaRouterUI::IsValidRouteId(const MediaRoute::Id& route_id) const {
826 return std::find_if(routes_.begin(), routes_.end(),
827 [&route_id](const MediaRoute& route) {
828 return route.media_route_id() == route_id;
829 }) != routes_.end();
830 }
831
764 std::string MediaRouterUI::GetSerializedInitiatorOrigin() const { 832 std::string MediaRouterUI::GetSerializedInitiatorOrigin() const {
765 url::Origin origin = initiator_ 833 url::Origin origin = initiator_
766 ? url::Origin(initiator_->GetLastCommittedURL()) 834 ? url::Origin(initiator_->GetLastCommittedURL())
767 : url::Origin(); 835 : url::Origin();
768 return origin.Serialize(); 836 return origin.Serialize();
769 } 837 }
770 838
771 } // namespace media_router 839 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698