| 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 ab3b96af9d6cb10083f7acabdfbd1d8758274ef2..bd67fc9c8cfeeb6c3dab9611035295f93b61e51d 100644
|
| --- a/content/browser/push_messaging/push_messaging_message_filter.cc
|
| +++ b/content/browser/push_messaging/push_messaging_message_filter.cc
|
| @@ -367,18 +367,66 @@ void PushMessagingMessageFilter::OnUnregister(
|
| service_worker_context_->context()->storage()->GetUserData(
|
| service_worker_registration_id,
|
| kPushRegistrationIdServiceWorkerKey,
|
| - base::Bind(&PushMessagingMessageFilter::DoUnregister,
|
| + base::Bind(&PushMessagingMessageFilter::UnregisterWithPushRegistrationId,
|
| weak_factory_io_to_io_.GetWeakPtr(),
|
| request_id,
|
| service_worker_registration_id,
|
| service_worker_registration->pattern().GetOrigin()));
|
| }
|
|
|
| -void PushMessagingMessageFilter::DoUnregister(
|
| +void PushMessagingMessageFilter::UnregisterWithPushRegistrationId(
|
| int request_id,
|
| int64 service_worker_registration_id,
|
| const GURL& requesting_origin,
|
| - const std::string& push_registration_id,
|
| + const std::string& push_registration_id, // Unused, we just want the status
|
| + ServiceWorkerStatusCode service_worker_status) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| +
|
| + switch (service_worker_status) {
|
| + case SERVICE_WORKER_OK:
|
| + service_worker_context_->context()->storage()->GetUserData(
|
| + service_worker_registration_id,
|
| + kSenderIdServiceWorkerKey,
|
| + base::Bind(
|
| + &PushMessagingMessageFilter::UnregisterWithSenderId,
|
| + weak_factory_io_to_io_.GetWeakPtr(),
|
| + request_id,
|
| + service_worker_registration_id,
|
| + requesting_origin));
|
| + return;
|
| + case SERVICE_WORKER_ERROR_NOT_FOUND:
|
| + // We did not find a registration, stop here and notify the renderer that
|
| + // it was a success even though we did not unregister.
|
| + DidUnregister(request_id,
|
| + PUSH_UNREGISTRATION_STATUS_SUCCESS_WAS_NOT_REGISTERED);
|
| + return;
|
| + case SERVICE_WORKER_ERROR_FAILED:
|
| + DidUnregister(request_id,
|
| + PUSH_UNREGISTRATION_STATUS_UNKNOWN_ERROR);
|
| + return;
|
| + case SERVICE_WORKER_ERROR_ABORT:
|
| + case SERVICE_WORKER_ERROR_START_WORKER_FAILED:
|
| + case SERVICE_WORKER_ERROR_PROCESS_NOT_FOUND:
|
| + case SERVICE_WORKER_ERROR_EXISTS:
|
| + case SERVICE_WORKER_ERROR_INSTALL_WORKER_FAILED:
|
| + case SERVICE_WORKER_ERROR_ACTIVATE_WORKER_FAILED:
|
| + case SERVICE_WORKER_ERROR_IPC_FAILED:
|
| + case SERVICE_WORKER_ERROR_NETWORK:
|
| + case SERVICE_WORKER_ERROR_SECURITY:
|
| + case SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED:
|
| + case SERVICE_WORKER_ERROR_STATE:
|
| + NOTREACHED() << "Got unexpected error code: " << service_worker_status
|
| + << " " << ServiceWorkerStatusToString(service_worker_status);
|
| + DidUnregister(request_id, PUSH_UNREGISTRATION_STATUS_UNKNOWN_ERROR);
|
| + return;
|
| + }
|
| +}
|
| +
|
| +void PushMessagingMessageFilter::UnregisterWithSenderId(
|
| + int request_id,
|
| + int64 service_worker_registration_id,
|
| + const GURL& requesting_origin,
|
| + const std::string& sender_id,
|
| ServiceWorkerStatusCode service_worker_status) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
|
|
| @@ -390,7 +438,8 @@ void PushMessagingMessageFilter::DoUnregister(
|
| this,
|
| request_id,
|
| service_worker_registration_id,
|
| - requesting_origin));
|
| + requesting_origin,
|
| + sender_id));
|
| return;
|
| case SERVICE_WORKER_ERROR_NOT_FOUND:
|
| // We did not find a registration, stop here and notify the renderer that
|
| @@ -423,14 +472,16 @@ void PushMessagingMessageFilter::DoUnregister(
|
| void PushMessagingMessageFilter::UnregisterFromService(
|
| int request_id,
|
| int64 service_worker_registration_id,
|
| - const GURL& requesting_origin) {
|
| + const GURL& requesting_origin,
|
| + const std::string& sender_id) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| if (!service()) {
|
| DidUnregister(request_id, PUSH_UNREGISTRATION_STATUS_UNKNOWN_ERROR);
|
| return;
|
| }
|
|
|
| - service()->Unregister(requesting_origin, service_worker_registration_id,
|
| + service()->Unregister(
|
| + requesting_origin, service_worker_registration_id, sender_id,
|
| base::Bind(&PushMessagingMessageFilter::DidUnregisterFromService,
|
| weak_factory_ui_to_ui_.GetWeakPtr(),
|
| request_id,
|
|
|