| 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 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |