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