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

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

Issue 2040883002: [Media Router] Assign each route a current cast mode if possible (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove duplicate friend declaration 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 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 512
511 void MediaRouterUI::SetIssue(const Issue* issue) { 513 void MediaRouterUI::SetIssue(const Issue* issue) {
512 if (ui_initialized_) handler_->UpdateIssue(issue); 514 if (ui_initialized_) handler_->UpdateIssue(issue);
513 } 515 }
514 516
515 void MediaRouterUI::OnRoutesUpdated( 517 void MediaRouterUI::OnRoutesUpdated(
516 const std::vector<MediaRoute>& routes, 518 const std::vector<MediaRoute>& routes,
517 const std::vector<MediaRoute::Id>& joinable_route_ids) { 519 const std::vector<MediaRoute::Id>& joinable_route_ids) {
518 routes_ = routes; 520 routes_ = routes;
519 joinable_route_ids_ = joinable_route_ids; 521 joinable_route_ids_ = joinable_route_ids;
520 if (ui_initialized_) handler_->UpdateRoutes(routes_, joinable_route_ids_); 522
523 std::unordered_map<MediaSource::Id, MediaCastMode> available_source_map;
524 for (const auto& cast_mode : cast_modes_) {
525 available_source_map.insert(std::make_pair(
526 query_result_manager_->GetSourceForCastMode(cast_mode).id(),
527 cast_mode));
528 }
529
530 current_cast_modes_.clear();
531 for (const auto& route : routes) {
532 auto source_entry = available_source_map.find(route.media_source().id());
533 if (source_entry != available_source_map.end()) {
534 current_cast_modes_.insert(
535 std::make_pair(route.media_route_id(), source_entry->second));
536 }
537 }
538
539 if (ui_initialized_)
540 handler_->UpdateRoutes(routes_, joinable_route_ids_, current_cast_modes_);
521 } 541 }
522 542
523 void MediaRouterUI::OnRouteResponseReceived( 543 void MediaRouterUI::OnRouteResponseReceived(
524 int route_request_id, 544 int route_request_id,
525 const MediaSink::Id& sink_id, 545 const MediaSink::Id& sink_id,
526 MediaCastMode cast_mode, 546 MediaCastMode cast_mode,
527 const base::string16& presentation_request_source_name, 547 const base::string16& presentation_request_source_name,
528 const RouteRequestResult& result) { 548 const RouteRequestResult& result) {
529 DVLOG(1) << "OnRouteResponseReceived"; 549 DVLOG(1) << "OnRouteResponseReceived";
530 // If we receive a new route that we aren't expecting, do nothing. 550 // If we receive a new route that we aren't expecting, do nothing.
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 base::Time::Now() - start_time_); 674 base::Time::Now() - start_time_);
655 start_time_ = base::Time(); 675 start_time_ = base::Time();
656 } 676 }
657 } 677 }
658 678
659 void MediaRouterUI::UpdateMaxDialogHeight(int height) { 679 void MediaRouterUI::UpdateMaxDialogHeight(int height) {
660 handler_->UpdateMaxDialogHeight(height); 680 handler_->UpdateMaxDialogHeight(height);
661 } 681 }
662 682
663 } // namespace media_router 683 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698