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

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

Issue 2363563002: [Offline pages] Implementation of RQStore.UpdateRequests with StoreUpdateResult (Closed)
Patch Set: Updating test, adding handling for store/transaction failures. 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_in_memory_store.cc
diff --git a/components/offline_pages/background/request_queue_in_memory_store.cc b/components/offline_pages/background/request_queue_in_memory_store.cc
index 4c7c89d9118510d256e266963604226e10a544b4..1eb2cab972fb54d8746d3e7ece89bc789fb851f5 100644
--- a/components/offline_pages/background/request_queue_in_memory_store.cc
+++ b/components/offline_pages/background/request_queue_in_memory_store.cc
@@ -33,7 +33,7 @@ void RequestQueueInMemoryStore::AddRequest(const SavePageRequest& request,
RequestsMap::iterator iter = requests_.find(request.request_id());
ItemActionStatus status;
if (iter == requests_.end()) {
- requests_.insert(std::make_pair(request.request_id(), request));
+ requests_.insert(iter, std::make_pair(request.request_id(), request));
status = ItemActionStatus::SUCCESS;
} else {
status = ItemActionStatus::ALREADY_EXISTS;
@@ -43,15 +43,28 @@ void RequestQueueInMemoryStore::AddRequest(const SavePageRequest& request,
base::Bind(callback, status));
}
-void RequestQueueInMemoryStore::AddOrUpdateRequest(
- const SavePageRequest& request,
+void RequestQueueInMemoryStore::UpdateRequests(
+ const std::vector<SavePageRequest>& requests,
const UpdateCallback& callback) {
- RequestsMap::iterator iter = requests_.find(request.request_id());
- if (iter != requests_.end())
- requests_.erase(iter);
- requests_.insert(std::make_pair(request.request_id(), request));
+ std::unique_ptr<UpdateRequestsResult> result(
+ new UpdateRequestsResult(StoreState::LOADED));
+
+ ItemActionStatus status;
+ for (const auto& request : requests) {
+ RequestsMap::iterator iter = requests_.find(request.request_id());
+ if (iter != requests_.end()) {
+ status = ItemActionStatus::SUCCESS;
+ iter->second = request;
+ result->updated_items.push_back(request);
+ } else {
+ status = ItemActionStatus::NOT_FOUND;
+ }
+ result->item_statuses.push_back(
+ std::make_pair(request.request_id(), status));
+ }
+
base::ThreadTaskRunnerHandle::Get()->PostTask(
- FROM_HERE, base::Bind(callback, UpdateStatus::UPDATED));
+ FROM_HERE, base::Bind(callback, base::Passed(&result)));
}
void RequestQueueInMemoryStore::RemoveRequests(

Powered by Google App Engine
This is Rietveld 408576698