Chromium Code Reviews| Index: chrome/browser/media/router/media_router_mojo_impl.cc |
| diff --git a/chrome/browser/media/router/media_router_mojo_impl.cc b/chrome/browser/media/router/media_router_mojo_impl.cc |
| index c65700d7299ee86a1b69def1d91ac76144301318..ef66a47f78ce1c480d0ec4a4422b05747a6dc11f 100644 |
| --- a/chrome/browser/media/router/media_router_mojo_impl.cc |
| +++ b/chrome/browser/media/router/media_router_mojo_impl.cc |
| @@ -22,12 +22,11 @@ |
| namespace media_router { |
| namespace { |
| -// Converts the callback result of calling Mojo CreateRoute() into a local |
| -// callback. |
| -void CreateRouteFinished(const MediaSink::Id& sink_id, |
| - const MediaRouteResponseCallback& callback, |
| - interfaces::MediaRoutePtr media_route, |
| - const mojo::String& error_text) { |
| +// Converts the callback result of calling Mojo CreateRoute()/JoinRoute() |
| +// into a local callback. |
| +void RouteResponseReceived(const MediaRouteResponseCallback& callback, |
| + interfaces::MediaRoutePtr media_route, |
| + const mojo::String& error_text) { |
| if (media_route.is_null()) { |
| // An error occurred. |
| DCHECK(!error_text.is_null()); |
| @@ -160,11 +159,38 @@ void MediaRouterMojoImpl::OnRoutesUpdated( |
| void MediaRouterMojoImpl::CreateRoute( |
| const MediaSource::Id& source_id, |
| const MediaSink::Id& sink_id, |
| + const GURL& origin, |
| + int tab_id, |
| const MediaRouteResponseCallback& callback) { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| - RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoCreateRoute, |
| - base::Unretained(this), source_id, sink_id, callback)); |
| + if (!origin.is_empty() && !origin.is_valid()) { |
| + DVLOG_WITH_INSTANCE(1) << "Invalid origin: " << origin; |
| + callback.Run(nullptr, "Invalid origin"); |
| + return; |
| + } |
| + RunOrDefer(base::Bind( |
| + &MediaRouterMojoImpl::DoCreateRoute, base::Unretained(this), source_id, |
| + sink_id, origin.is_empty() ? "" : origin.spec(), tab_id, callback)); |
| +} |
| + |
| +void MediaRouterMojoImpl::JoinRoute( |
| + const MediaSource::Id& source_id, |
| + const std::string& presentation_id, |
| + const GURL& origin, |
| + int tab_id, |
| + const MediaRouteResponseCallback& callback) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + if (!origin.is_empty() && !origin.is_valid()) { |
| + DVLOG_WITH_INSTANCE(1) << "Invalid origin: " << origin; |
| + callback.Run(nullptr, "Invalid origin"); |
| + return; |
| + } |
| + RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoJoinRoute, |
| + base::Unretained(this), source_id, presentation_id, |
| + origin.is_empty() ? "" : origin.spec(), tab_id, |
| + callback)); |
| } |
| void MediaRouterMojoImpl::CloseRoute(const MediaRoute::Id& route_id) { |
| @@ -270,47 +296,64 @@ void MediaRouterMojoImpl::RemoveIssuesObserver(IssuesObserver* observer) { |
| void MediaRouterMojoImpl::DoCreateRoute( |
| const MediaSource::Id& source_id, |
| const MediaSink::Id& sink_id, |
| + const std::string& origin, |
| + int tab_id, |
| + const MediaRouteResponseCallback& callback) { |
| + std::string presentation_id(base::GenerateGUID()); |
|
mark a. foltz
2015/06/10 23:18:51
I feel like this should have a prefix like "mr-" t
imcheng (use chromium acct)
2015/06/11 22:49:12
Yes we should have mr_ per the Start + Join doc.
|
| + DVLOG_WITH_INSTANCE(1) << "DoCreateRoute " << source_id << "=>" << sink_id |
| + << ", presentation ID: " << presentation_id; |
| + mojo_media_router_->CreateRoute(source_id, sink_id, presentation_id, origin, |
| + tab_id, |
| + base::Bind(&RouteResponseReceived, callback)); |
| +} |
| + |
| +void MediaRouterMojoImpl::DoJoinRoute( |
| + const MediaSource::Id& source_id, |
| + const std::string& presentation_id, |
| + const std::string& origin, |
| + int tab_id, |
| const MediaRouteResponseCallback& callback) { |
| - DVLOG_WITH_INSTANCE(1) << "CreateRoute " << source_id << "=>" << sink_id; |
| - mojo_media_router_->CreateRoute( |
| - source_id, sink_id, base::Bind(&CreateRouteFinished, sink_id, callback)); |
| + DVLOG_WITH_INSTANCE(1) << "DoJoinRoute " << source_id |
| + << ", presentation ID: " << presentation_id; |
| + mojo_media_router_->JoinRoute(source_id, presentation_id, origin, tab_id, |
| + base::Bind(&RouteResponseReceived, callback)); |
| } |
| void MediaRouterMojoImpl::DoCloseRoute(const MediaRoute::Id& route_id) { |
| - DVLOG_WITH_INSTANCE(1) << "CloseRoute " << route_id; |
| + DVLOG_WITH_INSTANCE(1) << "DoCloseRoute " << route_id; |
| mojo_media_router_->CloseRoute(route_id); |
| } |
| void MediaRouterMojoImpl::DoPostMessage(const MediaRoute::Id& route_id, |
| const std::string& message) { |
| - DVLOG_WITH_INSTANCE(1) << "PostMessage " << route_id; |
| + DVLOG_WITH_INSTANCE(1) << "DoPostMessage " << route_id; |
| mojo_media_router_->PostMessage(route_id, message); |
| } |
| void MediaRouterMojoImpl::DoClearIssue(const Issue::Id& issue_id) { |
| - DVLOG_WITH_INSTANCE(1) << "ClearIssue " << issue_id; |
| + DVLOG_WITH_INSTANCE(1) << "DoClearIssue " << issue_id; |
| mojo_media_router_->ClearIssue(issue_id); |
| } |
| void MediaRouterMojoImpl::DoStartObservingMediaSinks( |
| - const std::string& source_id) { |
| - DVLOG_WITH_INSTANCE(1) << "StartObservingMediaSinks: " << source_id; |
| + const MediaSource::Id& source_id) { |
| + DVLOG_WITH_INSTANCE(1) << "DoStartObservingMediaSinks: " << source_id; |
| mojo_media_router_->StartObservingMediaSinks(source_id); |
| } |
| void MediaRouterMojoImpl::DoStopObservingMediaSinks( |
| - const std::string& source_id) { |
| - DVLOG_WITH_INSTANCE(1) << "StopObservingMediaSinks: " << source_id; |
| + const MediaSource::Id& source_id) { |
| + DVLOG_WITH_INSTANCE(1) << "DoStopObservingMediaSinks: " << source_id; |
| mojo_media_router_->StopObservingMediaSinks(source_id); |
| } |
| void MediaRouterMojoImpl::DoStartObservingMediaRoutes() { |
| - DVLOG_WITH_INSTANCE(1) << "StartObservingMediaRoutes"; |
| + DVLOG_WITH_INSTANCE(1) << "DoStartObservingMediaRoutes"; |
| mojo_media_router_->StartObservingMediaRoutes(); |
| } |
| void MediaRouterMojoImpl::DoStopObservingMediaRoutes() { |
| - DVLOG_WITH_INSTANCE(1) << "StopObservingMediaRoutes"; |
| + DVLOG_WITH_INSTANCE(1) << "DoStopObservingMediaRoutes"; |
| mojo_media_router_->StopObservingMediaRoutes(); |
| } |