Index: content/renderer/push_messaging/push_messaging_dispatcher.cc |
diff --git a/content/renderer/push_messaging/push_messaging_dispatcher.cc b/content/renderer/push_messaging/push_messaging_dispatcher.cc |
index 40500eb7b1f5abbd8ddf2e41cafc8bf7936e2479..cc4fda70d7dd1a52bfac48d0ea096c7285f0a65e 100644 |
--- a/content/renderer/push_messaging/push_messaging_dispatcher.cc |
+++ b/content/renderer/push_messaging/push_messaging_dispatcher.cc |
@@ -4,6 +4,9 @@ |
#include "content/renderer/push_messaging/push_messaging_dispatcher.h" |
+#include <memory> |
+#include <utility> |
+ |
#include "base/memory/ptr_util.h" |
#include "base/strings/utf_string_conversions.h" |
#include "content/child/push_messaging/push_provider.h" |
@@ -47,7 +50,7 @@ void PushMessagingDispatcher::OnDestruct() { |
void PushMessagingDispatcher::subscribe( |
blink::WebServiceWorkerRegistration* service_worker_registration, |
const blink::WebPushSubscriptionOptions& options, |
- blink::WebPushSubscriptionCallbacks* callbacks) { |
+ std::unique_ptr<blink::WebPushSubscriptionCallbacks> callbacks) { |
DCHECK(service_worker_registration); |
DCHECK(callbacks); |
// If a developer provided an application server key in |options|, skip |
@@ -57,28 +60,29 @@ void PushMessagingDispatcher::subscribe( |
->manifest_manager() |
->GetManifest(base::Bind( |
&PushMessagingDispatcher::DidGetManifest, base::Unretained(this), |
- service_worker_registration, options, callbacks)); |
+ service_worker_registration, options, base::Passed(&callbacks))); |
} else { |
PushSubscriptionOptions content_options; |
content_options.user_visible_only = options.userVisibleOnly; |
// Just treat the server key as a string of bytes and pass it to the push |
// service. |
content_options.sender_info = options.applicationServerKey.latin1(); |
- DoSubscribe(service_worker_registration, content_options, callbacks); |
+ DoSubscribe(service_worker_registration, content_options, |
+ std::move(callbacks)); |
} |
} |
void PushMessagingDispatcher::DidGetManifest( |
blink::WebServiceWorkerRegistration* service_worker_registration, |
const blink::WebPushSubscriptionOptions& options, |
- blink::WebPushSubscriptionCallbacks* callbacks, |
+ std::unique_ptr<blink::WebPushSubscriptionCallbacks> callbacks, |
const GURL& manifest_url, |
const Manifest& manifest, |
const ManifestDebugInfo&) { |
// Get the sender_info from the manifest since it wasn't provided by |
// the caller. |
if (manifest.IsEmpty()) { |
- int request_id = subscription_callbacks_.Add(callbacks); |
+ int request_id = subscription_callbacks_.Add(std::move(callbacks)); |
OnSubscribeFromDocumentError( |
request_id, PUSH_REGISTRATION_STATUS_MANIFEST_EMPTY_OR_MISSING); |
return; |
@@ -91,14 +95,15 @@ void PushMessagingDispatcher::DidGetManifest( |
base::UTF16ToUTF8(manifest.gcm_sender_id.string()); |
} |
- DoSubscribe(service_worker_registration, content_options, callbacks); |
+ DoSubscribe(service_worker_registration, content_options, |
+ std::move(callbacks)); |
} |
void PushMessagingDispatcher::DoSubscribe( |
blink::WebServiceWorkerRegistration* service_worker_registration, |
const PushSubscriptionOptions& options, |
- blink::WebPushSubscriptionCallbacks* callbacks) { |
- int request_id = subscription_callbacks_.Add(callbacks); |
+ std::unique_ptr<blink::WebPushSubscriptionCallbacks> callbacks) { |
+ int request_id = subscription_callbacks_.Add(std::move(callbacks)); |
int64_t service_worker_registration_id = |
static_cast<WebServiceWorkerRegistrationImpl*>( |
service_worker_registration) |