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

Unified Diff: content/browser/service_worker/service_worker_database.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/service_worker/service_worker_database.cc
diff --git a/content/browser/service_worker/service_worker_database.cc b/content/browser/service_worker/service_worker_database.cc
index e057c99467bb07bf142839fd480324959350c878..6fba23431e87d7f67802bddacd9d4833542b0ab6 100644
--- a/content/browser/service_worker/service_worker_database.cc
+++ b/content/browser/service_worker/service_worker_database.cc
@@ -803,12 +803,12 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::DeleteRegistration(
ServiceWorkerDatabase::Status ServiceWorkerDatabase::ReadUserData(
int64_t registration_id,
- const std::string& user_data_name,
- std::string* user_data) {
+ const std::vector<std::string>& user_data_names,
+ std::vector<std::string>* user_data_values) {
DCHECK(sequence_checker_.CalledOnValidSequencedThread());
DCHECK_NE(kInvalidServiceWorkerRegistrationId, registration_id);
- DCHECK(!user_data_name.empty());
- DCHECK(user_data);
+ DCHECK(!user_data_names.empty());
+ DCHECK(user_data_values);
Status status = LazyOpen(false);
if (IsNewOrNonexistentDatabase(status))
@@ -816,9 +816,17 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::ReadUserData(
if (status != STATUS_OK)
return status;
- const std::string key = CreateUserDataKey(registration_id, user_data_name);
- status = LevelDBStatusToStatus(
- db_->Get(leveldb::ReadOptions(), key, user_data));
+ user_data_values->resize(user_data_names.size());
+ for (size_t i = 0; i < user_data_names.size(); i++) {
+ const std::string key =
+ CreateUserDataKey(registration_id, user_data_names[i]);
+ status = LevelDBStatusToStatus(
+ db_->Get(leveldb::ReadOptions(), key, &(*user_data_values)[i]));
+ if (status != STATUS_OK) {
+ user_data_values->clear();
+ break;
+ }
+ }
HandleReadResult(FROM_HERE,
status == STATUS_ERROR_NOT_FOUND ? STATUS_OK : status);
return status;
@@ -827,11 +835,10 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::ReadUserData(
ServiceWorkerDatabase::Status ServiceWorkerDatabase::WriteUserData(
int64_t registration_id,
const GURL& origin,
- const std::string& user_data_name,
- const std::string& user_data) {
+ const std::vector<std::pair<std::string, std::string>>& name_value_pairs) {
DCHECK(sequence_checker_.CalledOnValidSequencedThread());
DCHECK_NE(kInvalidServiceWorkerRegistrationId, registration_id);
- DCHECK(!user_data_name.empty());
+ DCHECK(!name_value_pairs.empty());
Status status = LazyOpen(false);
if (IsNewOrNonexistentDatabase(status))
@@ -846,17 +853,20 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::WriteUserData(
return status;
leveldb::WriteBatch batch;
- batch.Put(CreateUserDataKey(registration_id, user_data_name), user_data);
- batch.Put(CreateHasUserDataKey(registration_id, user_data_name), "");
+ for (const auto& pair : name_value_pairs) {
+ DCHECK(!pair.first.empty());
+ batch.Put(CreateUserDataKey(registration_id, pair.first), pair.second);
+ batch.Put(CreateHasUserDataKey(registration_id, pair.first), "");
+ }
return WriteBatch(&batch);
}
ServiceWorkerDatabase::Status ServiceWorkerDatabase::DeleteUserData(
int64_t registration_id,
- const std::string& user_data_name) {
+ const std::vector<std::string>& user_data_names) {
DCHECK(sequence_checker_.CalledOnValidSequencedThread());
DCHECK_NE(kInvalidServiceWorkerRegistrationId, registration_id);
- DCHECK(!user_data_name.empty());
+ DCHECK(!user_data_names.empty());
Status status = LazyOpen(false);
if (IsNewOrNonexistentDatabase(status))
@@ -865,8 +875,11 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::DeleteUserData(
return status;
leveldb::WriteBatch batch;
- batch.Delete(CreateUserDataKey(registration_id, user_data_name));
- batch.Delete(CreateHasUserDataKey(registration_id, user_data_name));
+ for (const std::string& name : user_data_names) {
+ DCHECK(!name.empty());
+ batch.Delete(CreateUserDataKey(registration_id, name));
+ batch.Delete(CreateHasUserDataKey(registration_id, name));
+ }
return WriteBatch(&batch);
}

Powered by Google App Engine
This is Rietveld 408576698