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 |