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

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

Issue 1945753002: Make Service Worker DB UserData methods accept multiple keys at once (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@iid6encrypt
Patch Set: Created 4 years, 8 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 107b06f337a52e97d5832841472045dc1bd46ddf..ed47346a1162f4a9bcd400e8eff56eacb71467e1 100644
--- a/content/browser/push_messaging/push_messaging_message_filter.cc
+++ b/content/browser/push_messaging/push_messaging_message_filter.cc
@@ -275,7 +275,7 @@ void PushMessagingMessageFilter::OnSubscribeFromDocument(
service_worker_context_->StoreRegistrationUserData(
service_worker_registration_id, data.requesting_origin,
- kPushSenderIdServiceWorkerKey, options.sender_info,
+ {{kPushSenderIdServiceWorkerKey, options.sender_info}},
base::Bind(&PushMessagingMessageFilter::DidPersistSenderInfo,
weak_factory_io_to_io_.GetWeakPtr(), data, options));
}
@@ -302,7 +302,7 @@ void PushMessagingMessageFilter::OnSubscribeFromWorker(
if (!options.sender_info.empty()) {
service_worker_context_->StoreRegistrationUserData(
service_worker_registration_id, data.requesting_origin,
- kPushSenderIdServiceWorkerKey, options.sender_info,
+ {{kPushSenderIdServiceWorkerKey, options.sender_info}},
base::Bind(&PushMessagingMessageFilter::DidPersistSenderInfo,
weak_factory_io_to_io_.GetWeakPtr(), data, options));
} else {
@@ -328,7 +328,8 @@ void PushMessagingMessageFilter::CheckForExistingRegistration(
const PushSubscriptionOptions& options) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
service_worker_context_->GetRegistrationUserData(
- data.service_worker_registration_id, kPushRegistrationIdServiceWorkerKey,
+ data.service_worker_registration_id,
+ {kPushRegistrationIdServiceWorkerKey},
base::Bind(&PushMessagingMessageFilter::DidCheckForExistingRegistration,
weak_factory_io_to_io_.GetWeakPtr(), data, options));
}
@@ -336,13 +337,13 @@ void PushMessagingMessageFilter::CheckForExistingRegistration(
void PushMessagingMessageFilter::DidCheckForExistingRegistration(
const RegisterData& data,
const PushSubscriptionOptions& options,
- const std::string& push_registration_id,
+ const std::vector<std::string>& push_registration_id,
ServiceWorkerStatusCode service_worker_status) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (service_worker_status == SERVICE_WORKER_OK) {
michaeln 2016/05/03 19:38:05 maybe dcheck vector.size() == 1, ditto other retur
johnme 2016/05/05 10:54:03 Done.
auto callback = base::Bind(
&PushMessagingMessageFilter::DidGetEncryptionKeys,
- weak_factory_io_to_io_.GetWeakPtr(), data, push_registration_id);
+ weak_factory_io_to_io_.GetWeakPtr(), data, push_registration_id[0]);
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
@@ -363,7 +364,7 @@ void PushMessagingMessageFilter::DidCheckForExistingRegistration(
options.sender_info));
} else {
service_worker_context_->GetRegistrationUserData(
- data.service_worker_registration_id, kPushSenderIdServiceWorkerKey,
+ data.service_worker_registration_id, {kPushSenderIdServiceWorkerKey},
base::Bind(&PushMessagingMessageFilter::DidGetSenderIdFromStorage,
weak_factory_io_to_io_.GetWeakPtr(), data));
}
@@ -388,7 +389,7 @@ void PushMessagingMessageFilter::DidGetEncryptionKeys(
void PushMessagingMessageFilter::DidGetSenderIdFromStorage(
const RegisterData& data,
- const std::string& sender_id,
+ const std::vector<std::string>& sender_id,
ServiceWorkerStatusCode service_worker_status) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
if (service_worker_status != SERVICE_WORKER_OK) {
@@ -398,7 +399,7 @@ void PushMessagingMessageFilter::DidGetSenderIdFromStorage(
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::Bind(&Core::RegisterOnUI, base::Unretained(ui_core_.get()), data,
- sender_id));
+ sender_id[0]));
}
void PushMessagingMessageFilter::Core::RegisterOnUI(
@@ -506,7 +507,7 @@ void PushMessagingMessageFilter::PersistRegistrationOnIO(
DCHECK_CURRENTLY_ON(BrowserThread::IO);
service_worker_context_->StoreRegistrationUserData(
data.service_worker_registration_id, data.requesting_origin,
- kPushRegistrationIdServiceWorkerKey, push_registration_id,
+ {{kPushRegistrationIdServiceWorkerKey, push_registration_id}},
base::Bind(&PushMessagingMessageFilter::DidPersistRegistrationOnIO,
weak_factory_io_to_io_.GetWeakPtr(), data,
push_registration_id, p256dh, auth));
@@ -588,44 +589,24 @@ void PushMessagingMessageFilter::OnUnsubscribe(
}
service_worker_context_->GetRegistrationUserData(
- service_worker_registration_id, kPushRegistrationIdServiceWorkerKey,
- base::Bind(&PushMessagingMessageFilter::
- UnsubscribeHavingGottenPushSubscriptionId,
+ service_worker_registration_id,
+ {kPushRegistrationIdServiceWorkerKey, kPushSenderIdServiceWorkerKey},
+ base::Bind(&PushMessagingMessageFilter::UnsubscribeHavingGottenIds,
weak_factory_io_to_io_.GetWeakPtr(), request_id,
service_worker_registration_id,
service_worker_registration->pattern().GetOrigin()));
}
-void PushMessagingMessageFilter::UnsubscribeHavingGottenPushSubscriptionId(
+void PushMessagingMessageFilter::UnsubscribeHavingGottenIds(
int request_id,
int64_t service_worker_registration_id,
const GURL& requesting_origin,
- const std::string& push_subscription_id, // Unused, we just want the status
+ const std::vector<std::string>& push_subscription_and_sender_ids,
ServiceWorkerStatusCode service_worker_status) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- if (service_worker_status == SERVICE_WORKER_OK) {
- service_worker_context_->GetRegistrationUserData(
- service_worker_registration_id, kPushSenderIdServiceWorkerKey,
- base::Bind(&PushMessagingMessageFilter::UnsubscribeHavingGottenSenderId,
- weak_factory_io_to_io_.GetWeakPtr(), request_id,
- service_worker_registration_id, requesting_origin));
- } else {
- // Errors are handled the same, whether we were trying to get the
- // push_subscription_id or the sender_id.
- UnsubscribeHavingGottenSenderId(
- request_id, service_worker_registration_id, requesting_origin,
- std::string() /* sender_id */, service_worker_status);
- }
-}
-
-void PushMessagingMessageFilter::UnsubscribeHavingGottenSenderId(
- int request_id,
- int64_t service_worker_registration_id,
- const GURL& requesting_origin,
- const std::string& sender_id,
- ServiceWorkerStatusCode service_worker_status) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ // Note that the subscription ID (push_subscription_and_sender_ids[0]) is
+ // unused - we just needed to check if the database contained one.
switch (service_worker_status) {
case SERVICE_WORKER_OK:
@@ -634,7 +615,7 @@ void PushMessagingMessageFilter::UnsubscribeHavingGottenSenderId(
base::Bind(&Core::UnregisterFromService,
base::Unretained(ui_core_.get()), request_id,
service_worker_registration_id, requesting_origin,
- sender_id));
+ push_subscription_and_sender_ids[1]));
break;
case SERVICE_WORKER_ERROR_NOT_FOUND:
// We did not find a registration, stop here and notify the renderer that
@@ -728,7 +709,7 @@ void PushMessagingMessageFilter::ClearRegistrationData(
DCHECK_CURRENTLY_ON(BrowserThread::IO);
service_worker_context_->ClearRegistrationUserData(
- service_worker_registration_id, kPushRegistrationIdServiceWorkerKey,
+ service_worker_registration_id, {kPushRegistrationIdServiceWorkerKey},
base::Bind(&PushMessagingMessageFilter::DidClearRegistrationData,
weak_factory_io_to_io_.GetWeakPtr(), request_id,
unregistration_status));
@@ -788,7 +769,7 @@ void PushMessagingMessageFilter::OnGetSubscription(
DCHECK_CURRENTLY_ON(BrowserThread::IO);
// TODO(johnme): Validate arguments?
service_worker_context_->GetRegistrationUserData(
- service_worker_registration_id, kPushRegistrationIdServiceWorkerKey,
+ service_worker_registration_id, {kPushRegistrationIdServiceWorkerKey},
base::Bind(&PushMessagingMessageFilter::DidGetSubscription,
weak_factory_io_to_io_.GetWeakPtr(), request_id,
service_worker_registration_id));
@@ -797,7 +778,7 @@ void PushMessagingMessageFilter::OnGetSubscription(
void PushMessagingMessageFilter::DidGetSubscription(
int request_id,
int64_t service_worker_registration_id,
- const std::string& push_subscription_id,
+ const std::vector<std::string>& push_subscription_id,
ServiceWorkerStatusCode service_worker_status) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
PushGetRegistrationStatus get_status =
@@ -819,7 +800,7 @@ void PushMessagingMessageFilter::DidGetSubscription(
const GURL origin = registration->pattern().GetOrigin();
const GURL endpoint =
- CreatePushEndpoint(push_endpoint_base_, push_subscription_id);
+ CreatePushEndpoint(push_endpoint_base_, push_subscription_id[0]);
auto callback =
base::Bind(&PushMessagingMessageFilter::DidGetSubscriptionKeys,

Powered by Google App Engine
This is Rietveld 408576698