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* |