Chromium Code Reviews| 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 <unordered_map> | 9 #include <unordered_map> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 263 std::unique_ptr<CreatePresentationConnectionRequest> | 263 std::unique_ptr<CreatePresentationConnectionRequest> |
| 264 create_session_request) { | 264 create_session_request) { |
| 265 DCHECK(initiator); | 265 DCHECK(initiator); |
| 266 DCHECK(delegate); | 266 DCHECK(delegate); |
| 267 DCHECK(create_session_request); | 267 DCHECK(create_session_request); |
| 268 DCHECK(!create_session_request_); | 268 DCHECK(!create_session_request_); |
| 269 DCHECK(!query_result_manager_); | 269 DCHECK(!query_result_manager_); |
| 270 | 270 |
| 271 create_session_request_ = std::move(create_session_request); | 271 create_session_request_ = std::move(create_session_request); |
| 272 presentation_service_delegate_ = delegate->GetWeakPtr(); | 272 presentation_service_delegate_ = delegate->GetWeakPtr(); |
| 273 | |
| 274 const PresentationRequest& presentation_request = | |
|
takumif
2017/05/16 21:51:28
Nit: Was there a reason why you stored this in a v
mark a. foltz
2017/05/16 22:02:11
Reverted
| |
| 275 create_session_request_->presentation_request(); | |
| 276 | |
| 273 InitCommon(initiator); | 277 InitCommon(initiator); |
| 274 OnDefaultPresentationChanged(create_session_request_->presentation_request()); | 278 OnDefaultPresentationChanged(presentation_request); |
| 275 } | 279 } |
| 276 | 280 |
| 277 void MediaRouterUI::InitCommon(content::WebContents* initiator) { | 281 void MediaRouterUI::InitCommon(content::WebContents* initiator) { |
| 278 DCHECK(initiator); | 282 DCHECK(initiator); |
| 279 DCHECK(router_); | 283 DCHECK(router_); |
| 280 | 284 |
| 281 TRACE_EVENT_NESTABLE_ASYNC_INSTANT1("media_router", "UI", initiator, | 285 TRACE_EVENT_NESTABLE_ASYNC_INSTANT1("media_router", "UI", initiator, |
| 282 "MediaRouterUI::InitCommon", this); | 286 "MediaRouterUI::InitCommon", this); |
| 283 | 287 |
| 288 // Presentation requests from content must show the origin requesting | |
| 289 // presentation: crbug.com/704964 | |
| 290 if (create_session_request_) | |
| 291 forced_cast_mode_ = MediaCastMode::DEFAULT; | |
| 292 | |
| 284 router_->OnUserGesture(); | 293 router_->OnUserGesture(); |
| 285 | 294 |
| 286 // Create |collator_| before |query_result_manager_| so that |collator_| is | 295 // Create |collator_| before |query_result_manager_| so that |collator_| is |
| 287 // already set up when we get a callback from |query_result_manager_|. | 296 // already set up when we get a callback from |query_result_manager_|. |
| 288 UErrorCode error = U_ZERO_ERROR; | 297 UErrorCode error = U_ZERO_ERROR; |
| 289 const std::string& locale = g_browser_process->GetApplicationLocale(); | 298 const std::string& locale = g_browser_process->GetApplicationLocale(); |
| 290 collator_.reset( | 299 collator_.reset( |
| 291 icu::Collator::createInstance(icu::Locale(locale.c_str()), error)); | 300 icu::Collator::createInstance(icu::Locale(locale.c_str()), error)); |
| 292 if (U_FAILURE(error)) { | 301 if (U_FAILURE(error)) { |
| 293 DLOG(ERROR) << "Failed to create collator for locale " << locale; | 302 DLOG(ERROR) << "Failed to create collator for locale " << locale; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 350 routes_observer_.reset(new UIMediaRoutesObserver( | 359 routes_observer_.reset(new UIMediaRoutesObserver( |
| 351 router_, source_for_route_observer.id(), | 360 router_, source_for_route_observer.id(), |
| 352 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this)))); | 361 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this)))); |
| 353 | 362 |
| 354 UpdateCastModes(); | 363 UpdateCastModes(); |
| 355 } | 364 } |
| 356 | 365 |
| 357 void MediaRouterUI::OnDefaultPresentationRemoved() { | 366 void MediaRouterUI::OnDefaultPresentationRemoved() { |
| 358 presentation_request_.reset(); | 367 presentation_request_.reset(); |
| 359 query_result_manager_->RemoveSourcesForCastMode(MediaCastMode::DEFAULT); | 368 query_result_manager_->RemoveSourcesForCastMode(MediaCastMode::DEFAULT); |
| 369 | |
| 370 // This should not be set if the dialog was initiated with a default | |
| 371 // presentation request from the top level frame. However, clear it just to | |
| 372 // be safe. | |
| 373 forced_cast_mode_ = base::nullopt; | |
| 374 | |
| 360 // Register for MediaRoute updates without a media source. | 375 // Register for MediaRoute updates without a media source. |
| 361 routes_observer_.reset(new UIMediaRoutesObserver( | 376 routes_observer_.reset(new UIMediaRoutesObserver( |
| 362 router_, MediaSource::Id(), | 377 router_, MediaSource::Id(), |
| 363 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this)))); | 378 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this)))); |
| 364 UpdateCastModes(); | 379 UpdateCastModes(); |
| 365 } | 380 } |
| 366 | 381 |
| 367 void MediaRouterUI::UpdateCastModes() { | 382 void MediaRouterUI::UpdateCastModes() { |
| 368 // Gets updated cast modes from |query_result_manager_| and forwards it to UI. | 383 // Gets updated cast modes from |query_result_manager_| and forwards it to UI. |
| 369 cast_modes_ = query_result_manager_->GetSupportedCastModes(); | 384 cast_modes_ = query_result_manager_->GetSupportedCastModes(); |
| 370 if (ui_initialized_) { | 385 if (ui_initialized_) { |
| 371 handler_->UpdateCastModes(cast_modes_, GetPresentationRequestSourceName()); | 386 handler_->UpdateCastModes(cast_modes_, GetPresentationRequestSourceName(), |
| 387 forced_cast_mode()); | |
| 372 } | 388 } |
| 373 } | 389 } |
| 374 | 390 |
| 375 void MediaRouterUI::UpdateRoutesToCastModesMapping() { | 391 void MediaRouterUI::UpdateRoutesToCastModesMapping() { |
| 376 std::unordered_map<MediaSource::Id, MediaCastMode> available_source_map; | 392 std::unordered_map<MediaSource::Id, MediaCastMode> available_source_map; |
| 377 for (const auto& cast_mode : cast_modes_) { | 393 for (const auto& cast_mode : cast_modes_) { |
| 378 for (const auto& source : | 394 for (const auto& source : |
| 379 query_result_manager_->GetSourcesForCastMode(cast_mode)) { | 395 query_result_manager_->GetSourcesForCastMode(cast_mode)) { |
| 380 available_source_map.insert(std::make_pair(source.id(), cast_mode)); | 396 available_source_map.insert(std::make_pair(source.id(), cast_mode)); |
| 381 } | 397 } |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 815 } | 831 } |
| 816 | 832 |
| 817 std::string MediaRouterUI::GetSerializedInitiatorOrigin() const { | 833 std::string MediaRouterUI::GetSerializedInitiatorOrigin() const { |
| 818 url::Origin origin = initiator_ | 834 url::Origin origin = initiator_ |
| 819 ? url::Origin(initiator_->GetLastCommittedURL()) | 835 ? url::Origin(initiator_->GetLastCommittedURL()) |
| 820 : url::Origin(); | 836 : url::Origin(); |
| 821 return origin.Serialize(); | 837 return origin.Serialize(); |
| 822 } | 838 } |
| 823 | 839 |
| 824 } // namespace media_router | 840 } // namespace media_router |
| OLD | NEW |