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

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

Issue 1851423003: Make Web Push use InstanceID tokens instead of GCM registrations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@iid4default
Patch Set: Rebase 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 375fc08503bd60caa4bba469e94ca8020f46dd0b..eec059e69b2c6eab5b3ee1ba7b514d8b53ce63ec 100644
--- a/content/browser/push_messaging/push_messaging_message_filter.cc
+++ b/content/browser/push_messaging/push_messaging_message_filter.cc
@@ -36,8 +36,9 @@
namespace content {
// Service Worker database keys. If a registration ID is stored, the stored
-// sender ID must be the one used to subscribe. Unfortunately, this isn't always
-// true of subscriptions previously stored in the database.
+// sender ID must be the one used to register. Unfortunately, this isn't always
+// true of pre-InstanceID registrations previously stored in the database, but
+// fortunately it's less important for their sender ID to be accurate.
const char kPushSenderIdServiceWorkerKey[] = "push_sender_id";
const char kPushRegistrationIdServiceWorkerKey[] = "push_registration_id";
@@ -136,6 +137,7 @@ class PushMessagingMessageFilter::Core {
void GetEncryptionInfoOnUI(
const GURL& origin,
int64_t service_worker_registration_id,
+ const std::string& sender_id,
const PushMessagingService::EncryptionInfoCallback& io_thread_callback);
// Called (directly) from both the UI and IO threads.
@@ -304,7 +306,8 @@ void PushMessagingMessageFilter::DidCheckForExistingRegistration(
BrowserThread::UI, FROM_HERE,
base::Bind(&Core::GetEncryptionInfoOnUI,
base::Unretained(ui_core_.get()), data.requesting_origin,
- data.service_worker_registration_id, callback));
+ data.service_worker_registration_id,
+ data.options.sender_info, callback));
return;
}
// TODO(johnme): The spec allows the register algorithm to reject with an
@@ -365,6 +368,8 @@ void PushMessagingMessageFilter::Core::RegisterOnUI(
PushMessagingService* push_service = service();
if (!push_service) {
if (!is_incognito()) {
+ // This might happen if InstanceIDProfileService::IsInstanceIDEnabled
+ // returns false because the Instance ID kill switch was enabled.
// TODO(johnme): Might be better not to expose the API in this case.
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
@@ -753,6 +758,11 @@ void PushMessagingMessageFilter::DidGetSubscription(
break;
}
+ ServiceWorkerRegistration* registration =
+ service_worker_context_->GetLiveRegistration(
+ service_worker_registration_id);
+ const GURL origin = registration->pattern().GetOrigin();
+
const bool uses_standard_protocol =
IsApplicationServerKey(push_subscription_id_and_sender_info[1]);
const GURL endpoint = CreateEndpoint(
@@ -763,16 +773,12 @@ void PushMessagingMessageFilter::DidGetSubscription(
weak_factory_io_to_io_.GetWeakPtr(), request_id, endpoint,
push_subscription_id_and_sender_info[1]);
- ServiceWorkerRegistration* registration =
- service_worker_context_->GetLiveRegistration(
- service_worker_registration_id);
- const GURL origin = registration->pattern().GetOrigin();
-
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::Bind(&Core::GetEncryptionInfoOnUI,
base::Unretained(ui_core_.get()), origin,
- service_worker_registration_id, callback));
+ service_worker_registration_id,
+ push_subscription_id_and_sender_info[1], callback));
return;
}
@@ -900,12 +906,13 @@ void PushMessagingMessageFilter::Core::GetPermissionStatusOnUI(
void PushMessagingMessageFilter::Core::GetEncryptionInfoOnUI(
const GURL& origin,
int64_t service_worker_registration_id,
+ const std::string& sender_id,
const PushMessagingService::EncryptionInfoCallback& io_thread_callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
PushMessagingService* push_service = service();
if (push_service) {
push_service->GetEncryptionInfo(
- origin, service_worker_registration_id,
+ origin, service_worker_registration_id, sender_id,
base::Bind(&ForwardEncryptionInfoToIOThreadProxy, io_thread_callback));
return;
}
« no previous file with comments | « components/gcm_driver/instance_id/fake_gcm_driver_for_instance_id.cc ('k') | content/public/browser/push_messaging_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698