Commit 693274b9 authored by nhiroki@chromium.org's avatar nhiroki@chromium.org

ServiceWorker: Consolidate database state members for cleanup


BUG=n/a
TEST=content_unittests --gtest_filter=ServiceWorkerDatabaseTest.*

Review URL: https://codereview.chromium.org/300703003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272922 0039d316-1c4b-4281-b951-d872f2087c98
parent cdc2e886
......@@ -241,9 +241,7 @@ ServiceWorkerDatabase::ServiceWorkerDatabase(const base::FilePath& path)
next_avail_registration_id_(0),
next_avail_resource_id_(0),
next_avail_version_id_(0),
is_disabled_(false),
was_corruption_detected_(false),
is_initialized_(false) {
state_(UNINITIALIZED) {
sequence_checker_.DetachFromSequence();
}
......@@ -637,7 +635,7 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::LazyOpen(
DCHECK(sequence_checker_.CalledOnValidSequencedThread());
// Do not try to open a database if we tried and failed once.
if (is_disabled_)
if (state_ == DISABLED)
return STATUS_ERROR_FAILED;
if (IsOpen())
return STATUS_OK;
......@@ -678,7 +676,7 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::LazyOpen(
return status;
DCHECK_LE(0, db_version);
if (db_version > 0)
is_initialized_ = true;
state_ = INITIALIZED;
return STATUS_OK;
}
......@@ -686,7 +684,7 @@ bool ServiceWorkerDatabase::IsNewOrNonexistentDatabase(
ServiceWorkerDatabase::Status status) {
if (status == STATUS_ERROR_NOT_FOUND)
return true;
if (status == STATUS_OK && !is_initialized_)
if (status == STATUS_OK && state_ == UNINITIALIZED)
return true;
return false;
}
......@@ -925,12 +923,12 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::ReadDatabaseVersion(
ServiceWorkerDatabase::Status ServiceWorkerDatabase::WriteBatch(
leveldb::WriteBatch* batch) {
DCHECK(batch);
DCHECK(!is_disabled_);
DCHECK_NE(DISABLED, state_);
if (!is_initialized_) {
if (state_ == UNINITIALIZED) {
// Write the database schema version.
batch->Put(kDatabaseVersionKey, base::Int64ToString(kCurrentSchemaVersion));
is_initialized_ = true;
state_ = INITIALIZED;
}
leveldb::Status status = db_->Write(leveldb::WriteOptions(), batch);
......@@ -958,7 +956,7 @@ void ServiceWorkerDatabase::BumpNextVersionIdIfNeeded(
}
bool ServiceWorkerDatabase::IsOpen() {
return db_.get() != NULL;
return db_ != NULL;
}
void ServiceWorkerDatabase::HandleError(
......@@ -967,9 +965,7 @@ void ServiceWorkerDatabase::HandleError(
// TODO(nhiroki): Add an UMA histogram.
DLOG(ERROR) << "Failed at: " << from_here.ToString()
<< " with error: " << status.ToString();
is_disabled_ = true;
if (status.IsCorruption())
was_corruption_detected_ = true;
state_ = DISABLED;
db_.reset();
}
......
......@@ -180,9 +180,6 @@ class CONTENT_EXPORT ServiceWorkerDatabase {
const GURL& origin,
std::vector<int64>* newly_purgeable_resources);
bool is_disabled() const { return is_disabled_; }
bool was_corruption_detected() const { return was_corruption_detected_; }
private:
// Opens the database at the |path_|. This is lazily called when the first
// database API is called. Returns OK if the database is successfully opened.
......@@ -276,16 +273,12 @@ class CONTENT_EXPORT ServiceWorkerDatabase {
int64 next_avail_resource_id_;
int64 next_avail_version_id_;
// True if a database error has occurred (e.g. cannot read data).
// If true, all database accesses will fail.
bool is_disabled_;
// True if a database corruption was detected.
bool was_corruption_detected_;
// True if a database was initialized, that is, the schema version was written
// in the database.
bool is_initialized_;
enum State {
UNINITIALIZED,
INITIALIZED,
DISABLED,
};
State state_;
base::SequenceChecker sequence_checker_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment