Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(293)

Unified Diff: content/child/push_messaging/push_provider.cc

Issue 801643005: Use IDMap in PushProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/child/push_messaging/push_provider.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « content/child/push_messaging/push_provider.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698