Commit 76e6d7f6 authored by mlamouri's avatar mlamouri Committed by Commit bot

Use IDMap in PushProvider.

BUG=None

Review URL: https://codereview.chromium.org/801643005

Cr-Commit-Position: refs/heads/master@{#308405}
parent 286e8416
......@@ -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
......@@ -7,6 +7,7 @@
#include <string>
#include "base/id_map.h"
#include "base/memory/ref_counted.h"
#include "content/child/push_messaging/push_dispatcher.h"
#include "content/child/worker_task_runner.h"
......@@ -59,11 +60,12 @@ class PushProvider : public blink::WebPushProvider,
// Stores the registration callbacks with their request ids. This class owns
// the callbacks.
std::map<int, blink::WebPushRegistrationCallbacks*> registration_callbacks_;
IDMap<blink::WebPushRegistrationCallbacks, IDMapOwnPointer>
registration_callbacks_;
// Stores the permission status callbacks with their request ids. This class
// owns the callbacks.
std::map<int, blink::WebPushPermissionStatusCallbacks*>
IDMap<blink::WebPushPermissionStatusCallbacks, IDMapOwnPointer>
permission_status_callbacks_;
DISALLOW_COPY_AND_ASSIGN(PushProvider);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment