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

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

Issue 2862393002: [Media Router] Force DEFAULT cast mode when starting presentations from content. (Closed)
Patch Set: Update unittests Created 3 years, 7 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 <unordered_map> 9 #include <unordered_map>
10 #include <utility> 10 #include <utility>
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698