| Index: content/browser/push_messaging/push_messaging_message_filter.cc
|
| diff --git a/content/browser/push_messaging/push_messaging_message_filter.cc b/content/browser/push_messaging/push_messaging_message_filter.cc
|
| index cf0a1f4e335ad8de347c0fbb2da1a28050bef361..7d256733aae94d498fd5980ca85cf7c3478b7456 100644
|
| --- a/content/browser/push_messaging/push_messaging_message_filter.cc
|
| +++ b/content/browser/push_messaging/push_messaging_message_filter.cc
|
| @@ -74,6 +74,8 @@ bool PushMessagingMessageFilter::OnMessageReceived(
|
| OnPermissionStatusRequest)
|
| IPC_MESSAGE_HANDLER(PushMessagingHostMsg_GetPermissionStatus,
|
| OnGetPermissionStatus)
|
| + IPC_MESSAGE_HANDLER(PushMessagingHostMsg_Unregister,
|
| + OnUnregister)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP()
|
| return handled;
|
| @@ -265,6 +267,45 @@ void PushMessagingMessageFilter::RegisterOnUI(
|
| }
|
| }
|
|
|
| +void PushMessagingMessageFilter::OnUnregister(
|
| + int request_id, int64 service_worker_registration_id) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + ServiceWorkerRegistration* service_worker_registration =
|
| + service_worker_context_->context()->GetLiveRegistration(
|
| + service_worker_registration_id);
|
| + DCHECK(service_worker_registration);
|
| + if (!service_worker_registration)
|
| + return;
|
| +
|
| + BrowserThread::PostTask(
|
| + BrowserThread::UI, FROM_HERE,
|
| + base::Bind(&PushMessagingMessageFilter::UnregisterOnUI,
|
| + this,
|
| + request_id,
|
| + service_worker_registration_id,
|
| + service_worker_registration->pattern().GetOrigin()));
|
| +}
|
| +
|
| +void PushMessagingMessageFilter::UnregisterOnUI(
|
| + int request_id,
|
| + int64 service_worker_registration_id,
|
| + const GURL& requesting_origin) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + if (!service()) {
|
| + DidUnregister(request_id, false);
|
| + return;
|
| + }
|
| +
|
| + service()->Unregister(requesting_origin, service_worker_registration_id,
|
| + base::Bind(&PushMessagingMessageFilter::DidUnregister,
|
| + weak_factory_ui_to_ui_.GetWeakPtr(), request_id));
|
| +}
|
| +
|
| +void PushMessagingMessageFilter::DidUnregister(int request_id,
|
| + bool unregistered) {
|
| + Send(new PushMessagingMsg_UnregisterResponse(request_id, unregistered));
|
| +}
|
| +
|
| void PushMessagingMessageFilter::DoPermissionStatusRequest(
|
| const GURL& requesting_origin,
|
| int render_frame_id,
|
|
|