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

Unified Diff: components/offline_pages/background/request_queue_store_sql.cc

Issue 2356433004: [Offline pages] Extracting AddRequest method in RequestQueueStore (Closed)
Patch Set: Addressing feedback plus attempt at fixing compilation issue" Created 4 years, 3 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: components/offline_pages/background/request_queue_store_sql.cc
diff --git a/components/offline_pages/background/request_queue_store_sql.cc b/components/offline_pages/background/request_queue_store_sql.cc
index 908516979b02260248e911a998c68e824cddd455..0fa9e7ba702502e1c9f72e0642f6f8842cd2bedb 100644
--- a/components/offline_pages/background/request_queue_store_sql.cc
+++ b/components/offline_pages/background/request_queue_store_sql.cc
@@ -20,6 +20,8 @@ namespace offline_pages {
namespace {
+using UpdateStatus = RequestQueueStore::UpdateStatus;
+
// This is a macro instead of a const so that
// it can be used inline in other SQL statements below.
#define REQUEST_QUEUE_TABLE_NAME "request_queue_v1"
@@ -215,6 +217,34 @@ bool ChangeRequestsState(
return true;
}
+ItemActionStatus Insert(sql::Connection* db, const SavePageRequest& request) {
+ const char kSql[] =
+ "INSERT OR IGNORE INTO " REQUEST_QUEUE_TABLE_NAME
+ " (request_id, creation_time, activation_time,"
+ " last_attempt_time, started_attempt_count, completed_attempt_count,"
+ " state, url, client_namespace, client_id)"
+ " VALUES "
+ " (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+
+ sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, kSql));
+ statement.BindInt64(0, request.request_id());
+ statement.BindInt64(1, request.creation_time().ToInternalValue());
+ statement.BindInt64(2, request.activation_time().ToInternalValue());
+ statement.BindInt64(3, request.last_attempt_time().ToInternalValue());
+ statement.BindInt64(4, request.started_attempt_count());
+ statement.BindInt64(5, request.completed_attempt_count());
+ statement.BindInt64(6, static_cast<int64_t>(request.request_state()));
+ statement.BindString(7, request.url().spec());
+ statement.BindString(8, request.client_id().name_space);
+ statement.BindString(9, request.client_id().id);
+
+ if (!statement.Run())
+ return ItemActionStatus::STORE_ERROR;
+ if (db->GetLastChangeCount() == 0)
+ return ItemActionStatus::ALREADY_EXISTS;
+ return ItemActionStatus::SUCCESS;
+}
+
RequestQueueStore::UpdateStatus InsertOrReplace(
sql::Connection* db,
const SavePageRequest& request) {
@@ -281,6 +311,15 @@ void GetRequestsSync(sql::Connection* db,
base::Passed(&requests)));
}
+void AddRequestSync(sql::Connection* db,
+ scoped_refptr<base::SingleThreadTaskRunner> runner,
+ const SavePageRequest& request,
+ const RequestQueueStore::AddCallback& callback) {
+ // TODO(fgorski): add UMA metrics here.
+ ItemActionStatus status = Insert(db, request);
+ runner->PostTask(FROM_HERE, base::Bind(callback, status));
+}
+
void AddOrUpdateRequestSync(sql::Connection* db,
scoped_refptr<base::SingleThreadTaskRunner> runner,
const SavePageRequest& request,
@@ -376,6 +415,17 @@ void RequestQueueStoreSQL::GetRequests(const GetRequestsCallback& callback) {
base::ThreadTaskRunnerHandle::Get(), callback));
}
+void RequestQueueStoreSQL::AddRequest(const SavePageRequest& request,
+ const AddCallback& callback) {
+ if (!CheckDb(base::Bind(callback, ItemActionStatus::STORE_ERROR)))
+ return;
+
+ background_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&AddRequestSync, db_.get(),
+ base::ThreadTaskRunnerHandle::Get(), request, callback));
+}
+
void RequestQueueStoreSQL::AddOrUpdateRequest(const SavePageRequest& request,
const UpdateCallback& callback) {
DCHECK(db_.get());
@@ -388,7 +438,6 @@ void RequestQueueStoreSQL::AddOrUpdateRequest(const SavePageRequest& request,
base::ThreadTaskRunnerHandle::Get(), request, callback));
}
-// RemoveRequestsByRequestId to be more parallell with RemoveRequestsByClientId.
void RequestQueueStoreSQL::RemoveRequests(
const std::vector<int64_t>& request_ids,
const RemoveCallback& callback) {

Powered by Google App Engine
This is Rietveld 408576698