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

Unified Diff: content/browser/service_worker/service_worker_database.cc

Issue 275103004: ServiceWorker: Database functions should return status code instead of boolean (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 37558b2b3d1fa8951934aa9aea8d4d43a0427387..db8f735d792b7bb88360678fcf1d7780c8931ed8 100644
--- a/content/browser/service_worker/service_worker_database.cc
+++ b/content/browser/service_worker/service_worker_database.cc
@@ -211,6 +211,18 @@ bool ParseResourceRecord(const std::string& serialized,
return true;
}
+ServiceWorkerStatusCode LevelDBStatusToServiceWorkerStatusCode(
+ const leveldb::Status& status) {
+ if (status.ok())
+ return SERVICE_WORKER_OK;
+ else if (status.IsNotFound())
+ return SERVICE_WORKER_ERROR_NOT_FOUND;
+ else if (status.IsCorruption())
+ return SERVICE_WORKER_ERROR_DB_CORRUPTED;
+ else
+ return SERVICE_WORKER_ERROR_FAILED;
+}
+
} // namespace
ServiceWorkerDatabase::RegistrationData::RegistrationData()
@@ -239,7 +251,7 @@ ServiceWorkerDatabase::~ServiceWorkerDatabase() {
db_.reset();
}
-bool ServiceWorkerDatabase::GetNextAvailableIds(
+ServiceWorkerStatusCode ServiceWorkerDatabase::GetNextAvailableIds(
int64* next_avail_registration_id,
int64* next_avail_version_id,
int64* next_avail_resource_id) {
@@ -250,37 +262,42 @@ bool ServiceWorkerDatabase::GetNextAvailableIds(
if (!LazyOpen(false)) {
if (is_disabled_)
- return false;
+ return SERVICE_WORKER_ERROR_FAILED;
// Database has never been used.
*next_avail_registration_id = 0;
*next_avail_version_id = 0;
*next_avail_resource_id = 0;
- return true;
+ return SERVICE_WORKER_OK;
}
- if (!ReadNextAvailableId(kNextRegIdKey, &next_avail_registration_id_) ||
- !ReadNextAvailableId(kNextVerIdKey, &next_avail_version_id_) ||
- !ReadNextAvailableId(kNextResIdKey, &next_avail_resource_id_)) {
- return false;
- }
+ ServiceWorkerStatusCode status =
+ ReadNextAvailableId(kNextRegIdKey, &next_avail_registration_id_);
+ if (status != SERVICE_WORKER_OK)
+ return status;
+ status = ReadNextAvailableId(kNextVerIdKey, &next_avail_version_id_);
+ if (status != SERVICE_WORKER_OK)
+ return status;
+ status = ReadNextAvailableId(kNextResIdKey, &next_avail_resource_id_);
+ if (status != SERVICE_WORKER_OK)
+ return status;
*next_avail_registration_id = next_avail_registration_id_;
*next_avail_version_id = next_avail_version_id_;
*next_avail_resource_id = next_avail_resource_id_;
- return true;
+ return SERVICE_WORKER_OK;
}
-bool ServiceWorkerDatabase::GetOriginsWithRegistrations(
+ServiceWorkerStatusCode ServiceWorkerDatabase::GetOriginsWithRegistrations(
std::set<GURL>* origins) {
DCHECK(sequence_checker_.CalledOnValidSequencedThread());
DCHECK(origins);
if (!LazyOpen(false)) {
if (is_disabled_)
- return false;
+ return SERVICE_WORKER_ERROR_FAILED;
// Database has never been used.
origins->clear();
- return true;
+ return SERVICE_WORKER_OK;
}
scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions()));
@@ -288,7 +305,7 @@ bool ServiceWorkerDatabase::GetOriginsWithRegistrations(
if (!itr->status().ok()) {
HandleError(FROM_HERE, itr->status());
origins->clear();
- return false;
+ return LevelDBStatusToServiceWorkerStatusCode(itr->status());
}
std::string origin;
@@ -296,7 +313,7 @@ bool ServiceWorkerDatabase::GetOriginsWithRegistrations(
break;
origins->insert(GURL(origin));
}
- return true;
+ return SERVICE_WORKER_OK;
}
bool ServiceWorkerDatabase::GetRegistrationsForOrigin(
@@ -624,8 +641,9 @@ bool ServiceWorkerDatabase::LazyOpen(bool create_if_needed) {
return true;
}
-bool ServiceWorkerDatabase::ReadNextAvailableId(
- const char* id_key, int64* next_avail_id) {
+ServiceWorkerStatusCode ServiceWorkerDatabase::ReadNextAvailableId(
+ const char* id_key,
+ int64* next_avail_id) {
DCHECK(id_key);
DCHECK(next_avail_id);
@@ -634,22 +652,22 @@ bool ServiceWorkerDatabase::ReadNextAvailableId(
if (status.IsNotFound()) {
// Nobody has gotten the next resource id for |id_key|.
*next_avail_id = 0;
- return true;
+ return SERVICE_WORKER_OK;
}
if (!status.ok()) {
HandleError(FROM_HERE, status);
- return false;
+ return LevelDBStatusToServiceWorkerStatusCode(status);
}
int64 parsed;
if (!base::StringToInt64(value, &parsed)) {
HandleError(FROM_HERE, leveldb::Status::Corruption("failed to parse"));
- return false;
+ return SERVICE_WORKER_ERROR_DB_CORRUPTED;
}
*next_avail_id = parsed;
- return true;
+ return SERVICE_WORKER_OK;
}
bool ServiceWorkerDatabase::ReadRegistrationData(

Powered by Google App Engine
This is Rietveld 408576698