| 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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 case TAB_MIRROR: | 85 case TAB_MIRROR: |
| 86 return base::TimeDelta::FromSeconds(kCreateRouteTimeoutSecondsForTab); | 86 return base::TimeDelta::FromSeconds(kCreateRouteTimeoutSecondsForTab); |
| 87 case DESKTOP_MIRROR: | 87 case DESKTOP_MIRROR: |
| 88 return base::TimeDelta::FromSeconds(kCreateRouteTimeoutSecondsForDesktop); | 88 return base::TimeDelta::FromSeconds(kCreateRouteTimeoutSecondsForDesktop); |
| 89 default: | 89 default: |
| 90 NOTREACHED(); | 90 NOTREACHED(); |
| 91 return base::TimeDelta(); | 91 return base::TimeDelta(); |
| 92 } | 92 } |
| 93 } | 93 } |
| 94 | 94 |
| 95 // Returns the first source in |sources| that can be connected to by using the |
| 96 // "Cast" button in the dialog, or an empty source if there is none. This is |
| 97 // used by the Media Router to find such a matching route if it exists. |
| 98 MediaSource GetSourceForRouteObserver(const std::vector<MediaSource>& sources) { |
| 99 auto source_it = |
| 100 std::find_if(sources.begin(), sources.end(), CanConnectToMediaSource); |
| 101 return source_it != sources.end() ? *source_it : MediaSource(""); |
| 102 } |
| 103 |
| 95 } // namespace | 104 } // namespace |
| 96 | 105 |
| 97 // static | 106 // static |
| 98 std::string MediaRouterUI::GetExtensionName( | 107 std::string MediaRouterUI::GetExtensionName( |
| 99 const GURL& gurl, extensions::ExtensionRegistry* registry) { | 108 const GURL& gurl, extensions::ExtensionRegistry* registry) { |
| 100 if (gurl.is_empty() || !registry) return std::string(); | 109 if (gurl.is_empty() || !registry) return std::string(); |
| 101 | 110 |
| 102 const extensions::Extension* extension = | 111 const extensions::Extension* extension = |
| 103 registry->enabled_extensions().GetExtensionOrAppByURL(gurl); | 112 registry->enabled_extensions().GetExtensionOrAppByURL(gurl); |
| 104 | 113 |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 } | 312 } |
| 304 } | 313 } |
| 305 | 314 |
| 306 void MediaRouterUI::OnDefaultPresentationChanged( | 315 void MediaRouterUI::OnDefaultPresentationChanged( |
| 307 const PresentationRequest& presentation_request) { | 316 const PresentationRequest& presentation_request) { |
| 308 std::vector<MediaSource> sources = presentation_request.GetMediaSources(); | 317 std::vector<MediaSource> sources = presentation_request.GetMediaSources(); |
| 309 presentation_request_.reset(new PresentationRequest(presentation_request)); | 318 presentation_request_.reset(new PresentationRequest(presentation_request)); |
| 310 query_result_manager_->SetSourcesForCastMode( | 319 query_result_manager_->SetSourcesForCastMode( |
| 311 MediaCastMode::DEFAULT, sources, | 320 MediaCastMode::DEFAULT, sources, |
| 312 presentation_request_->frame_url().GetOrigin()); | 321 presentation_request_->frame_url().GetOrigin()); |
| 313 // Register for MediaRoute updates. | 322 // Register for MediaRoute updates. NOTE(mfoltz): If there are multiple |
| 314 // TODO(crbug.com/627655): Use multiple URLs. | 323 // sources that can be connected to via the dialog, this will break. We will |
| 324 // need to observe multiple sources (keyed by sinks) in that case. As this is |
| 325 // Cast-specific for the forseeable future, it may be simpler to plumb a new |
| 326 // observer API for this case. |
| 327 const MediaSource source_for_route_observer = |
| 328 GetSourceForRouteObserver(sources); |
| 315 routes_observer_.reset(new UIMediaRoutesObserver( | 329 routes_observer_.reset(new UIMediaRoutesObserver( |
| 316 router_, sources[0].id(), | 330 router_, source_for_route_observer.id(), |
| 317 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this)))); | 331 base::Bind(&MediaRouterUI::OnRoutesUpdated, base::Unretained(this)))); |
| 318 | 332 |
| 319 UpdateCastModes(); | 333 UpdateCastModes(); |
| 320 } | 334 } |
| 321 | 335 |
| 322 void MediaRouterUI::OnDefaultPresentationRemoved() { | 336 void MediaRouterUI::OnDefaultPresentationRemoved() { |
| 323 presentation_request_.reset(); | 337 presentation_request_.reset(); |
| 324 query_result_manager_->RemoveSourcesForCastMode(MediaCastMode::DEFAULT); | 338 query_result_manager_->RemoveSourcesForCastMode(MediaCastMode::DEFAULT); |
| 325 // Register for MediaRoute updates without a media source. | 339 // Register for MediaRoute updates without a media source. |
| 326 routes_observer_.reset(new UIMediaRoutesObserver( | 340 routes_observer_.reset(new UIMediaRoutesObserver( |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 739 } | 753 } |
| 740 | 754 |
| 741 std::string MediaRouterUI::GetSerializedInitiatorOrigin() const { | 755 std::string MediaRouterUI::GetSerializedInitiatorOrigin() const { |
| 742 url::Origin origin = initiator_ | 756 url::Origin origin = initiator_ |
| 743 ? url::Origin(initiator_->GetLastCommittedURL()) | 757 ? url::Origin(initiator_->GetLastCommittedURL()) |
| 744 : url::Origin(); | 758 : url::Origin(); |
| 745 return origin.Serialize(); | 759 return origin.Serialize(); |
| 746 } | 760 } |
| 747 | 761 |
| 748 } // namespace media_router | 762 } // namespace media_router |
| OLD | NEW |