Index: content/browser/service_worker/service_worker_storage.cc |
diff --git a/content/browser/service_worker/service_worker_storage.cc b/content/browser/service_worker/service_worker_storage.cc |
index 7754de29c39a7a3f5ccbcb29d0601bb45f80e54e..877b0ad59d45679f352f3d2b2a35a4dfa46a00d5 100644 |
--- a/content/browser/service_worker/service_worker_storage.cc |
+++ b/content/browser/service_worker/service_worker_storage.cc |
@@ -27,14 +27,14 @@ namespace { |
typedef base::Callback<void( |
ServiceWorkerStorage::InitialData* data, |
- ServiceWorkerStatusCode status)> InitializeCallback; |
+ ServiceWorkerDatabase::Status status)> InitializeCallback; |
typedef base::Callback<void( |
const ServiceWorkerDatabase::RegistrationData& data, |
const std::vector<ServiceWorkerDatabase::ResourceRecord>& resources, |
- ServiceWorkerStatusCode status)> ReadRegistrationCallback; |
+ ServiceWorkerDatabase::Status status)> ReadRegistrationCallback; |
typedef base::Callback<void( |
bool origin_is_deletable, |
- ServiceWorkerStatusCode status)> DeleteRegistrationCallback; |
+ ServiceWorkerDatabase::Status status)> DeleteRegistrationCallback; |
void RunSoon(const tracked_objects::Location& from_here, |
const base::Closure& closure) { |
@@ -65,6 +65,18 @@ const int kMaxMemDiskCacheSize = 10 * 1024 * 1024; |
void EmptyCompletionCallback(int) {} |
+ServiceWorkerStatusCode DatabaseStatusToStatusCode( |
+ ServiceWorkerDatabase::Status status) { |
+ switch (status) { |
+ case ServiceWorkerDatabase::STATUS_OK: |
+ return SERVICE_WORKER_OK; |
+ case ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND: |
+ return SERVICE_WORKER_ERROR_NOT_FOUND; |
+ default: |
+ return SERVICE_WORKER_ERROR_FAILED; |
+ } |
+} |
+ |
void ReadInitialDataFromDB( |
ServiceWorkerDatabase* database, |
scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
@@ -73,11 +85,11 @@ void ReadInitialDataFromDB( |
scoped_ptr<ServiceWorkerStorage::InitialData> data( |
new ServiceWorkerStorage::InitialData()); |
- ServiceWorkerStatusCode status = |
+ ServiceWorkerDatabase::Status status = |
database->GetNextAvailableIds(&data->next_registration_id, |
&data->next_version_id, |
&data->next_resource_id); |
- if (status != SERVICE_WORKER_OK) { |
+ if (status != ServiceWorkerDatabase::STATUS_OK) { |
original_task_runner->PostTask( |
FROM_HERE, base::Bind(callback, base::Owned(data.release()), status)); |
return; |
@@ -100,10 +112,11 @@ void ReadRegistrationFromDB( |
// TODO(nhiroki): The database should return more detailed status like |
// ServiceWorkerStatusCode instead of bool value. |
- ServiceWorkerStatusCode status = SERVICE_WORKER_OK; |
+ ServiceWorkerDatabase::Status status = ServiceWorkerDatabase::STATUS_OK; |
if (!database->ReadRegistration(registration_id, origin, &data, &resources)) { |
- status = database->is_disabled() ? SERVICE_WORKER_ERROR_FAILED |
- : SERVICE_WORKER_ERROR_NOT_FOUND; |
+ status = database->is_disabled() |
+ ? ServiceWorkerDatabase::STATUS_ERROR_FAILED |
+ : ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND; |
} |
original_task_runner->PostTask( |
FROM_HERE, base::Bind(callback, data, resources, status)); |
@@ -118,22 +131,26 @@ void DeleteRegistrationFromDB( |
DCHECK(database); |
if (!database->DeleteRegistration(registration_id, origin)) { |
original_task_runner->PostTask( |
- FROM_HERE, base::Bind(callback, false, SERVICE_WORKER_ERROR_FAILED)); |
+ FROM_HERE, base::Bind(callback, false, |
+ ServiceWorkerDatabase::STATUS_ERROR_FAILED)); |
return; |
} |
// TODO(nhiroki): Add convenient method to ServiceWorkerDatabase to check the |
// unique origin list. |
std::vector<ServiceWorkerDatabase::RegistrationData> registrations; |
- if (!database->GetRegistrationsForOrigin(origin, ®istrations)) { |
+ ServiceWorkerDatabase::Status status = |
+ database->GetRegistrationsForOrigin(origin, ®istrations); |
+ if (status != ServiceWorkerDatabase::STATUS_OK) { |
original_task_runner->PostTask( |
- FROM_HERE, base::Bind(callback, false, SERVICE_WORKER_ERROR_FAILED)); |
+ FROM_HERE, base::Bind(callback, false, status)); |
return; |
} |
bool deletable = registrations.empty(); |
original_task_runner->PostTask( |
- FROM_HERE, base::Bind(callback, deletable, SERVICE_WORKER_OK)); |
+ FROM_HERE, base::Bind(callback, deletable, |
+ ServiceWorkerDatabase::STATUS_OK)); |
} |
void UpdateToActiveStateInDB( |
@@ -499,21 +516,20 @@ bool ServiceWorkerStorage::LazyInitialize(const base::Closure& callback) { |
void ServiceWorkerStorage::DidReadInitialData( |
InitialData* data, |
- ServiceWorkerStatusCode status) { |
+ ServiceWorkerDatabase::Status status) { |
DCHECK(data); |
DCHECK_EQ(INITIALIZING, state_); |
- if (status == SERVICE_WORKER_OK) { |
+ if (status == ServiceWorkerDatabase::STATUS_OK) { |
next_registration_id_ = data->next_registration_id; |
next_version_id_ = data->next_version_id; |
next_resource_id_ = data->next_resource_id; |
registered_origins_.swap(data->origins); |
state_ = INITIALIZED; |
} else { |
- // TODO(nhiroki): If status==SERVICE_WORKER_ERROR_DB_CORRUPTED, do |
- // corruption recovery (http://crbug.com/371675). |
- DLOG(WARNING) << "Failed to initialize: " |
- << ServiceWorkerStatusToString(status); |
+ // TODO(nhiroki): If status==STATUS_ERROR_CORRUPTED, do corruption recovery |
+ // (http://crbug.com/371675). |
+ DLOG(WARNING) << "Failed to initialize: " << status; |
state_ = DISABLED; |
} |
@@ -528,9 +544,10 @@ void ServiceWorkerStorage::DidGetRegistrationsForPattern( |
const GURL& scope, |
const FindRegistrationCallback& callback, |
RegistrationList* registrations, |
- bool success) { |
+ ServiceWorkerDatabase::Status status) { |
DCHECK(registrations); |
- if (!success) { |
+ if (status != ServiceWorkerDatabase::STATUS_OK) { |
+ // TODO(nhiroki): Handle database error (http://crbug.com/371675). |
callback.Run(SERVICE_WORKER_ERROR_FAILED, |
scoped_refptr<ServiceWorkerRegistration>()); |
return; |
@@ -565,9 +582,10 @@ void ServiceWorkerStorage::DidGetRegistrationsForDocument( |
const GURL& document_url, |
const FindRegistrationCallback& callback, |
RegistrationList* registrations, |
- bool success) { |
+ ServiceWorkerDatabase::Status status) { |
DCHECK(registrations); |
- if (!success) { |
+ if (status != ServiceWorkerDatabase::STATUS_OK) { |
+ // TODO(nhiroki): Handle database error (http://crbug.com/371675). |
callback.Run(SERVICE_WORKER_ERROR_FAILED, |
scoped_refptr<ServiceWorkerRegistration>()); |
return; |
@@ -608,13 +626,13 @@ void ServiceWorkerStorage::DidReadRegistrationForId( |
const FindRegistrationCallback& callback, |
const ServiceWorkerDatabase::RegistrationData& registration, |
const ResourceList& resources, |
- ServiceWorkerStatusCode status) { |
- if (status == SERVICE_WORKER_OK) { |
- callback.Run(status, CreateRegistration(registration)); |
+ ServiceWorkerDatabase::Status status) { |
+ if (status == ServiceWorkerDatabase::STATUS_OK) { |
+ callback.Run(SERVICE_WORKER_OK, CreateRegistration(registration)); |
return; |
} |
- if (status == SERVICE_WORKER_ERROR_NOT_FOUND) { |
+ if (status == ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND) { |
// Look for somthing currently being installed. |
scoped_refptr<ServiceWorkerRegistration> installing_registration = |
FindInstallingRegistrationForId(registration.registration_id); |
@@ -627,16 +645,18 @@ void ServiceWorkerStorage::DidReadRegistrationForId( |
return; |
} |
- callback.Run(status, scoped_refptr<ServiceWorkerRegistration>()); |
+ callback.Run(DatabaseStatusToStatusCode(status), |
+ scoped_refptr<ServiceWorkerRegistration>()); |
return; |
} |
void ServiceWorkerStorage::DidGetAllRegistrations( |
const GetAllRegistrationInfosCallback& callback, |
RegistrationList* registrations, |
- bool success) { |
+ ServiceWorkerDatabase::Status status) { |
DCHECK(registrations); |
- if (!success) { |
+ if (status != ServiceWorkerDatabase::STATUS_OK) { |
+ // TODO(nhiroki): Handle database error (http://crbug.com/371675). |
callback.Run(std::vector<ServiceWorkerRegistrationInfo>()); |
return; |
} |
@@ -692,10 +712,10 @@ void ServiceWorkerStorage::DidDeleteRegistration( |
const GURL& origin, |
const StatusCallback& callback, |
bool origin_is_deletable, |
- ServiceWorkerStatusCode status) { |
+ ServiceWorkerDatabase::Status status) { |
if (origin_is_deletable) |
registered_origins_.erase(origin); |
- callback.Run(status); |
+ callback.Run(DatabaseStatusToStatusCode(status)); |
} |
scoped_refptr<ServiceWorkerRegistration> |