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

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: Compile fix again x2 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 17 matching lines...) Expand all
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/media/router/presentation_service_delegate_impl.h ('k') | chrome/browser/media/router/test_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698