Chromium Code Reviews| Index: content/renderer/render_frame_impl.cc |
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
| index 59b2ed02d20416bde3d88627d90eef73d42b1ae8..c750abbbee6e5b9a70e170849d622ae9ebaa97dc 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -750,7 +750,6 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params) |
| handling_select_range_(false), |
| notification_permission_dispatcher_(NULL), |
| web_user_media_client_(NULL), |
| - media_permission_dispatcher_(NULL), |
| midi_dispatcher_(NULL), |
| #if defined(OS_ANDROID) |
| media_player_manager_(NULL), |
| @@ -5263,9 +5262,12 @@ RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
| #endif // defined(OS_ANDROID) |
| media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
| - if (!media_permission_dispatcher_) |
| - media_permission_dispatcher_ = new MediaPermissionDispatcher(this); |
| - return media_permission_dispatcher_; |
| + if (!media_permission_dispatcher_) { |
| + media_permission_dispatcher_.reset(new MediaPermissionDispatcher( |
| + base::Bind(&RenderFrameImpl::ConnectToService<PermissionService>, |
| + base::Unretained(this)))); |
|
nasko
2015/11/25 15:04:27
Please add a comment why using base::Unretained(th
|
| + } |
| + return media_permission_dispatcher_.get(); |
| } |
| #if defined(ENABLE_MOJO_MEDIA) |
| @@ -5334,17 +5336,23 @@ void RenderFrameImpl::RegisterMojoServices() { |
| } |
| } |
| +template <typename Interface> |
| +void RenderFrameImpl::ConnectToService( |
| + mojo::InterfaceRequest<Interface> request) { |
| + GetServiceRegistry()->ConnectToRemoteService(std::move(request)); |
| +} |
| + |
| mojo::ServiceProviderPtr RenderFrameImpl::ConnectToApplication( |
| const GURL& url) { |
| if (!mojo_shell_) |
| - GetServiceRegistry()->ConnectToRemoteService(mojo::GetProxy(&mojo_shell_)); |
| + ConnectToService(mojo::GetProxy(&mojo_shell_)); |
| mojo::ServiceProviderPtr service_provider; |
| mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| request->url = mojo::String::From(url); |
| mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
| nullptr, nullptr, |
| base::Bind(&OnGotContentHandlerID)); |
| - return service_provider.Pass(); |
| + return std::move(service_provider); |
| } |
| media::RendererWebMediaPlayerDelegate* |