Index: chrome/browser/services/gcm/push_messaging_service_impl.cc |
diff --git a/chrome/browser/services/gcm/push_messaging_service_impl.cc b/chrome/browser/services/gcm/push_messaging_service_impl.cc |
index 80051f95a980c0820f098d9e6bf85442952a446d..0de93529b394a034fa4f1aa32eaa2b6b5bcb6dad 100644 |
--- a/chrome/browser/services/gcm/push_messaging_service_impl.cc |
+++ b/chrome/browser/services/gcm/push_messaging_service_impl.cc |
@@ -158,7 +158,7 @@ void PushMessagingServiceImpl::OnMessage( |
if (!HasPermission(application_id.origin)) { |
// The |origin| lost push permission. We need to unregister and drop this |
// message. |
- Unregister(application_id); |
+ Unregister(application_id, UnregisterCallback()); |
return; |
} |
@@ -197,7 +197,7 @@ void PushMessagingServiceImpl::DeliverMessageCallback( |
case content::PUSH_DELIVERY_STATUS_EVENT_WAITUNTIL_REJECTED: |
break; |
case content::PUSH_DELIVERY_STATUS_NO_SERVICE_WORKER: |
- Unregister(application_id); |
+ Unregister(application_id, UnregisterCallback()); |
break; |
} |
} |
@@ -414,22 +414,36 @@ void PushMessagingServiceImpl::DidRequestPermission( |
} |
void PushMessagingServiceImpl::Unregister( |
- const PushMessagingApplicationId& application_id) { |
+ const GURL& requesting_origin, |
+ int64 service_worker_registration_id, |
+ const content::PushMessagingService::UnregisterCallback& callback) { |
+ DCHECK(gcm_profile_service_->driver()); |
+ |
+ PushMessagingApplicationId application_id = PushMessagingApplicationId( |
+ requesting_origin, service_worker_registration_id); |
+ DCHECK(application_id.IsValid()); |
+ |
+ Unregister(application_id, callback); |
+} |
+ |
+void PushMessagingServiceImpl::Unregister( |
+ const PushMessagingApplicationId& application_id, |
+ const content::PushMessagingService::UnregisterCallback& callback) { |
DCHECK(gcm_profile_service_->driver()); |
gcm_profile_service_->driver()->Unregister( |
application_id.ToString(), |
base::Bind(&PushMessagingServiceImpl::DidUnregister, |
- weak_factory_.GetWeakPtr())); |
+ weak_factory_.GetWeakPtr(), callback)); |
} |
-void PushMessagingServiceImpl::DidUnregister(GCMClient::Result result) { |
- if (result != GCMClient::SUCCESS) { |
- DVLOG(1) << "GCM unregistration failed."; |
- return; |
- } |
+void PushMessagingServiceImpl::DidUnregister( |
+ const content::PushMessagingService::UnregisterCallback& callback, |
+ GCMClient::Result result) { |
+ callback.Run(result == GCMClient::SUCCESS); |
- DecreasePushRegistrationCount(1); |
+ if (result == GCMClient::SUCCESS) |
+ DecreasePushRegistrationCount(1); |
} |
bool PushMessagingServiceImpl::HasPermission(const GURL& origin) { |