| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |