| 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/media/router/presentation_service_delegate_impl.h" | 5 #include "chrome/browser/media/router/presentation_service_delegate_impl.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/containers/scoped_ptr_hash_map.h" | 9 #include "base/containers/scoped_ptr_hash_map.h" |
| 10 #include "base/guid.h" | 10 #include "base/guid.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 DEFINE_WEB_CONTENTS_USER_DATA_KEY( | 28 DEFINE_WEB_CONTENTS_USER_DATA_KEY( |
| 29 media_router::PresentationServiceDelegateImpl); | 29 media_router::PresentationServiceDelegateImpl); |
| 30 | 30 |
| 31 using content::RenderFrameHost; | 31 using content::RenderFrameHost; |
| 32 | 32 |
| 33 namespace media_router { | 33 namespace media_router { |
| 34 | 34 |
| 35 namespace { | 35 namespace { |
| 36 | 36 |
| 37 using DelegateObserver = content::PresentationServiceDelegate::Observer; | 37 using DelegateObserver = content::PresentationServiceDelegate::Observer; |
| 38 using PresentationSessionErrorCallback = |
| 39 content::PresentationServiceDelegate::PresentationSessionErrorCallback; |
| 40 using PresentationSessionSuccessCallback = |
| 41 content::PresentationServiceDelegate::PresentationSessionSuccessCallback; |
| 38 using RenderFrameHostId = std::pair<int, int>; | 42 using RenderFrameHostId = std::pair<int, int>; |
| 39 | 43 |
| 40 // Returns the unique identifier for the supplied RenderViewHost. | 44 // TODO(imcheng): Presentation URL and ID should be obtained from |route|, not |
| 41 RenderFrameHostId GetRenderFrameHostId(RenderFrameHost* render_view_host) { | 45 // from bound values taken from the request. |
| 42 int render_process_id = render_view_host->GetProcess()->GetID(); | 46 void OnJoinRouteResponse(const std::string& presentation_url, |
| 43 int render_frame_id = render_view_host->GetRoutingID(); | 47 const std::string& presentation_id, |
| 48 const PresentationSessionSuccessCallback& success_cb, |
| 49 const PresentationSessionErrorCallback& error_cb, |
| 50 scoped_ptr<MediaRoute> route, |
| 51 const std::string& error_text) { |
| 52 if (!route.get()) { |
| 53 error_cb.Run(content::PresentationError( |
| 54 content::PRESENTATION_ERROR_NO_PRESENTATION_FOUND, error_text)); |
| 55 } else { |
| 56 DVLOG(1) << "OnJoinRouteResponse: " |
| 57 << "route_id: " << route->media_route_id() |
| 58 << ", presentation URL: " << presentation_url |
| 59 << ", presentation ID: " << presentation_id; |
| 60 success_cb.Run( |
| 61 content::PresentationSessionInfo(presentation_url, presentation_id)); |
| 62 } |
| 63 } |
| 64 |
| 65 // Returns the unique identifier for the supplied RenderFrameHost. |
| 66 RenderFrameHostId GetRenderFrameHostId(RenderFrameHost* render_frame_host) { |
| 67 int render_process_id = render_frame_host->GetProcess()->GetID(); |
| 68 int render_frame_id = render_frame_host->GetRoutingID(); |
| 44 return RenderFrameHostId(render_process_id, render_frame_id); | 69 return RenderFrameHostId(render_process_id, render_frame_id); |
| 45 } | 70 } |
| 46 | 71 |
| 47 // Gets the last committed URL for the render frame specified by | 72 // Gets the last committed URL for the render frame specified by |
| 48 // |render_frame_host_id|. | 73 // |render_frame_host_id|. |
| 49 GURL GetLastCommittedURLForFrame(RenderFrameHostId render_frame_host_id) { | 74 GURL GetLastCommittedURLForFrame(RenderFrameHostId render_frame_host_id) { |
| 50 RenderFrameHost* render_frame_host = RenderFrameHost::FromID( | 75 RenderFrameHost* render_frame_host = RenderFrameHost::FromID( |
| 51 render_frame_host_id.first, render_frame_host_id.second); | 76 render_frame_host_id.first, render_frame_host_id.second); |
| 77 DCHECK(render_frame_host); |
| 52 return render_frame_host->GetLastCommittedURL(); | 78 return render_frame_host->GetLastCommittedURL(); |
| 53 } | 79 } |
| 54 | 80 |
| 55 } // namespace | 81 } // namespace |
| 56 | 82 |
| 57 // Used by PresentationServiceDelegateImpl to manage | 83 // Used by PresentationServiceDelegateImpl to manage |
| 58 // listeners and default presentation info in a render frame. | 84 // listeners and default presentation info in a render frame. |
| 59 // Its lifetime: | 85 // Its lifetime: |
| 60 // * PresentationFrameManager AddDelegateObserver | 86 // * PresentationFrameManager AddDelegateObserver |
| 61 // * Reset 0+ times. | 87 // * Reset 0+ times. |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 bool PresentationServiceDelegateImpl::IsMainFrame(int render_process_id, | 440 bool PresentationServiceDelegateImpl::IsMainFrame(int render_process_id, |
| 415 int render_frame_id) const { | 441 int render_frame_id) const { |
| 416 RenderFrameHost* main_frame = web_contents_->GetMainFrame(); | 442 RenderFrameHost* main_frame = web_contents_->GetMainFrame(); |
| 417 return main_frame && | 443 return main_frame && |
| 418 GetRenderFrameHostId(main_frame) == | 444 GetRenderFrameHostId(main_frame) == |
| 419 RenderFrameHostId(render_process_id, render_frame_id); | 445 RenderFrameHostId(render_process_id, render_frame_id); |
| 420 } | 446 } |
| 421 | 447 |
| 422 void PresentationServiceDelegateImpl:: | 448 void PresentationServiceDelegateImpl:: |
| 423 UpdateDefaultMediaSourceAndNotifyObservers( | 449 UpdateDefaultMediaSourceAndNotifyObservers( |
| 424 const MediaSource& default_source, | 450 const MediaSource& new_default_source, |
| 425 const GURL& default_frame_url) { | 451 const GURL& new_default_frame_url) { |
| 426 if (!default_source.Equals(default_source_) || | 452 if (!new_default_source.Equals(default_source_) || |
| 427 default_frame_url != default_frame_url_) { | 453 new_default_frame_url != default_frame_url_) { |
| 428 default_source_ = default_source; | 454 default_source_ = new_default_source; |
| 429 default_frame_url_ = default_frame_url; | 455 default_frame_url_ = new_default_frame_url; |
| 430 FOR_EACH_OBSERVER( | 456 FOR_EACH_OBSERVER( |
| 431 DefaultMediaSourceObserver, default_media_source_observers_, | 457 DefaultMediaSourceObserver, default_media_source_observers_, |
| 432 OnDefaultMediaSourceChanged(default_source_, default_frame_url_)); | 458 OnDefaultMediaSourceChanged(default_source_, default_frame_url_)); |
| 433 } | 459 } |
| 434 } | 460 } |
| 435 | 461 |
| 436 void PresentationServiceDelegateImpl::StartSession( | 462 void PresentationServiceDelegateImpl::StartSession( |
| 437 int render_process_id, | 463 int render_process_id, |
| 438 int render_frame_id, | 464 int render_frame_id, |
| 439 const std::string& presentation_url, | 465 const std::string& presentation_url, |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 } | 498 } |
| 473 } | 499 } |
| 474 | 500 |
| 475 void PresentationServiceDelegateImpl::JoinSession( | 501 void PresentationServiceDelegateImpl::JoinSession( |
| 476 int render_process_id, | 502 int render_process_id, |
| 477 int render_frame_id, | 503 int render_frame_id, |
| 478 const std::string& presentation_url, | 504 const std::string& presentation_url, |
| 479 const std::string& presentation_id, | 505 const std::string& presentation_id, |
| 480 const PresentationSessionSuccessCallback& success_cb, | 506 const PresentationSessionSuccessCallback& success_cb, |
| 481 const PresentationSessionErrorCallback& error_cb) { | 507 const PresentationSessionErrorCallback& error_cb) { |
| 482 // BUG=464205 | 508 router_->JoinRoute( |
| 483 NOTIMPLEMENTED(); | 509 MediaSourceForPresentationUrl(presentation_url).id(), presentation_id, |
| 510 GetLastCommittedURLForFrame( |
| 511 RenderFrameHostId(render_process_id, render_frame_id)).GetOrigin(), |
| 512 SessionTabHelper::IdForTab(web_contents_), |
| 513 base::Bind(&OnJoinRouteResponse, presentation_url, presentation_id, |
| 514 success_cb, error_cb)); |
| 484 } | 515 } |
| 485 | 516 |
| 486 void PresentationServiceDelegateImpl::ListenForSessionMessages( | 517 void PresentationServiceDelegateImpl::ListenForSessionMessages( |
| 487 int render_process_id, | 518 int render_process_id, |
| 488 int render_frame_id, | 519 int render_frame_id, |
| 489 const PresentationSessionMessageCallback& message_cb) { | 520 const PresentationSessionMessageCallback& message_cb) { |
| 490 // BUG=464205 | 521 // BUG=464205 |
| 491 NOTIMPLEMENTED(); | 522 NOTIMPLEMENTED(); |
| 492 } | 523 } |
| 493 | 524 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 541 bool PresentationServiceDelegateImpl::HasScreenAvailabilityListenerForTest( | 572 bool PresentationServiceDelegateImpl::HasScreenAvailabilityListenerForTest( |
| 542 int render_process_id, | 573 int render_process_id, |
| 543 int render_frame_id, | 574 int render_frame_id, |
| 544 const MediaSource::Id& source_id) const { | 575 const MediaSource::Id& source_id) const { |
| 545 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id); | 576 RenderFrameHostId render_frame_host_id(render_process_id, render_frame_id); |
| 546 return frame_manager_->HasScreenAvailabilityListenerForTest( | 577 return frame_manager_->HasScreenAvailabilityListenerForTest( |
| 547 render_frame_host_id, source_id); | 578 render_frame_host_id, source_id); |
| 548 } | 579 } |
| 549 | 580 |
| 550 } // namespace media_router | 581 } // namespace media_router |
| OLD | NEW |