| Index: content/child/push_messaging/push_provider.cc
|
| diff --git a/content/child/push_messaging/push_provider.cc b/content/child/push_messaging/push_provider.cc
|
| index 6829d3869071f5e368e7405a45fdd5bc71e13c8b..0075650634acd47807f74ea2b277aefb8234ec91 100644
|
| --- a/content/child/push_messaging/push_provider.cc
|
| +++ b/content/child/push_messaging/push_provider.cc
|
| @@ -45,12 +45,6 @@ PushProvider::PushProvider(ThreadSafeSender* thread_safe_sender,
|
| }
|
|
|
| PushProvider::~PushProvider() {
|
| - STLDeleteContainerPairSecondPointers(registration_callbacks_.begin(),
|
| - registration_callbacks_.end());
|
| - registration_callbacks_.clear();
|
| - STLDeleteContainerPairSecondPointers(permission_status_callbacks_.begin(),
|
| - permission_status_callbacks_.end());
|
| - permission_status_callbacks_.clear();
|
| g_push_provider_tls.Pointer()->Set(nullptr);
|
| }
|
|
|
| @@ -77,7 +71,7 @@ void PushProvider::registerPushMessaging(
|
| DCHECK(service_worker_registration);
|
| DCHECK(callbacks);
|
| int request_id = push_dispatcher_->GenerateRequestId(CurrentWorkerId());
|
| - registration_callbacks_[request_id] = callbacks;
|
| + registration_callbacks_.AddWithID(callbacks, request_id);
|
| int64 service_worker_registration_id =
|
| GetServiceWorkerRegistrationId(service_worker_registration);
|
| thread_safe_sender_->Send(new PushMessagingHostMsg_RegisterFromWorker(
|
| @@ -90,7 +84,7 @@ void PushProvider::getPermissionStatus(
|
| DCHECK(service_worker_registration);
|
| DCHECK(callbacks);
|
| int request_id = push_dispatcher_->GenerateRequestId(CurrentWorkerId());
|
| - permission_status_callbacks_[request_id] = callbacks;
|
| + permission_status_callbacks_.AddWithID(callbacks, request_id);
|
| int64 service_worker_registration_id =
|
| GetServiceWorkerRegistrationId(service_worker_registration);
|
| thread_safe_sender_->Send(new PushMessagingHostMsg_GetPermissionStatus(
|
| @@ -118,57 +112,57 @@ void PushProvider::OnRegisterFromWorkerSuccess(
|
| int request_id,
|
| const GURL& endpoint,
|
| const std::string& registration_id) {
|
| - const auto& it = registration_callbacks_.find(request_id);
|
| - if (it == registration_callbacks_.end())
|
| + blink::WebPushRegistrationCallbacks* callbacks =
|
| + registration_callbacks_.Lookup(request_id);
|
| + if (!callbacks)
|
| return;
|
|
|
| - scoped_ptr<blink::WebPushRegistrationCallbacks> callbacks(it->second);
|
| - registration_callbacks_.erase(it);
|
| -
|
| scoped_ptr<blink::WebPushRegistration> registration(
|
| new blink::WebPushRegistration(
|
| blink::WebString::fromUTF8(endpoint.spec()),
|
| blink::WebString::fromUTF8(registration_id)));
|
| callbacks->onSuccess(registration.release());
|
| +
|
| + registration_callbacks_.Remove(request_id);
|
| }
|
|
|
| void PushProvider::OnRegisterFromWorkerError(int request_id,
|
| PushRegistrationStatus status) {
|
| - const auto& it = registration_callbacks_.find(request_id);
|
| - if (it == registration_callbacks_.end())
|
| + blink::WebPushRegistrationCallbacks* callbacks =
|
| + registration_callbacks_.Lookup(request_id);
|
| + if (!callbacks)
|
| return;
|
|
|
| - scoped_ptr<blink::WebPushRegistrationCallbacks> callbacks(it->second);
|
| - registration_callbacks_.erase(it);
|
| -
|
| scoped_ptr<blink::WebPushError> error(new blink::WebPushError(
|
| blink::WebPushError::ErrorTypeAbort,
|
| blink::WebString::fromUTF8(PushRegistrationStatusToString(status))));
|
| callbacks->onError(error.release());
|
| +
|
| + registration_callbacks_.Remove(request_id);
|
| }
|
|
|
| void PushProvider::OnGetPermissionStatusSuccess(
|
| int request_id,
|
| blink::WebPushPermissionStatus status) {
|
| - const auto& it = permission_status_callbacks_.find(request_id);
|
| - if (it == permission_status_callbacks_.end())
|
| + blink::WebPushPermissionStatusCallbacks* callbacks =
|
| + permission_status_callbacks_.Lookup(request_id);
|
| + if (!callbacks)
|
| return;
|
|
|
| - scoped_ptr<blink::WebPushPermissionStatusCallbacks> callbacks(it->second);
|
| - permission_status_callbacks_.erase(it);
|
| -
|
| callbacks->onSuccess(&status);
|
| +
|
| + permission_status_callbacks_.Remove(request_id);
|
| }
|
|
|
| void PushProvider::OnGetPermissionStatusError(int request_id) {
|
| - const auto& it = permission_status_callbacks_.find(request_id);
|
| - if (it == permission_status_callbacks_.end())
|
| + blink::WebPushPermissionStatusCallbacks* callbacks =
|
| + permission_status_callbacks_.Lookup(request_id);
|
| + if (!callbacks)
|
| return;
|
|
|
| - scoped_ptr<blink::WebPushPermissionStatusCallbacks> callbacks(it->second);
|
| - permission_status_callbacks_.erase(it);
|
| -
|
| callbacks->onError();
|
| +
|
| + permission_status_callbacks_.Remove(request_id);
|
| }
|
|
|
| } // namespace content
|
|
|