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

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

Issue 793403002: Implement WebPushProvider.unregister() in Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mvan_2
Patch Set: browsertests and override fix Created 6 years 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 69f0b13a8699a1437a75cf07531a47295bb01143..f138fe7eb13ff56703d778e4e4e7845e7e23e92a 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;
@@ -211,6 +213,25 @@ void PushMessagingMessageFilter::OnGetPermissionStatus(
request_id));
}
+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,
+ service_worker_registration->pattern().GetOrigin(),
+ service_worker_registration_id,
+ request_id));
+}
+
void PushMessagingMessageFilter::RegisterOnUI(
const RegisterData& data,
const std::string& sender_id) {
@@ -267,6 +288,26 @@ void PushMessagingMessageFilter::GetPermissionStatusOnUI(
permission_status));
}
+
+void PushMessagingMessageFilter::UnregisterOnUI(
+ const GURL& requesting_origin,
+ int64 service_worker_registration_id,
+ int request_id) {
+ 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 result) {
+ Send(new PushMessagingMsg_UnregisterResponse(request_id, result));
johnme 2014/12/12 15:22:02 Please remove the registration from SW storage now
mlamouri (slow - plz ping) 2014/12/15 11:29:36 I will do that in a follow-up CL. No need to have
+}
+
void PushMessagingMessageFilter::DidRegister(
const RegisterData& data,
const std::string& push_registration_id,

Powered by Google App Engine
This is Rietveld 408576698