Chromium Code Reviews| 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 e2d79ed2e8f5fd63e43bd07fa6e349a26c8bb2b0..78df5d51c09f9fa1e7c0b64b1a58c6a4c8be0448 100644 |
| --- a/components/offline_pages/background/request_queue_in_memory_store.cc |
| +++ b/components/offline_pages/background/request_queue_in_memory_store.cc |
| @@ -4,6 +4,8 @@ |
| #include "components/offline_pages/background/request_queue_in_memory_store.h" |
| +#include <unordered_set> |
| + |
| #include "base/bind.h" |
| #include "base/location.h" |
| #include "base/threading/thread_task_runner_handle.h" |
| @@ -28,6 +30,31 @@ void RequestQueueInMemoryStore::GetRequests( |
| base::Bind(callback, true, base::Passed(std::move(result_requests)))); |
| } |
| +void RequestQueueInMemoryStore::GetRequestsByIds( |
| + const std::vector<int64_t>& request_ids, |
| + const UpdateCallback& callback) { |
|
Pete Williamson
2016/10/11 22:16:21
I think the name of the callback should have Get i
fgorski
2016/10/12 20:51:29
Yes, but I'd prefer to do that separately.
|
| + std::unique_ptr<UpdateRequestsResult> result( |
| + new UpdateRequestsResult(state())); |
| + |
| + ItemActionStatus status; |
| + std::unordered_set<int64_t> processed_ids; |
| + for (const auto& request_id : request_ids) { |
| + if (!processed_ids.insert(request_id).second) |
|
Pete Williamson
2016/10/11 22:16:21
Why do we keep a list of processed ids? Maybe add
fgorski
2016/10/12 20:51:29
Defensive programming for cases where someone spec
Pete Williamson
2016/10/12 22:23:36
Right, I understand why, I just think we should ad
fgorski
2016/10/12 23:05:30
Done. Sorry, I misread your comment.
|
| + continue; |
| + RequestsMap::iterator iter = requests_.find(request_id); |
| + if (iter != requests_.end()) { |
| + status = ItemActionStatus::SUCCESS; |
| + result->updated_items.push_back(iter->second); |
| + } else { |
| + status = ItemActionStatus::NOT_FOUND; |
| + } |
| + result->item_statuses.push_back(std::make_pair(request_id, status)); |
| + } |
| + |
| + base::ThreadTaskRunnerHandle::Get()->PostTask( |
| + FROM_HERE, base::Bind(callback, base::Passed(&result))); |
| +} |
| + |
| void RequestQueueInMemoryStore::AddRequest(const SavePageRequest& request, |
| const AddCallback& callback) { |
| RequestsMap::iterator iter = requests_.find(request.request_id()); |