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

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

Issue 769273004: Push API: Merge the FromDocument and FromWorker registration methods (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@threading
Patch Set: from_document -> FromDocument 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
« no previous file with comments | « content/browser/push_messaging/push_messaging_message_filter.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 950c6a51f3d260a66b32384cd5bd57187efbcc10..415d8401b6c747dc26d0c2081199abcfb8cfdf1f 100644
--- a/content/browser/push_messaging/push_messaging_message_filter.cc
+++ b/content/browser/push_messaging/push_messaging_message_filter.cc
@@ -16,6 +16,7 @@
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/push_messaging_service.h"
+#include "content/public/common/child_process_host.h"
#include "third_party/WebKit/public/platform/WebPushPermissionStatus.h"
namespace content {
@@ -29,6 +30,16 @@ void RecordRegistrationStatus(PushRegistrationStatus status) {
} // namespace
+PushMessagingMessageFilter::RegisterData::RegisterData()
+ : request_id(0),
+ service_worker_registration_id(0),
+ render_frame_id(ChildProcessHost::kInvalidUniqueID),
+ user_visible_only(false) {}
+
+bool PushMessagingMessageFilter::RegisterData::FromDocument() const {
+ return render_frame_id != ChildProcessHost::kInvalidUniqueID;
+}
+
PushMessagingMessageFilter::PushMessagingMessageFilter(
int render_process_id,
ServiceWorkerContextWrapper* service_worker_context)
@@ -83,13 +94,19 @@ void PushMessagingMessageFilter::OnRegisterFromDocument(
// TODO(peter): Persist |user_visible_only| in Service Worker storage.
+ RegisterData data;
+ data.request_id = request_id;
+ data.requesting_origin =
+ service_worker_host->active_version()->scope().GetOrigin();
+ data.service_worker_registration_id =
+ service_worker_host->active_version()->registration_id();
+ data.render_frame_id = render_frame_id;
+ data.user_visible_only = user_visible_only;
+
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
- base::Bind(&PushMessagingMessageFilter::RegisterFromDocumentOnUI,
- this, render_frame_id, request_id, sender_id,
- user_visible_only,
- service_worker_host->active_version()->scope().GetOrigin(),
- service_worker_host->active_version()->registration_id()));
+ base::Bind(&PushMessagingMessageFilter::RegisterOnUI,
+ this, data, sender_id));
}
void PushMessagingMessageFilter::OnRegisterFromWorker(
@@ -107,12 +124,15 @@ void PushMessagingMessageFilter::OnRegisterFromWorker(
// https://crbug.com/437298
std::string sender_id = "";
+ RegisterData data;
+ data.request_id = request_id;
+ data.requesting_origin = service_worker_registration->pattern().GetOrigin();
+ data.service_worker_registration_id = service_worker_registration_id;
+
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
- base::Bind(&PushMessagingMessageFilter::RegisterFromWorkerOnUI,
- this, request_id, sender_id,
- service_worker_registration->pattern().GetOrigin(),
- service_worker_registration_id));
+ base::Bind(&PushMessagingMessageFilter::RegisterOnUI,
+ this, data, sender_id));
}
void PushMessagingMessageFilter::OnPermissionStatusRequest(
@@ -158,47 +178,27 @@ void PushMessagingMessageFilter::OnGetPermissionStatus(
request_id));
}
-void PushMessagingMessageFilter::RegisterFromDocumentOnUI(
- int render_frame_id,
- int request_id,
- const std::string& sender_id,
- bool user_visible_only,
- const GURL& requesting_origin,
- int64 service_worker_registration_id) {
+void PushMessagingMessageFilter::RegisterOnUI(
+ const RegisterData& data,
+ const std::string& sender_id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (!service()) {
- PushRegistrationStatus status =
- PUSH_REGISTRATION_STATUS_SERVICE_NOT_AVAILABLE;
- Send(new PushMessagingMsg_RegisterFromDocumentError(render_frame_id,
- request_id, status));
- RecordRegistrationStatus(status);
+ SendRegisterError(data, PUSH_REGISTRATION_STATUS_SERVICE_NOT_AVAILABLE);
return;
}
- service()->RegisterFromDocument(
- requesting_origin, service_worker_registration_id, sender_id,
- render_process_id_, render_frame_id, user_visible_only,
- base::Bind(&PushMessagingMessageFilter::DidRegisterFromDocument,
- weak_factory_ui_to_ui_.GetWeakPtr(),
- render_frame_id, request_id));
-}
-void PushMessagingMessageFilter::RegisterFromWorkerOnUI(
- int request_id,
- const std::string& sender_id,
- const GURL& requesting_origin,
- int64 service_worker_registration_id) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (!service()) {
- PushRegistrationStatus status =
- PUSH_REGISTRATION_STATUS_SERVICE_NOT_AVAILABLE;
- Send(new PushMessagingMsg_RegisterFromWorkerError(request_id, status));
- RecordRegistrationStatus(status);
- return;
+ if (data.FromDocument()) {
+ service()->RegisterFromDocument(
+ data.requesting_origin, data.service_worker_registration_id, sender_id,
+ render_process_id_, data.render_frame_id, data.user_visible_only,
+ base::Bind(&PushMessagingMessageFilter::DidRegister,
+ weak_factory_ui_to_ui_.GetWeakPtr(), data));
+ } else {
+ service()->RegisterFromWorker(
+ data.requesting_origin, data.service_worker_registration_id, sender_id,
+ base::Bind(&PushMessagingMessageFilter::DidRegister,
+ weak_factory_ui_to_ui_.GetWeakPtr(), data));
}
- service()->RegisterFromWorker(
- requesting_origin, service_worker_registration_id, sender_id,
- base::Bind(&PushMessagingMessageFilter::DidRegisterFromWorker,
- weak_factory_ui_to_ui_.GetWeakPtr(), request_id));
}
void PushMessagingMessageFilter::DoPermissionStatusRequest(
@@ -225,38 +225,44 @@ void PushMessagingMessageFilter::GetPermissionStatusOnUI(
permission_status));
}
-void PushMessagingMessageFilter::DidRegisterFromDocument(
- int render_frame_id,
- int request_id,
+void PushMessagingMessageFilter::DidRegister(
+ const RegisterData& data,
const std::string& push_registration_id,
PushRegistrationStatus status) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (status == PUSH_REGISTRATION_STATUS_SUCCESS) {
- GURL push_endpoint(service()->PushEndpoint());
- Send(new PushMessagingMsg_RegisterFromDocumentSuccess(
- render_frame_id, request_id, push_endpoint, push_registration_id));
+ SendRegisterSuccess(data, push_registration_id);
} else {
- Send(new PushMessagingMsg_RegisterFromDocumentError(render_frame_id,
- request_id, status));
+ SendRegisterError(data, status);
}
- RecordRegistrationStatus(status);
}
-void PushMessagingMessageFilter::DidRegisterFromWorker(
- int request_id,
- const std::string& push_registration_id,
- PushRegistrationStatus status) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (status == PUSH_REGISTRATION_STATUS_SUCCESS) {
- GURL push_endpoint(service()->PushEndpoint());
- Send(new PushMessagingMsg_RegisterFromWorkerSuccess(
- request_id, push_endpoint, push_registration_id));
+void PushMessagingMessageFilter::SendRegisterError(
+ const RegisterData& data, PushRegistrationStatus status) {
+ if (data.FromDocument()) {
+ Send(new PushMessagingMsg_RegisterFromDocumentError(
+ data.render_frame_id, data.request_id, status));
} else {
- Send(new PushMessagingMsg_RegisterFromWorkerError(request_id, status));
+ Send(new PushMessagingMsg_RegisterFromWorkerError(
+ data.request_id, status));
}
RecordRegistrationStatus(status);
}
+void PushMessagingMessageFilter::SendRegisterSuccess(
+ const RegisterData& data, const std::string& push_registration_id) {
+ GURL push_endpoint(service()->PushEndpoint());
+ if (data.FromDocument()) {
+ Send(new PushMessagingMsg_RegisterFromDocumentSuccess(
+ data.render_frame_id,
+ data.request_id, push_endpoint, push_registration_id));
+ } else {
+ Send(new PushMessagingMsg_RegisterFromWorkerSuccess(
+ data.request_id, push_endpoint, push_registration_id));
+ }
+ RecordRegistrationStatus(PUSH_REGISTRATION_STATUS_SUCCESS);
+}
+
PushMessagingService* PushMessagingMessageFilter::service() {
if (!service_) {
RenderProcessHost* process_host =
« no previous file with comments | « content/browser/push_messaging/push_messaging_message_filter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698