Index: components/webdata/common/web_data_service_backend.cc |
diff --git a/components/webdata/common/web_data_service_backend.cc b/components/webdata/common/web_data_service_backend.cc |
index 3b945b0b540f721304917c9d135b52a16689f890..300b182bc84e856f02c857cce1428737585640cb 100644 |
--- a/components/webdata/common/web_data_service_backend.cc |
+++ b/components/webdata/common/web_data_service_backend.cc |
@@ -73,23 +73,40 @@ void WebDataServiceBackend::ShutdownDatabase(bool should_reinit) { |
void WebDataServiceBackend::DBWriteTaskWrapper( |
const WebDatabaseService::WriteTask& task, |
scoped_ptr<WebDataRequest> request) { |
+ if (request->IsCancelled()) |
+ return; |
+ |
+ ExecuteWriteTask(task); |
+ request_manager_->RequestCompleted(request.Pass()); |
+} |
+ |
+void WebDataServiceBackend::ExecuteWriteTask( |
+ const WebDatabaseService::WriteTask& task) { |
LoadDatabaseIfNecessary(); |
- if (db_ && init_status_ == sql::INIT_OK && !request->IsCancelled()) { |
+ if (db_ && init_status_ == sql::INIT_OK) { |
WebDatabase::State state = task.Run(db_.get()); |
if (state == WebDatabase::COMMIT_NEEDED) |
Commit(); |
} |
- request_manager_->RequestCompleted(request.Pass()); |
} |
void WebDataServiceBackend::DBReadTaskWrapper( |
const WebDatabaseService::ReadTask& task, |
scoped_ptr<WebDataRequest> request) { |
+ if (request->IsCancelled()) |
+ return; |
+ |
+ request->SetResult(ExecuteReadTask(task).Pass()); |
+ request_manager_->RequestCompleted(request.Pass()); |
+} |
+ |
+scoped_ptr<WDTypedResult> WebDataServiceBackend::ExecuteReadTask( |
+ const WebDatabaseService::ReadTask& task) { |
LoadDatabaseIfNecessary(); |
- if (db_ && init_status_ == sql::INIT_OK && !request->IsCancelled()) { |
- request->SetResult(task.Run(db_.get()).Pass()); |
+ if (db_ && init_status_ == sql::INIT_OK) { |
+ return task.Run(db_.get()); |
} |
- request_manager_->RequestCompleted(request.Pass()); |
+ return scoped_ptr<WDTypedResult>(NULL); |
} |
WebDataServiceBackend::~WebDataServiceBackend() { |