Chromium Code Reviews| 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 0075650634acd47807f74ea2b277aefb8234ec91..86acb58670856df2eb9099257c39b8e1509ccf9d 100644 |
| --- a/content/child/push_messaging/push_provider.cc |
| +++ b/content/child/push_messaging/push_provider.cc |
| @@ -13,7 +13,6 @@ |
| #include "content/child/thread_safe_sender.h" |
| #include "content/child/worker_task_runner.h" |
| #include "content/common/push_messaging_messages.h" |
| -#include "third_party/WebKit/public/platform/WebPushError.h" |
| #include "third_party/WebKit/public/platform/WebPushRegistration.h" |
| #include "third_party/WebKit/public/platform/WebString.h" |
| @@ -91,6 +90,21 @@ void PushProvider::getPermissionStatus( |
| request_id, service_worker_registration_id)); |
| } |
| +void PushProvider::unregister( |
|
johnme
2014/12/16 16:31:59
Please move this below registerPushMessaging. Reme
mlamouri (slow - plz ping)
2014/12/16 18:26:16
Coding style says that we have to follow declarati
|
| + blink::WebServiceWorkerRegistration* service_worker_registration, |
| + blink::WebPushUnregisterCallbacks* callbacks) { |
| + DCHECK(service_worker_registration); |
| + DCHECK(callbacks); |
| + |
| + int request_id = push_dispatcher_->GenerateRequestId(CurrentWorkerId()); |
| + unregister_callbacks_.AddWithID(callbacks, request_id); |
| + |
| + int64 service_worker_registration_id = |
| + GetServiceWorkerRegistrationId(service_worker_registration); |
| + thread_safe_sender_->Send(new PushMessagingHostMsg_Unregister( |
| + request_id, service_worker_registration_id)); |
| +} |
| + |
| bool PushProvider::OnMessageReceived(const IPC::Message& message) { |
| bool handled = true; |
| IPC_BEGIN_MESSAGE_MAP(PushProvider, message) |
| @@ -102,6 +116,10 @@ bool PushProvider::OnMessageReceived(const IPC::Message& message) { |
| OnGetPermissionStatusSuccess); |
| IPC_MESSAGE_HANDLER(PushMessagingMsg_GetPermissionStatusError, |
| OnGetPermissionStatusError); |
| + IPC_MESSAGE_HANDLER(PushMessagingMsg_UnregisterSuccess, |
|
johnme
2014/12/16 16:31:59
Please move this above GetPermissionStatusSuccess.
mlamouri (slow - plz ping)
2014/12/16 18:26:16
Done.
|
| + OnUnregisterSuccess); |
| + IPC_MESSAGE_HANDLER(PushMessagingMsg_UnregisterError, |
| + OnUnregisterError); |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| @@ -165,4 +183,31 @@ void PushProvider::OnGetPermissionStatusError(int request_id) { |
| permission_status_callbacks_.Remove(request_id); |
| } |
| +void PushProvider::OnUnregisterSuccess(int request_id, bool did_unregister) { |
| + blink::WebPushUnregisterCallbacks* callbacks = |
| + unregister_callbacks_.Lookup(request_id); |
| + if (!callbacks) |
| + return; |
| + |
| + callbacks->onSuccess(&did_unregister); |
| + |
| + unregister_callbacks_.Remove(request_id); |
| +} |
| + |
| +void PushProvider::OnUnregisterError( |
| + int request_id, |
| + blink::WebPushError::ErrorType error_type, |
| + const std::string& error_message) { |
| + blink::WebPushUnregisterCallbacks* callbacks = |
| + unregister_callbacks_.Lookup(request_id); |
| + if (!callbacks) |
| + return; |
| + |
| + scoped_ptr<blink::WebPushError> error(new blink::WebPushError( |
| + error_type, blink::WebString::fromUTF8(error_message))); |
| + callbacks->onError(error.release()); |
| + |
| + unregister_callbacks_.Remove(request_id); |
| +} |
| + |
| } // namespace content |