| 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 fb7d8cded3ea6e13b0da733e8eb19932ada6e7b0..385534a4a2683a7b7d0a0cfb2649529c11bab707 100644
|
| --- a/chrome/browser/services/gcm/push_messaging_service_impl.cc
|
| +++ b/chrome/browser/services/gcm/push_messaging_service_impl.cc
|
| @@ -262,7 +262,8 @@ void PushMessagingServiceImpl::DeliverMessageCallback(
|
| case content::PUSH_DELIVERY_STATUS_UNKNOWN_APP_ID:
|
| case content::PUSH_DELIVERY_STATUS_PERMISSION_DENIED:
|
| case content::PUSH_DELIVERY_STATUS_NO_SERVICE_WORKER:
|
| - Unregister(app_id_guid, true /*retry_on_failure*/, UnregisterCallback());
|
| + Unregister(app_id_guid, message.sender_id, true /* retry_on_failure */,
|
| + UnregisterCallback());
|
| break;
|
| }
|
| }
|
| @@ -617,6 +618,7 @@ void PushMessagingServiceImpl::DidRequestPermission(
|
| void PushMessagingServiceImpl::Unregister(
|
| const GURL& requesting_origin,
|
| int64 service_worker_registration_id,
|
| + const std::string& sender_id,
|
| bool retry_on_failure,
|
| const content::PushMessagingService::UnregisterCallback& callback) {
|
| DCHECK(gcm_profile_service_->driver());
|
| @@ -629,11 +631,13 @@ void PushMessagingServiceImpl::Unregister(
|
| return;
|
| }
|
|
|
| - Unregister(application_id.app_id_guid(), retry_on_failure, callback);
|
| + Unregister(application_id.app_id_guid(), sender_id, retry_on_failure,
|
| + callback);
|
| }
|
|
|
| void PushMessagingServiceImpl::Unregister(
|
| const std::string& app_id_guid,
|
| + const std::string& sender_id,
|
| bool retry_on_failure,
|
| const content::PushMessagingService::UnregisterCallback& callback) {
|
| DCHECK(gcm_profile_service_->driver());
|
| @@ -649,11 +653,17 @@ void PushMessagingServiceImpl::Unregister(
|
| application_id.DeleteFromDisk(profile_);
|
| }
|
|
|
| - gcm_profile_service_->driver()->Unregister(
|
| - app_id_guid,
|
| + const auto& unregister_callback =
|
| base::Bind(&PushMessagingServiceImpl::DidUnregister,
|
| weak_factory_.GetWeakPtr(),
|
| - app_id_guid, retry_on_failure, callback));
|
| + app_id_guid, retry_on_failure, callback);
|
| +#if defined(OS_ANDROID)
|
| + // On Android the backend is different, and requires the original sender_id.
|
| + gcm_profile_service_->driver()->UnregisterWithSenderId(app_id_guid, sender_id,
|
| + unregister_callback);
|
| +#else
|
| + gcm_profile_service_->driver()->Unregister(app_id_guid, unregister_callback);
|
| +#endif
|
| }
|
|
|
| void PushMessagingServiceImpl::DidUnregister(
|
|
|