diff --git a/atom/browser/api/atom_api_web_contents.cc b/atom/browser/api/atom_api_web_contents.cc index c5a012e58294..629d6ecc60f9 100644 --- a/atom/browser/api/atom_api_web_contents.cc +++ b/atom/browser/api/atom_api_web_contents.cc @@ -734,10 +734,10 @@ bool WebContents::CheckMediaAccessPermission( void WebContents::RequestMediaAccessPermission( content::WebContents* web_contents, const content::MediaStreamRequest& request, - const content::MediaResponseCallback& callback) { + content::MediaResponseCallback callback) { auto* permission_helper = WebContentsPermissionHelper::FromWebContents(web_contents); - permission_helper->RequestMediaAccessPermission(request, callback); + permission_helper->RequestMediaAccessPermission(request, std::move(callback)); } void WebContents::RequestToLockMouse(content::WebContents* web_contents, diff --git a/atom/browser/api/atom_api_web_contents.h b/atom/browser/api/atom_api_web_contents.h index 6f908b48851d..3745bccaddf3 100644 --- a/atom/browser/api/atom_api_web_contents.h +++ b/atom/browser/api/atom_api_web_contents.h @@ -351,7 +351,7 @@ class WebContents : public mate::TrackableObject, void RequestMediaAccessPermission( content::WebContents* web_contents, const content::MediaStreamRequest& request, - const content::MediaResponseCallback& callback) override; + content::MediaResponseCallback callback) override; void RequestToLockMouse(content::WebContents* web_contents, bool user_gesture, bool last_unlocked_by_target) override; diff --git a/atom/browser/atom_permission_manager.cc b/atom/browser/atom_permission_manager.cc index 4e4f8717b2d6..9e1238915ba3 100644 --- a/atom/browser/atom_permission_manager.cc +++ b/atom/browser/atom_permission_manager.cc @@ -111,7 +111,7 @@ int AtomPermissionManager::RequestPermission( content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, bool user_gesture, - const StatusCallback& response_callback) { + const base::Callback& response_callback) { return RequestPermissionWithDetails(permission, render_frame_host, requesting_origin, user_gesture, nullptr, response_callback); @@ -222,7 +222,7 @@ int AtomPermissionManager::SubscribePermissionStatusChange( content::PermissionType permission, const GURL& requesting_origin, const GURL& embedding_origin, - const StatusCallback& callback) { + const base::Callback& callback) { return -1; } diff --git a/atom/browser/atom_permission_manager.h b/atom/browser/atom_permission_manager.h index 3885d155f0cc..843fb79ee895 100644 --- a/atom/browser/atom_permission_manager.h +++ b/atom/browser/atom_permission_manager.h @@ -55,7 +55,7 @@ class AtomPermissionManager : public content::PermissionManager { const GURL& requesting_origin, bool user_gesture, const base::DictionaryValue* details, - const base::Callback& callback); + const StatusCallback& callback); int RequestPermissions( const std::vector& permissions, content::RenderFrameHost* render_frame_host, diff --git a/atom/browser/web_contents_permission_helper.cc b/atom/browser/web_contents_permission_helper.cc index 83a92847c1c9..7d302815c106 100644 --- a/atom/browser/web_contents_permission_helper.cc +++ b/atom/browser/web_contents_permission_helper.cc @@ -36,9 +36,10 @@ namespace atom { namespace { void MediaAccessAllowed(const content::MediaStreamRequest& request, - const content::MediaResponseCallback& callback, + content::MediaResponseCallback callback, bool allowed) { - brightray::MediaStreamDevicesController controller(request, callback); + brightray::MediaStreamDevicesController controller(request, + std::move(callback)); if (allowed) controller.TakeAction(); else @@ -50,7 +51,7 @@ void OnPointerLockResponse(content::WebContents* web_contents, bool allowed) { web_contents->GotResponseToLockMouseRequest(allowed); } -void OnPermissionResponse(const base::Callback& callback, +void OnPermissionResponse(base::Callback callback, blink::mojom::PermissionStatus status) { if (status == blink::mojom::PermissionStatus::GRANTED) callback.Run(true); @@ -77,7 +78,7 @@ void WebContentsPermissionHelper::RequestPermission( auto origin = web_contents_->GetLastCommittedURL(); permission_manager->RequestPermissionWithDetails( permission, rfh, origin, false, details, - base::Bind(&OnPermissionResponse, callback)); + base::Bind(&OnPermissionResponse, std::move(callback))); } bool WebContentsPermissionHelper::CheckPermission( @@ -100,8 +101,9 @@ void WebContentsPermissionHelper::RequestFullscreenPermission( void WebContentsPermissionHelper::RequestMediaAccessPermission( const content::MediaStreamRequest& request, - const content::MediaResponseCallback& response_callback) { - auto callback = base::Bind(&MediaAccessAllowed, request, response_callback); + content::MediaResponseCallback response_callback) { + auto callback = base::AdaptCallbackForRepeating(base::BindOnce( + &MediaAccessAllowed, request, std::move(response_callback))); base::DictionaryValue details; std::unique_ptr media_types(new base::ListValue); @@ -117,8 +119,8 @@ void WebContentsPermissionHelper::RequestMediaAccessPermission( // The permission type doesn't matter here, AUDIO_CAPTURE/VIDEO_CAPTURE // are presented as same type in content_converter.h. - RequestPermission(content::PermissionType::AUDIO_CAPTURE, callback, false, - &details); + RequestPermission(content::PermissionType::AUDIO_CAPTURE, std::move(callback), + false, &details); } void WebContentsPermissionHelper::RequestWebNotificationPermission( diff --git a/atom/browser/web_contents_permission_helper.h b/atom/browser/web_contents_permission_helper.h index a60b7683649f..d0ad5266dadf 100644 --- a/atom/browser/web_contents_permission_helper.h +++ b/atom/browser/web_contents_permission_helper.h @@ -27,7 +27,7 @@ class WebContentsPermissionHelper void RequestFullscreenPermission(const base::Callback& callback); void RequestMediaAccessPermission( const content::MediaStreamRequest& request, - const content::MediaResponseCallback& callback); + content::MediaResponseCallback callback); void RequestWebNotificationPermission( const base::Callback& callback); void RequestPointerLockPermission(bool user_gesture); diff --git a/brightray/browser/media/media_stream_devices_controller.cc b/brightray/browser/media/media_stream_devices_controller.cc index d855e2d0ca45..a94c7944f049 100644 --- a/brightray/browser/media/media_stream_devices_controller.cc +++ b/brightray/browser/media/media_stream_devices_controller.cc @@ -5,6 +5,7 @@ #include "brightray/browser/media/media_stream_devices_controller.h" #include +#include #include "brightray/browser/media/media_capture_devices_dispatcher.h" #include "content/public/browser/desktop_media_id.h" @@ -27,9 +28,9 @@ bool HasAnyAvailableDevice() { MediaStreamDevicesController::MediaStreamDevicesController( const content::MediaStreamRequest& request, - const content::MediaResponseCallback& callback) + content::MediaResponseCallback callback) : request_(request), - callback_(callback), + callback_(std::move(callback)), // For MEDIA_OPEN_DEVICE requests (Pepper) we always request both webcam // and microphone to avoid popping two infobars. microphone_requested_( @@ -41,9 +42,9 @@ MediaStreamDevicesController::MediaStreamDevicesController( MediaStreamDevicesController::~MediaStreamDevicesController() { if (!callback_.is_null()) { - callback_.Run(content::MediaStreamDevices(), - content::MEDIA_DEVICE_INVALID_STATE, - std::unique_ptr()); + std::move(callback_).Run(content::MediaStreamDevices(), + content::MEDIA_DEVICE_INVALID_STATE, + std::unique_ptr()); } } @@ -140,18 +141,14 @@ void MediaStreamDevicesController::Accept() { } } - content::MediaResponseCallback cb = callback_; - callback_.Reset(); - cb.Run(devices, content::MEDIA_DEVICE_OK, - std::unique_ptr()); + std::move(callback_).Run(devices, content::MEDIA_DEVICE_OK, + std::unique_ptr()); } void MediaStreamDevicesController::Deny( content::MediaStreamRequestResult result) { - content::MediaResponseCallback cb = callback_; - callback_.Reset(); - cb.Run(content::MediaStreamDevices(), result, - std::unique_ptr()); + std::move(callback_).Run(content::MediaStreamDevices(), result, + std::unique_ptr()); } void MediaStreamDevicesController::HandleUserMediaRequest() { @@ -185,12 +182,10 @@ void MediaStreamDevicesController::HandleUserMediaRequest() { content::MEDIA_DESKTOP_VIDEO_CAPTURE, screen_id.ToString(), "Screen")); } - content::MediaResponseCallback cb = callback_; - callback_.Reset(); - cb.Run(devices, - devices.empty() ? content::MEDIA_DEVICE_INVALID_STATE - : content::MEDIA_DEVICE_OK, - std::unique_ptr()); + std::move(callback_).Run(devices, + devices.empty() ? content::MEDIA_DEVICE_INVALID_STATE + : content::MEDIA_DEVICE_OK, + std::unique_ptr()); } } // namespace brightray diff --git a/brightray/browser/media/media_stream_devices_controller.h b/brightray/browser/media/media_stream_devices_controller.h index de16e6cc94ef..29308aced594 100644 --- a/brightray/browser/media/media_stream_devices_controller.h +++ b/brightray/browser/media/media_stream_devices_controller.h @@ -12,7 +12,7 @@ namespace brightray { class MediaStreamDevicesController { public: MediaStreamDevicesController(const content::MediaStreamRequest& request, - const content::MediaResponseCallback& callback); + content::MediaResponseCallback callback); virtual ~MediaStreamDevicesController();