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

Side by Side Diff: chrome/browser/media/router/presentation_service_delegate_impl.cc

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

Powered by Google App Engine
This is Rietveld 408576698