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

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

Issue 1947253002: [Offline pages] Implementation of RequestQueue: Add, Remove, Get (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removing optional Created 4 years, 7 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.cc
diff --git a/components/offline_pages/background/request_queue.cc b/components/offline_pages/background/request_queue.cc
index 55af12f7ebbc44ecf0337582a8b21570ac724307..238a83b10cd994e9546adb447bbc50d0223cb925 100644
--- a/components/offline_pages/background/request_queue.cc
+++ b/components/offline_pages/background/request_queue.cc
@@ -4,20 +4,77 @@
#include "components/offline_pages/background/request_queue.h"
+#include "base/bind.h"
+#include "base/location.h"
+#include "base/thread_task_runner_handle.h"
+#include "components/offline_pages/background/request_queue_store.h"
#include "components/offline_pages/background/save_page_request.h"
namespace offline_pages {
-void RequestQueue::GetRequests(const GetRequestsCallback& callback) {}
+namespace {
+// Completes the get requests call.
+void GetRequestsDone(const RequestQueue::GetRequestsCallback& callback,
+ bool success,
+ const std::vector<SavePageRequest>& requests) {
+ RequestQueue::GetRequestsResult result =
+ success ? RequestQueue::GetRequestsResult::kSuccess
+ : RequestQueue::GetRequestsResult::kStoreFailure;
+ // TODO(fgorski): Filter out expired requests based on policy.
+ // This may trigger the purging if necessary.
+ // Also this may be turned into a method on the request queue or add a policy
+ // parameter in the process.
+ callback.Run(result, requests);
+}
+
+// Completes the add request call.
+void AddRequestDone(const RequestQueue::AddRequestCallback& callback,
+ const SavePageRequest& request,
+ RequestQueueStore::UpdateStatus status) {
+ RequestQueue::AddRequestResult result =
+ (status == RequestQueueStore::UpdateStatus::kAdded)
+ ? RequestQueue::AddRequestResult::kSuccess
+ : RequestQueue::AddRequestResult::kStoreFailure;
+ callback.Run(result, request);
+}
+
+// Completes the remove request call.
+void RemoveRequestDone(const RequestQueue::UpdateRequestCallback& callback,
+ bool success,
+ int deleted_requests_count) {
+ DCHECK_EQ(1, deleted_requests_count);
+ RequestQueue::UpdateRequestResult result =
+ success ? RequestQueue::UpdateRequestResult::kSuccess
+ : RequestQueue::UpdateRequestResult::kStoreFailure;
+ callback.Run(result);
+}
+} // namespace
+
+RequestQueue::RequestQueue(std::unique_ptr<RequestQueueStore> store)
+ : store_(std::move(store)) {}
+
+RequestQueue::~RequestQueue() {}
+
+void RequestQueue::GetRequests(const GetRequestsCallback& callback) {
+ store_->GetRequests(base::Bind(&GetRequestsDone, callback));
+}
void RequestQueue::AddRequest(const SavePageRequest& request,
- const AddRequestCallback& callback) {}
+ const AddRequestCallback& callback) {
+ // TODO(fgorski): check that request makes sense.
+ // TODO(fgorski): check that request does not violate policy.
+ store_->AddOrUpdateRequest(request,
+ base::Bind(&AddRequestDone, callback, request));
+}
void RequestQueue::UpdateRequest(const SavePageRequest& request,
const UpdateRequestCallback& callback) {}
void RequestQueue::RemoveRequest(int64_t request_id,
- const UpdateRequestCallback& callback) {}
+ const UpdateRequestCallback& callback) {
+ std::vector<int64_t> request_ids{request_id};
+ store_->RemoveRequests(request_ids, base::Bind(RemoveRequestDone, callback));
+}
void RequestQueue::PurgeRequests(const PurgeRequestsCallback& callback) {}
« no previous file with comments | « components/offline_pages/background/request_queue.h ('k') | components/offline_pages/background/request_queue_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698