Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6177)

Unified Diff: content/browser/push_messaging/push_messaging_message_filter.cc

Issue 2387483002: Push API: Refactor and fix unsubscribe API (Closed)
Patch Set: Added enum reuse comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 eec059e69b2c6eab5b3ee1ba7b514d8b53ce63ec..fd768eb7ff6aca39eade34157eab148b28d50fd8 100644
--- a/content/browser/push_messaging/push_messaging_message_filter.cc
+++ b/content/browser/push_messaging/push_messaging_message_filter.cc
@@ -549,66 +549,31 @@ void PushMessagingMessageFilter::OnUnsubscribe(
}
service_worker_context_->GetRegistrationUserData(
- service_worker_registration_id,
- {kPushRegistrationIdServiceWorkerKey, kPushSenderIdServiceWorkerKey},
- base::Bind(&PushMessagingMessageFilter::UnsubscribeHavingGottenIds,
+ service_worker_registration_id, {kPushSenderIdServiceWorkerKey},
+ base::Bind(&PushMessagingMessageFilter::UnsubscribeHavingGottenSenderId,
weak_factory_io_to_io_.GetWeakPtr(), request_id,
service_worker_registration_id,
service_worker_registration->pattern().GetOrigin()));
}
-void PushMessagingMessageFilter::UnsubscribeHavingGottenIds(
+void PushMessagingMessageFilter::UnsubscribeHavingGottenSenderId(
int request_id,
int64_t service_worker_registration_id,
const GURL& requesting_origin,
- const std::vector<std::string>& push_subscription_and_sender_ids,
+ const std::vector<std::string>& sender_ids,
ServiceWorkerStatusCode service_worker_status) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- // Note that the subscription ID (push_subscription_and_sender_ids[0]) is
- // unused - we just needed to check if the database contained one.
-
- switch (service_worker_status) {
- case SERVICE_WORKER_OK:
- DCHECK_EQ(2u, push_subscription_and_sender_ids.size());
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&Core::UnregisterFromService,
- base::Unretained(ui_core_.get()), request_id,
- service_worker_registration_id, requesting_origin,
- push_subscription_and_sender_ids[1]));
- break;
- 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);
- break;
- case SERVICE_WORKER_ERROR_FAILED:
- DidUnregister(request_id, PUSH_UNREGISTRATION_STATUS_STORAGE_ERROR);
- break;
- 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:
- case SERVICE_WORKER_ERROR_TIMEOUT:
- case SERVICE_WORKER_ERROR_SCRIPT_EVALUATE_FAILED:
- case SERVICE_WORKER_ERROR_DISK_CACHE:
- case SERVICE_WORKER_ERROR_REDUNDANT:
- case SERVICE_WORKER_ERROR_DISALLOWED:
- case SERVICE_WORKER_ERROR_MAX_VALUE:
- NOTREACHED() << "Got unexpected error code: " << service_worker_status
- << " " << ServiceWorkerStatusToString(service_worker_status);
- DidUnregister(request_id, PUSH_UNREGISTRATION_STATUS_STORAGE_ERROR);
- break;
+ std::string sender_id;
+ if (service_worker_status == SERVICE_WORKER_OK) {
+ DCHECK_EQ(1u, sender_ids.size());
+ sender_id = sender_ids[0];
}
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&Core::UnregisterFromService, base::Unretained(ui_core_.get()),
+ request_id, service_worker_registration_id, requesting_origin,
+ sender_id));
}
void PushMessagingMessageFilter::Core::UnregisterFromService(
@@ -643,53 +608,10 @@ void PushMessagingMessageFilter::Core::DidUnregisterFromService(
PushUnregistrationStatus unregistration_status) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- switch (unregistration_status) {
- case PUSH_UNREGISTRATION_STATUS_SUCCESS_UNREGISTERED:
- case PUSH_UNREGISTRATION_STATUS_SUCCESS_WAS_NOT_REGISTERED:
- case PUSH_UNREGISTRATION_STATUS_PENDING_NETWORK_ERROR:
- case PUSH_UNREGISTRATION_STATUS_PENDING_SERVICE_ERROR:
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&PushMessagingMessageFilter::ClearRegistrationData,
- io_parent_, request_id, service_worker_registration_id,
- unregistration_status));
- break;
- case PUSH_UNREGISTRATION_STATUS_NO_SERVICE_WORKER:
- case PUSH_UNREGISTRATION_STATUS_SERVICE_NOT_AVAILABLE:
- case PUSH_UNREGISTRATION_STATUS_STORAGE_ERROR:
- case PUSH_UNREGISTRATION_STATUS_NETWORK_ERROR:
- NOTREACHED();
- break;
- }
-}
-
-void PushMessagingMessageFilter::ClearRegistrationData(
- int request_id,
- int64_t service_worker_registration_id,
- PushUnregistrationStatus unregistration_status) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
-
- service_worker_context_->ClearRegistrationUserData(
- service_worker_registration_id, {kPushRegistrationIdServiceWorkerKey},
- base::Bind(&PushMessagingMessageFilter::DidClearRegistrationData,
- weak_factory_io_to_io_.GetWeakPtr(), request_id,
- unregistration_status));
-}
-
-void PushMessagingMessageFilter::DidClearRegistrationData(
- int request_id,
- PushUnregistrationStatus unregistration_status,
- ServiceWorkerStatusCode service_worker_status) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
-
- if (service_worker_status != SERVICE_WORKER_OK &&
- service_worker_status != SERVICE_WORKER_ERROR_NOT_FOUND) {
- unregistration_status = PUSH_UNREGISTRATION_STATUS_STORAGE_ERROR;
- DLOG(WARNING) << "Got unexpected error code: " << service_worker_status
- << " " << ServiceWorkerStatusToString(service_worker_status);
- }
-
- DidUnregister(request_id, unregistration_status);
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&PushMessagingMessageFilter::DidUnregister, io_parent_,
+ request_id, unregistration_status));
}
void PushMessagingMessageFilter::DidUnregister(
« no previous file with comments | « content/browser/push_messaging/push_messaging_message_filter.h ('k') | content/public/browser/push_messaging_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698