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, ...@@ -45,12 +45,6 @@ PushProvider::PushProvider(ThreadSafeSender* thread_safe_sender,
} }
PushProvider::~PushProvider() { 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); g_push_provider_tls.Pointer()->Set(nullptr);
} }
...@@ -77,7 +71,7 @@ void PushProvider::registerPushMessaging( ...@@ -77,7 +71,7 @@ void PushProvider::registerPushMessaging(
DCHECK(service_worker_registration); DCHECK(service_worker_registration);
DCHECK(callbacks); DCHECK(callbacks);
int request_id = push_dispatcher_->GenerateRequestId(CurrentWorkerId()); int request_id = push_dispatcher_->GenerateRequestId(CurrentWorkerId());
registration_callbacks_[request_id] = callbacks; registration_callbacks_.AddWithID(callbacks, request_id);
int64 service_worker_registration_id = int64 service_worker_registration_id =
GetServiceWorkerRegistrationId(service_worker_registration); GetServiceWorkerRegistrationId(service_worker_registration);
thread_safe_sender_->Send(new PushMessagingHostMsg_RegisterFromWorker( thread_safe_sender_->Send(new PushMessagingHostMsg_RegisterFromWorker(
...@@ -90,7 +84,7 @@ void PushProvider::getPermissionStatus( ...@@ -90,7 +84,7 @@ void PushProvider::getPermissionStatus(
DCHECK(service_worker_registration); DCHECK(service_worker_registration);
DCHECK(callbacks); DCHECK(callbacks);
int request_id = push_dispatcher_->GenerateRequestId(CurrentWorkerId()); 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 = int64 service_worker_registration_id =
GetServiceWorkerRegistrationId(service_worker_registration); GetServiceWorkerRegistrationId(service_worker_registration);
thread_safe_sender_->Send(new PushMessagingHostMsg_GetPermissionStatus( thread_safe_sender_->Send(new PushMessagingHostMsg_GetPermissionStatus(
...@@ -118,57 +112,57 @@ void PushProvider::OnRegisterFromWorkerSuccess( ...@@ -118,57 +112,57 @@ void PushProvider::OnRegisterFromWorkerSuccess(
int request_id, int request_id,
const GURL& endpoint, const GURL& endpoint,
const std::string& registration_id) { const std::string& registration_id) {
const auto& it = registration_callbacks_.find(request_id); blink::WebPushRegistrationCallbacks* callbacks =
if (it == registration_callbacks_.end()) registration_callbacks_.Lookup(request_id);
if (!callbacks)
return; return;
scoped_ptr<blink::WebPushRegistrationCallbacks> callbacks(it->second);
registration_callbacks_.erase(it);
scoped_ptr<blink::WebPushRegistration> registration( scoped_ptr<blink::WebPushRegistration> registration(
new blink::WebPushRegistration( new blink::WebPushRegistration(
blink::WebString::fromUTF8(endpoint.spec()), blink::WebString::fromUTF8(endpoint.spec()),
blink::WebString::fromUTF8(registration_id))); blink::WebString::fromUTF8(registration_id)));
callbacks->onSuccess(registration.release()); callbacks->onSuccess(registration.release());
registration_callbacks_.Remove(request_id);
} }
void PushProvider::OnRegisterFromWorkerError(int request_id, void PushProvider::OnRegisterFromWorkerError(int request_id,
PushRegistrationStatus status) { PushRegistrationStatus status) {
const auto& it = registration_callbacks_.find(request_id); blink::WebPushRegistrationCallbacks* callbacks =
if (it == registration_callbacks_.end()) registration_callbacks_.Lookup(request_id);
if (!callbacks)
return; return;
scoped_ptr<blink::WebPushRegistrationCallbacks> callbacks(it->second);
registration_callbacks_.erase(it);
scoped_ptr<blink::WebPushError> error(new blink::WebPushError( scoped_ptr<blink::WebPushError> error(new blink::WebPushError(
blink::WebPushError::ErrorTypeAbort, blink::WebPushError::ErrorTypeAbort,
blink::WebString::fromUTF8(PushRegistrationStatusToString(status)))); blink::WebString::fromUTF8(PushRegistrationStatusToString(status))));
callbacks->onError(error.release()); callbacks->onError(error.release());
registration_callbacks_.Remove(request_id);
} }
void PushProvider::OnGetPermissionStatusSuccess( void PushProvider::OnGetPermissionStatusSuccess(
int request_id, int request_id,
blink::WebPushPermissionStatus status) { blink::WebPushPermissionStatus status) {
const auto& it = permission_status_callbacks_.find(request_id); blink::WebPushPermissionStatusCallbacks* callbacks =
if (it == permission_status_callbacks_.end()) permission_status_callbacks_.Lookup(request_id);
if (!callbacks)
return; return;
scoped_ptr<blink::WebPushPermissionStatusCallbacks> callbacks(it->second);
permission_status_callbacks_.erase(it);
callbacks->onSuccess(&status); callbacks->onSuccess(&status);
permission_status_callbacks_.Remove(request_id);
} }
void PushProvider::OnGetPermissionStatusError(int request_id) { void PushProvider::OnGetPermissionStatusError(int request_id) {
const auto& it = permission_status_callbacks_.find(request_id); blink::WebPushPermissionStatusCallbacks* callbacks =
if (it == permission_status_callbacks_.end()) permission_status_callbacks_.Lookup(request_id);
if (!callbacks)
return; return;
scoped_ptr<blink::WebPushPermissionStatusCallbacks> callbacks(it->second);
permission_status_callbacks_.erase(it);
callbacks->onError(); callbacks->onError();
permission_status_callbacks_.Remove(request_id);
} }
} // namespace content } // namespace content
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <string> #include <string>
#include "base/id_map.h"
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "content/child/push_messaging/push_dispatcher.h" #include "content/child/push_messaging/push_dispatcher.h"
#include "content/child/worker_task_runner.h" #include "content/child/worker_task_runner.h"
...@@ -59,11 +60,12 @@ class PushProvider : public blink::WebPushProvider, ...@@ -59,11 +60,12 @@ class PushProvider : public blink::WebPushProvider,
// Stores the registration callbacks with their request ids. This class owns // Stores the registration callbacks with their request ids. This class owns
// the callbacks. // 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 // Stores the permission status callbacks with their request ids. This class
// owns the callbacks. // owns the callbacks.
std::map<int, blink::WebPushPermissionStatusCallbacks*> IDMap<blink::WebPushPermissionStatusCallbacks, IDMapOwnPointer>
permission_status_callbacks_; permission_status_callbacks_;
DISALLOW_COPY_AND_ASSIGN(PushProvider); 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