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

Side by Side Diff: chrome/browser/ui/webui/media_router/media_router_ui.cc

Issue 2068593002: [Media Router] Assign each route a current cast mode if possible (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2743
Patch Set: Created 4 years, 6 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 <utility> 9 #include <utility>
10 10
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 void OnIssueUpdated(const Issue* issue) override { ui_->SetIssue(issue); } 116 void OnIssueUpdated(const Issue* issue) override { ui_->SetIssue(issue); }
117 117
118 private: 118 private:
119 // Reference back to the owning MediaRouterUI instance. 119 // Reference back to the owning MediaRouterUI instance.
120 MediaRouterUI* ui_; 120 MediaRouterUI* ui_;
121 121
122 DISALLOW_COPY_AND_ASSIGN(UIIssuesObserver); 122 DISALLOW_COPY_AND_ASSIGN(UIIssuesObserver);
123 }; 123 };
124 124
125 MediaRouterUI::UIMediaRoutesObserver::UIMediaRoutesObserver( 125 MediaRouterUI::UIMediaRoutesObserver::UIMediaRoutesObserver(
126 MediaRouter* router, const MediaSource::Id& source_id, 126 MediaRouter* router,
127 const MediaSource::Id& source_id,
127 const RoutesUpdatedCallback& callback) 128 const RoutesUpdatedCallback& callback)
128 : MediaRoutesObserver(router, source_id), callback_(callback) { 129 : MediaRoutesObserver(router, source_id), callback_(callback) {
129 DCHECK(!callback_.is_null()); 130 DCHECK(!callback_.is_null());
130 } 131 }
131 132
132 MediaRouterUI::UIMediaRoutesObserver::~UIMediaRoutesObserver() {} 133 MediaRouterUI::UIMediaRoutesObserver::~UIMediaRoutesObserver() {}
133 134
134 void MediaRouterUI::UIMediaRoutesObserver::OnRoutesUpdated( 135 void MediaRouterUI::UIMediaRoutesObserver::OnRoutesUpdated(
135 const std::vector<MediaRoute>& routes, 136 const std::vector<MediaRoute>& routes,
136 const std::vector<MediaRoute::Id>& joinable_route_ids) { 137 const std::vector<MediaRoute::Id>& joinable_route_ids) {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 DCHECK(!query_result_manager_.get()); 218 DCHECK(!query_result_manager_.get());
218 219
219 presentation_service_delegate_ = delegate; 220 presentation_service_delegate_ = delegate;
220 presentation_service_delegate_->AddDefaultPresentationRequestObserver(this); 221 presentation_service_delegate_->AddDefaultPresentationRequestObserver(this);
221 InitCommon(presentation_service_delegate_->web_contents()); 222 InitCommon(presentation_service_delegate_->web_contents());
222 if (presentation_service_delegate_->HasDefaultPresentationRequest()) { 223 if (presentation_service_delegate_->HasDefaultPresentationRequest()) {
223 OnDefaultPresentationChanged( 224 OnDefaultPresentationChanged(
224 presentation_service_delegate_->GetDefaultPresentationRequest()); 225 presentation_service_delegate_->GetDefaultPresentationRequest());
225 } else { 226 } else {
226 // Register for MediaRoute updates without a media source. 227 // Register for MediaRoute updates without a media source.
227 routes_observer_.reset(new UIMediaRoutesObserver(router_, MediaSource::Id(), 228 routes_observer_.reset(new UIMediaRoutesObserver(
228 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this)))); 229 router_, MediaSource::Id(),
230 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this))));
229 } 231 }
230 } 232 }
231 233
232 void MediaRouterUI::InitWithPresentationSessionRequest( 234 void MediaRouterUI::InitWithPresentationSessionRequest(
233 content::WebContents* initiator, 235 content::WebContents* initiator,
234 const base::WeakPtr<PresentationServiceDelegateImpl>& delegate, 236 const base::WeakPtr<PresentationServiceDelegateImpl>& delegate,
235 std::unique_ptr<CreatePresentationConnectionRequest> 237 std::unique_ptr<CreatePresentationConnectionRequest>
236 create_session_request) { 238 create_session_request) {
237 DCHECK(initiator); 239 DCHECK(initiator);
238 DCHECK(create_session_request); 240 DCHECK(create_session_request);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this)))); 307 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this))));
306 308
307 UpdateCastModes(); 309 UpdateCastModes();
308 } 310 }
309 311
310 void MediaRouterUI::OnDefaultPresentationRemoved() { 312 void MediaRouterUI::OnDefaultPresentationRemoved() {
311 presentation_request_.reset(); 313 presentation_request_.reset();
312 query_result_manager_->StopSinksQuery(MediaCastMode::DEFAULT); 314 query_result_manager_->StopSinksQuery(MediaCastMode::DEFAULT);
313 // Register for MediaRoute updates without a media source. 315 // Register for MediaRoute updates without a media source.
314 routes_observer_.reset(new UIMediaRoutesObserver( 316 routes_observer_.reset(new UIMediaRoutesObserver(
315 router_, MediaSource::Id(), 317 router_, MediaSource::Id(),
316 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this)))); 318 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this))));
317 UpdateCastModes(); 319 UpdateCastModes();
318 } 320 }
319 321
320 void MediaRouterUI::UpdateCastModes() { 322 void MediaRouterUI::UpdateCastModes() {
321 // Gets updated cast modes from |query_result_manager_| and forwards it to UI. 323 // Gets updated cast modes from |query_result_manager_| and forwards it to UI.
322 query_result_manager_->GetSupportedCastModes(&cast_modes_); 324 query_result_manager_->GetSupportedCastModes(&cast_modes_);
323 if (ui_initialized_) { 325 if (ui_initialized_) {
324 handler_->UpdateCastModes(cast_modes_, GetPresentationRequestSourceName()); 326 handler_->UpdateCastModes(cast_modes_, GetPresentationRequestSourceName());
325 } 327 }
326 } 328 }
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 517
516 void MediaRouterUI::SetIssue(const Issue* issue) { 518 void MediaRouterUI::SetIssue(const Issue* issue) {
517 if (ui_initialized_) handler_->UpdateIssue(issue); 519 if (ui_initialized_) handler_->UpdateIssue(issue);
518 } 520 }
519 521
520 void MediaRouterUI::OnRoutesUpdated( 522 void MediaRouterUI::OnRoutesUpdated(
521 const std::vector<MediaRoute>& routes, 523 const std::vector<MediaRoute>& routes,
522 const std::vector<MediaRoute::Id>& joinable_route_ids) { 524 const std::vector<MediaRoute::Id>& joinable_route_ids) {
523 routes_ = routes; 525 routes_ = routes;
524 joinable_route_ids_ = joinable_route_ids; 526 joinable_route_ids_ = joinable_route_ids;
525 if (ui_initialized_) handler_->UpdateRoutes(routes_, joinable_route_ids_); 527
528 std::unordered_map<MediaSource::Id, MediaCastMode> available_source_map;
529 for (const auto& cast_mode : cast_modes_) {
530 available_source_map.insert(std::make_pair(
531 query_result_manager_->GetSourceForCastMode(cast_mode).id(),
532 cast_mode));
533 }
534
535 current_cast_modes_.clear();
536 for (const auto& route : routes) {
537 auto source_entry = available_source_map.find(route.media_source().id());
538 if (source_entry != available_source_map.end()) {
539 current_cast_modes_.insert(
540 std::make_pair(route.media_route_id(), source_entry->second));
541 }
542 }
543
544 if (ui_initialized_)
545 handler_->UpdateRoutes(routes_, joinable_route_ids_, current_cast_modes_);
526 } 546 }
527 547
528 void MediaRouterUI::OnRouteResponseReceived( 548 void MediaRouterUI::OnRouteResponseReceived(
529 int route_request_id, 549 int route_request_id,
530 const MediaSink::Id& sink_id, 550 const MediaSink::Id& sink_id,
531 MediaCastMode cast_mode, 551 MediaCastMode cast_mode,
532 const base::string16& presentation_request_source_name, 552 const base::string16& presentation_request_source_name,
533 const RouteRequestResult& result) { 553 const RouteRequestResult& result) {
534 DVLOG(1) << "OnRouteResponseReceived"; 554 DVLOG(1) << "OnRouteResponseReceived";
535 // If we receive a new route that we aren't expecting, do nothing. 555 // If we receive a new route that we aren't expecting, do nothing.
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 base::Time::Now() - start_time_); 684 base::Time::Now() - start_time_);
665 start_time_ = base::Time(); 685 start_time_ = base::Time();
666 } 686 }
667 } 687 }
668 688
669 void MediaRouterUI::UpdateMaxDialogHeight(int height) { 689 void MediaRouterUI::UpdateMaxDialogHeight(int height) {
670 handler_->UpdateMaxDialogHeight(height); 690 handler_->UpdateMaxDialogHeight(height);
671 } 691 }
672 692
673 } // namespace media_router 693 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698