| Index: chrome/browser/media/router/presentation_service_delegate_impl.cc
|
| diff --git a/chrome/browser/media/router/presentation_service_delegate_impl.cc b/chrome/browser/media/router/presentation_service_delegate_impl.cc
|
| index 809f1a33b6eedfda06bae1aa60a441e1a99ace46..3f4d2d30e795533f106e8f5a502f42476044272f 100644
|
| --- a/chrome/browser/media/router/presentation_service_delegate_impl.cc
|
| +++ b/chrome/browser/media/router/presentation_service_delegate_impl.cc
|
| @@ -11,7 +11,7 @@
|
| #include "base/guid.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| -#include "chrome/browser/media/router/create_session_request.h"
|
| +#include "chrome/browser/media/router/create_presentation_session_request.h"
|
| #include "chrome/browser/media/router/media_route.h"
|
| #include "chrome/browser/media/router/media_router.h"
|
| #include "chrome/browser/media/router/media_router_mojo_impl.h"
|
| @@ -543,9 +543,9 @@ void PresentationServiceDelegateImpl::OnJoinRouteResponse(
|
| const content::PresentationSessionInfo& session,
|
| const PresentationSessionSuccessCallback& success_cb,
|
| const PresentationSessionErrorCallback& error_cb,
|
| - scoped_ptr<MediaRoute> route,
|
| + const MediaRoute* route,
|
| const std::string& error_text) {
|
| - if (!route.get()) {
|
| + if (!route) {
|
| error_cb.Run(content::PresentationError(
|
| content::PRESENTATION_ERROR_NO_PRESENTATION_FOUND, error_text));
|
| } else {
|
| @@ -596,13 +596,14 @@ void PresentationServiceDelegateImpl::StartSession(
|
| if (presentation_id.empty())
|
| presentation_id = base::GenerateGUID();
|
|
|
| - scoped_ptr<CreateSessionRequest> context(new CreateSessionRequest(
|
| - presentation_url, presentation_id,
|
| - GetLastCommittedURLForFrame(render_frame_host_id),
|
| - base::Bind(&PresentationServiceDelegateImpl::OnStartSessionSucceeded,
|
| - weak_factory_.GetWeakPtr(), render_process_id, render_frame_id,
|
| - success_cb),
|
| - error_cb));
|
| + scoped_ptr<CreatePresentationSessionRequest> context(
|
| + new CreatePresentationSessionRequest(
|
| + presentation_url, presentation_id,
|
| + GetLastCommittedURLForFrame(render_frame_host_id),
|
| + base::Bind(&PresentationServiceDelegateImpl::OnStartSessionSucceeded,
|
| + weak_factory_.GetWeakPtr(), render_process_id,
|
| + render_frame_id, success_cb),
|
| + error_cb));
|
| // NOTE: Currently this request is ignored if a dialog is already open, e.g.
|
| // via browser action. In practice, this should rarely happen, but log
|
| // an error message in case it does.
|
| @@ -625,16 +626,18 @@ void PresentationServiceDelegateImpl::JoinSession(
|
| const std::string& presentation_id,
|
| const PresentationSessionSuccessCallback& success_cb,
|
| const PresentationSessionErrorCallback& error_cb) {
|
| + std::vector<MediaRouteResponseCallback> route_response_callbacks;
|
| + route_response_callbacks.push_back(base::Bind(
|
| + &PresentationServiceDelegateImpl::OnJoinRouteResponse,
|
| + weak_factory_.GetWeakPtr(), render_process_id, render_frame_id,
|
| + content::PresentationSessionInfo(presentation_url, presentation_id),
|
| + success_cb, error_cb));
|
| router_->JoinRoute(
|
| MediaSourceForPresentationUrl(presentation_url).id(), presentation_id,
|
| GetLastCommittedURLForFrame(
|
| - RenderFrameHostId(render_process_id, render_frame_id)).GetOrigin(),
|
| - SessionTabHelper::IdForTab(web_contents_),
|
| - base::Bind(
|
| - &PresentationServiceDelegateImpl::OnJoinRouteResponse,
|
| - weak_factory_.GetWeakPtr(), render_process_id, render_frame_id,
|
| - content::PresentationSessionInfo(presentation_url, presentation_id),
|
| - success_cb, error_cb));
|
| + RenderFrameHostId(render_process_id, render_frame_id))
|
| + .GetOrigin(),
|
| + SessionTabHelper::IdForTab(web_contents_), route_response_callbacks);
|
| }
|
|
|
| void PresentationServiceDelegateImpl::CloseSession(
|
| @@ -696,8 +699,12 @@ void PresentationServiceDelegateImpl::ListenForSessionStateChange(
|
| RenderFrameHostId(render_process_id, render_frame_id), state_changed_cb);
|
| }
|
|
|
| -void PresentationServiceDelegateImpl::OnRouteCreated(const MediaRoute& route) {
|
| - const MediaSource& source = route.media_source();
|
| +void PresentationServiceDelegateImpl::OnRouteResponse(
|
| + const MediaRoute* route,
|
| + const std::string& error) {
|
| + if (!route)
|
| + return;
|
| + const MediaSource& source = route->media_source();
|
| DCHECK(!source.Empty());
|
| if (!default_source_.Equals(source))
|
| return;
|
| @@ -706,12 +713,12 @@ void PresentationServiceDelegateImpl::OnRouteCreated(const MediaRoute& route) {
|
| return;
|
| RenderFrameHostId render_frame_host_id(GetRenderFrameHostId(main_frame));
|
| std::string presentation_id =
|
| - GetPresentationIdAndUrl(route.media_route_id()).first;
|
| + GetPresentationIdAndUrl(route->media_route_id()).first;
|
| frame_manager_->OnPresentationSessionStarted(
|
| render_frame_host_id, true,
|
| content::PresentationSessionInfo(PresentationUrlFromMediaSource(source),
|
| presentation_id),
|
| - route.media_route_id());
|
| + route->media_route_id());
|
| }
|
|
|
| void PresentationServiceDelegateImpl::AddDefaultMediaSourceObserver(
|
|
|