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

Side by Side Diff: components/offline_pages/background/request_queue_in_memory_store.cc

Issue 2262423002: Use a vector of smart pointers for callback return type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/offline_pages/background/request_queue_in_memory_store.h" 5 #include "components/offline_pages/background/request_queue_in_memory_store.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/threading/thread_task_runner_handle.h" 9 #include "base/threading/thread_task_runner_handle.h"
10 #include "components/offline_pages/background/save_page_request.h" 10 #include "components/offline_pages/background/save_page_request.h"
11 11
12 namespace offline_pages { 12 namespace offline_pages {
13 13
14 RequestQueueInMemoryStore::RequestQueueInMemoryStore() {} 14 RequestQueueInMemoryStore::RequestQueueInMemoryStore() {}
15 15
16 RequestQueueInMemoryStore::~RequestQueueInMemoryStore() {} 16 RequestQueueInMemoryStore::~RequestQueueInMemoryStore() {}
17 17
18 void RequestQueueInMemoryStore::GetRequests( 18 void RequestQueueInMemoryStore::GetRequests(
19 const GetRequestsCallback& callback) { 19 const GetRequestsCallback& callback) {
20 std::vector<SavePageRequest> result_requests; 20 std::vector<std::unique_ptr<SavePageRequest>> result_requests;
21 for (const auto& id_request_pair : requests_) 21 for (const auto& id_request_pair : requests_) {
22 result_requests.push_back(id_request_pair.second); 22 std::unique_ptr<SavePageRequest> request(
23 new SavePageRequest(id_request_pair.second));
24 result_requests.push_back(std::move(request));
25 }
23 base::ThreadTaskRunnerHandle::Get()->PostTask( 26 base::ThreadTaskRunnerHandle::Get()->PostTask(
24 FROM_HERE, base::Bind(callback, true, result_requests)); 27 FROM_HERE,
28 base::Bind(callback, true, base::Passed(std::move(result_requests))));
25 } 29 }
26 30
27 void RequestQueueInMemoryStore::AddOrUpdateRequest( 31 void RequestQueueInMemoryStore::AddOrUpdateRequest(
28 const SavePageRequest& request, 32 const SavePageRequest& request,
29 const UpdateCallback& callback) { 33 const UpdateCallback& callback) {
30 RequestsMap::iterator iter = requests_.find(request.request_id()); 34 RequestsMap::iterator iter = requests_.find(request.request_id());
31 if (iter != requests_.end()) 35 if (iter != requests_.end())
32 requests_.erase(iter); 36 requests_.erase(iter);
33 requests_.insert(std::make_pair(request.request_id(), request)); 37 requests_.insert(std::make_pair(request.request_id(), request));
34 base::ThreadTaskRunnerHandle::Get()->PostTask( 38 base::ThreadTaskRunnerHandle::Get()->PostTask(
35 FROM_HERE, base::Bind(callback, UpdateStatus::UPDATED)); 39 FROM_HERE, base::Bind(callback, UpdateStatus::UPDATED));
36 } 40 }
37 41
38 void RequestQueueInMemoryStore::RemoveRequests( 42 void RequestQueueInMemoryStore::RemoveRequests(
39 const std::vector<int64_t>& request_ids, 43 const std::vector<int64_t>& request_ids,
40 const RemoveCallback& callback) { 44 const RemoveCallback& callback) {
41 RequestQueue::UpdateMultipleRequestResults results; 45 RequestQueue::UpdateMultipleRequestResults results;
42 RequestQueue::UpdateRequestResult result; 46 RequestQueue::UpdateRequestResult result;
43 std::vector<SavePageRequest> requests; 47 std::vector<std::unique_ptr<SavePageRequest>> requests;
44 RequestsMap::iterator iter; 48 RequestsMap::iterator iter;
45 49
46 // If we find a request, mark it as succeeded, and put it in the request list. 50 // If we find a request, mark it as succeeded, and put it in the request list.
47 // Otherwise mark it as failed. 51 // Otherwise mark it as failed.
48 for (auto request_id : request_ids) { 52 for (auto request_id : request_ids) {
49 iter = requests_.find(request_id); 53 iter = requests_.find(request_id);
50 if (iter != requests_.end()) { 54 if (iter != requests_.end()) {
51 SavePageRequest request = iter->second; 55 std::unique_ptr<SavePageRequest> request(
56 new SavePageRequest(iter->second));
52 requests_.erase(iter); 57 requests_.erase(iter);
53 result = RequestQueue::UpdateRequestResult::SUCCESS; 58 result = RequestQueue::UpdateRequestResult::SUCCESS;
54 requests.push_back(request); 59 requests.push_back(std::move(request));
55 } else { 60 } else {
56 result = RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST; 61 result = RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST;
57 } 62 }
58 results.push_back(std::make_pair(request_id, result)); 63 results.push_back(std::make_pair(request_id, result));
59 } 64 }
60 65
61 base::ThreadTaskRunnerHandle::Get()->PostTask( 66 base::ThreadTaskRunnerHandle::Get()->PostTask(
62 FROM_HERE, base::Bind(callback, results, requests)); 67 FROM_HERE,
68 base::Bind(callback, results, base::Passed(std::move(requests))));
63 } 69 }
64 70
65 void RequestQueueInMemoryStore::ChangeRequestsState( 71 void RequestQueueInMemoryStore::ChangeRequestsState(
66 const std::vector<int64_t>& request_ids, 72 const std::vector<int64_t>& request_ids,
67 const SavePageRequest::RequestState new_state, 73 const SavePageRequest::RequestState new_state,
68 const UpdateMultipleRequestsCallback& callback) { 74 const UpdateMultipleRequestsCallback& callback) {
69 RequestQueue::UpdateMultipleRequestResults results; 75 RequestQueue::UpdateMultipleRequestResults results;
70 std::vector<SavePageRequest> requests; 76 std::vector<std::unique_ptr<SavePageRequest>> requests;
71 RequestQueue::UpdateRequestResult result; 77 RequestQueue::UpdateRequestResult result;
72 for (int64_t request_id : request_ids) { 78 for (int64_t request_id : request_ids) {
73 auto pair = requests_.find(request_id); 79 auto pair = requests_.find(request_id);
74 // If we find this request id, modify it, and return the modified request in 80 // If we find this request id, modify it, and return the modified request in
75 // the request list. 81 // the request list.
76 if (pair != requests_.end()) { 82 if (pair != requests_.end()) {
77 pair->second.set_request_state(new_state); 83 pair->second.set_request_state(new_state);
78 requests.push_back(pair->second); 84 std::unique_ptr<SavePageRequest> request(
85 new SavePageRequest(pair->second));
86 requests.push_back(std::move(request));
79 result = RequestQueue::UpdateRequestResult::SUCCESS; 87 result = RequestQueue::UpdateRequestResult::SUCCESS;
80 } else { 88 } else {
81 result = RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST;; 89 result = RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST;;
82 } 90 }
83 91
84 results.push_back(std::make_pair(request_id, result)); 92 results.push_back(std::make_pair(request_id, result));
85 } 93 }
86 94
87 base::ThreadTaskRunnerHandle::Get()->PostTask( 95 base::ThreadTaskRunnerHandle::Get()->PostTask(
88 FROM_HERE, base::Bind(callback, results, requests)); 96 FROM_HERE,
97 base::Bind(callback, results, base::Passed(std::move(requests))));
89 } 98 }
90 99
91 void RequestQueueInMemoryStore::Reset(const ResetCallback& callback) { 100 void RequestQueueInMemoryStore::Reset(const ResetCallback& callback) {
92 requests_.clear(); 101 requests_.clear();
93 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 102 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
94 base::Bind(callback, true)); 103 base::Bind(callback, true));
95 } 104 }
96 105
97 } // namespace offline_pages 106 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698