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

Side by Side Diff: components/offline_pages/background/request_queue_unittest.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.h" 5 #include "components/offline_pages/background/request_queue.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/test/test_simple_task_runner.h" 10 #include "base/test/test_simple_task_runner.h"
(...skipping 29 matching lines...) Expand all
40 40
41 // Test overrides. 41 // Test overrides.
42 void SetUp() override; 42 void SetUp() override;
43 43
44 void PumpLoop(); 44 void PumpLoop();
45 45
46 // Callback for adding requests. 46 // Callback for adding requests.
47 void AddRequestDone(AddRequestResult result, const SavePageRequest& request); 47 void AddRequestDone(AddRequestResult result, const SavePageRequest& request);
48 // Callback for getting requests. 48 // Callback for getting requests.
49 void GetRequestsDone(GetRequestsResult result, 49 void GetRequestsDone(GetRequestsResult result,
50 const std::vector<SavePageRequest>& requests); 50 std::vector<std::unique_ptr<SavePageRequest>> requests);
51 // Callback for removing request. 51 // Callback for removing request.
52 void RemoveRequestsDone( 52 void RemoveRequestsDone(
53 const RequestQueue::UpdateMultipleRequestResults& results, 53 const RequestQueue::UpdateMultipleRequestResults& results,
54 const std::vector<SavePageRequest>& requests); 54 std::vector<std::unique_ptr<SavePageRequest>> requests);
55 55
56 void UpdateMultipleRequestsDone( 56 void UpdateMultipleRequestsDone(
57 const RequestQueue::UpdateMultipleRequestResults& results, 57 const RequestQueue::UpdateMultipleRequestResults& results,
58 const std::vector<SavePageRequest>& requests); 58 std::vector<std::unique_ptr<SavePageRequest>> requests);
59 59
60 void UpdateRequestDone(UpdateRequestResult result); 60 void UpdateRequestDone(UpdateRequestResult result);
61 61
62 RequestQueue* queue() { return queue_.get(); } 62 RequestQueue* queue() { return queue_.get(); }
63 63
64 AddRequestResult last_add_result() const { return last_add_result_; } 64 AddRequestResult last_add_result() const { return last_add_result_; }
65 SavePageRequest* last_added_request() { 65 SavePageRequest* last_added_request() {
66 return last_added_request_.get(); 66 return last_added_request_.get();
67 } 67 }
68 68
69 const RequestQueue::UpdateMultipleRequestResults& last_remove_results() 69 const RequestQueue::UpdateMultipleRequestResults& last_remove_results()
70 const { 70 const {
71 return last_remove_results_; 71 return last_remove_results_;
72 } 72 }
73 73
74 const RequestQueue::UpdateMultipleRequestResults& 74 const RequestQueue::UpdateMultipleRequestResults&
75 last_multiple_update_results() const { 75 last_multiple_update_results() const {
76 return last_multiple_update_results_; 76 return last_multiple_update_results_;
77 } 77 }
78 78
79 UpdateRequestResult last_update_result() const { return last_update_result_; } 79 UpdateRequestResult last_update_result() const { return last_update_result_; }
80 80
81 GetRequestsResult last_get_requests_result() const { 81 GetRequestsResult last_get_requests_result() const {
82 return last_get_requests_result_; 82 return last_get_requests_result_;
83 } 83 }
84 const std::vector<SavePageRequest>& last_requests() const { 84 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const {
85 return last_requests_; 85 return last_requests_;
86 } 86 }
87 87
88 private: 88 private:
89 AddRequestResult last_add_result_; 89 AddRequestResult last_add_result_;
90 std::unique_ptr<SavePageRequest> last_added_request_; 90 std::unique_ptr<SavePageRequest> last_added_request_;
91 RequestQueue::UpdateMultipleRequestResults last_remove_results_; 91 RequestQueue::UpdateMultipleRequestResults last_remove_results_;
92 RequestQueue::UpdateMultipleRequestResults last_multiple_update_results_; 92 RequestQueue::UpdateMultipleRequestResults last_multiple_update_results_;
93 UpdateRequestResult last_update_result_; 93 UpdateRequestResult last_update_result_;
94 94
95 GetRequestsResult last_get_requests_result_; 95 GetRequestsResult last_get_requests_result_;
96 std::vector<SavePageRequest> last_requests_; 96 std::vector<std::unique_ptr<SavePageRequest>> last_requests_;
97 97
98 std::unique_ptr<RequestQueue> queue_; 98 std::unique_ptr<RequestQueue> queue_;
99 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; 99 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
100 base::ThreadTaskRunnerHandle task_runner_handle_; 100 base::ThreadTaskRunnerHandle task_runner_handle_;
101 }; 101 };
102 102
103 RequestQueueTest::RequestQueueTest() 103 RequestQueueTest::RequestQueueTest()
104 : last_add_result_(AddRequestResult::STORE_FAILURE), 104 : last_add_result_(AddRequestResult::STORE_FAILURE),
105 last_update_result_(UpdateRequestResult::STORE_FAILURE), 105 last_update_result_(UpdateRequestResult::STORE_FAILURE),
106 last_get_requests_result_(GetRequestsResult::STORE_FAILURE), 106 last_get_requests_result_(GetRequestsResult::STORE_FAILURE),
(...skipping 13 matching lines...) Expand all
120 } 120 }
121 121
122 void RequestQueueTest::AddRequestDone(AddRequestResult result, 122 void RequestQueueTest::AddRequestDone(AddRequestResult result,
123 const SavePageRequest& request) { 123 const SavePageRequest& request) {
124 last_add_result_ = result; 124 last_add_result_ = result;
125 last_added_request_.reset(new SavePageRequest(request)); 125 last_added_request_.reset(new SavePageRequest(request));
126 } 126 }
127 127
128 void RequestQueueTest::GetRequestsDone( 128 void RequestQueueTest::GetRequestsDone(
129 GetRequestsResult result, 129 GetRequestsResult result,
130 const std::vector<SavePageRequest>& requests) { 130 std::vector<std::unique_ptr<SavePageRequest>> requests) {
131 last_get_requests_result_ = result; 131 last_get_requests_result_ = result;
132 last_requests_ = requests; 132 last_requests_ = std::move(requests);
133 } 133 }
134 134
135 void RequestQueueTest::RemoveRequestsDone( 135 void RequestQueueTest::RemoveRequestsDone(
136 const RequestQueue::UpdateMultipleRequestResults& results, 136 const RequestQueue::UpdateMultipleRequestResults& results,
137 const std::vector<SavePageRequest>& requests) { 137 std::vector<std::unique_ptr<SavePageRequest>> requests) {
138 last_remove_results_ = results; 138 last_remove_results_ = results;
139 last_requests_ = requests; 139 last_requests_ = std::move(requests);
140 } 140 }
141 141
142 void RequestQueueTest::UpdateMultipleRequestsDone( 142 void RequestQueueTest::UpdateMultipleRequestsDone(
143 const RequestQueue::UpdateMultipleRequestResults& results, 143 const RequestQueue::UpdateMultipleRequestResults& results,
144 const std::vector<SavePageRequest>& requests) { 144 std::vector<std::unique_ptr<SavePageRequest>> requests) {
145 last_multiple_update_results_ = results; 145 last_multiple_update_results_ = results;
146 last_requests_ = requests; 146 last_requests_ = std::move(requests);
147 } 147 }
148 148
149 void RequestQueueTest::UpdateRequestDone(UpdateRequestResult result) { 149 void RequestQueueTest::UpdateRequestDone(UpdateRequestResult result) {
150 last_update_result_ = result; 150 last_update_result_ = result;
151 } 151 }
152 152
153 TEST_F(RequestQueueTest, GetRequestsEmpty) { 153 TEST_F(RequestQueueTest, GetRequestsEmpty) {
154 queue()->GetRequests( 154 queue()->GetRequests(
155 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 155 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
156 PumpLoop(); 156 PumpLoop();
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 last_multiple_update_results().at(0).second); 268 last_multiple_update_results().at(0).second);
269 269
270 queue()->GetRequests( 270 queue()->GetRequests(
271 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 271 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
272 PumpLoop(); 272 PumpLoop();
273 273
274 // Verify the request is paused. 274 // Verify the request is paused.
275 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 275 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
276 ASSERT_EQ(1ul, last_requests().size()); 276 ASSERT_EQ(1ul, last_requests().size());
277 ASSERT_EQ(SavePageRequest::RequestState::PAUSED, 277 ASSERT_EQ(SavePageRequest::RequestState::PAUSED,
278 last_requests().front().request_state()); 278 last_requests().at(0)->request_state());
279 279
280 // Resume the request. 280 // Resume the request.
281 queue()->ChangeRequestsState( 281 queue()->ChangeRequestsState(
282 request_ids, SavePageRequest::RequestState::AVAILABLE, 282 request_ids, SavePageRequest::RequestState::AVAILABLE,
283 base::Bind(&RequestQueueTest::UpdateMultipleRequestsDone, 283 base::Bind(&RequestQueueTest::UpdateMultipleRequestsDone,
284 base::Unretained(this))); 284 base::Unretained(this)));
285 PumpLoop(); 285 PumpLoop();
286 ASSERT_EQ(1ul, last_multiple_update_results().size()); 286 ASSERT_EQ(1ul, last_multiple_update_results().size());
287 ASSERT_EQ(UpdateRequestResult::SUCCESS, 287 ASSERT_EQ(UpdateRequestResult::SUCCESS,
288 last_multiple_update_results().at(0).second); 288 last_multiple_update_results().at(0).second);
289 289
290 queue()->GetRequests( 290 queue()->GetRequests(
291 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 291 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
292 PumpLoop(); 292 PumpLoop();
293 293
294 // Verify the request is no longer paused. 294 // Verify the request is no longer paused.
295 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 295 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
296 ASSERT_EQ(1ul, last_requests().size()); 296 ASSERT_EQ(1ul, last_requests().size());
297 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE, 297 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE,
298 last_requests().front().request_state()); 298 last_requests().at(0)->request_state());
299 } 299 }
300 300
301 // A longer test populating the request queue with more than one item, properly 301 // A longer test populating the request queue with more than one item, properly
302 // listing multiple items and removing the right item. 302 // listing multiple items and removing the right item.
303 TEST_F(RequestQueueTest, MultipleRequestsAddGetRemove) { 303 TEST_F(RequestQueueTest, MultipleRequestsAddGetRemove) {
304 base::Time creation_time = base::Time::Now(); 304 base::Time creation_time = base::Time::Now();
305 SavePageRequest request1( 305 SavePageRequest request1(
306 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 306 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
307 queue()->AddRequest(request1, base::Bind(&RequestQueueTest::AddRequestDone, 307 queue()->AddRequest(request1, base::Bind(&RequestQueueTest::AddRequestDone,
308 base::Unretained(this))); 308 base::Unretained(this)));
(...skipping 20 matching lines...) Expand all
329 PumpLoop(); 329 PumpLoop();
330 ASSERT_EQ(1ul, last_remove_results().size()); 330 ASSERT_EQ(1ul, last_remove_results().size());
331 ASSERT_EQ(kRequestId, last_remove_results().at(0).first); 331 ASSERT_EQ(kRequestId, last_remove_results().at(0).first);
332 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_results().at(0).second); 332 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_results().at(0).second);
333 333
334 queue()->GetRequests( 334 queue()->GetRequests(
335 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 335 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
336 PumpLoop(); 336 PumpLoop();
337 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 337 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
338 ASSERT_EQ(1ul, last_requests().size()); 338 ASSERT_EQ(1ul, last_requests().size());
339 ASSERT_EQ(request2.request_id(), last_requests()[0].request_id()); 339 ASSERT_EQ(request2.request_id(), last_requests().at(0)->request_id());
340 } 340 }
341 341
342 TEST_F(RequestQueueTest, UpdateRequest) { 342 TEST_F(RequestQueueTest, UpdateRequest) {
343 // First add a request. Retry count will be set to 0. 343 // First add a request. Retry count will be set to 0.
344 base::Time creation_time = base::Time::Now(); 344 base::Time creation_time = base::Time::Now();
345 SavePageRequest request( 345 SavePageRequest request(
346 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 346 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
347 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone, 347 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone,
348 base::Unretained(this))); 348 base::Unretained(this)));
349 PumpLoop(); 349 PumpLoop();
350 350
351 // Update the request, ensure it succeeded. 351 // Update the request, ensure it succeeded.
352 request.set_completed_attempt_count(kRetryCount); 352 request.set_completed_attempt_count(kRetryCount);
353 queue()->UpdateRequest( 353 queue()->UpdateRequest(
354 request, 354 request,
355 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this))); 355 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this)));
356 PumpLoop(); 356 PumpLoop();
357 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_update_result()); 357 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_update_result());
358 358
359 // Get the request, and verify the update took effect. 359 // Get the request, and verify the update took effect.
360 queue()->GetRequests( 360 queue()->GetRequests(
361 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); 361 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this)));
362 PumpLoop(); 362 PumpLoop();
363 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); 363 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result());
364 ASSERT_EQ(1ul, last_requests().size()); 364 ASSERT_EQ(1ul, last_requests().size());
365 ASSERT_EQ(kRetryCount, last_requests().front().completed_attempt_count()); 365 ASSERT_EQ(kRetryCount, last_requests().at(0)->completed_attempt_count());
366 } 366 }
367 367
368 TEST_F(RequestQueueTest, UpdateRequestNotPresent) { 368 TEST_F(RequestQueueTest, UpdateRequestNotPresent) {
369 // First add a request. Retry count will be set to 0. 369 // First add a request. Retry count will be set to 0.
370 base::Time creation_time = base::Time::Now(); 370 base::Time creation_time = base::Time::Now();
371 SavePageRequest request1( 371 SavePageRequest request1(
372 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 372 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
373 SavePageRequest request2( 373 SavePageRequest request2(
374 kRequestId2, kUrl2, kClientId2, creation_time, kUserRequested); 374 kRequestId2, kUrl2, kClientId2, creation_time, kUserRequested);
375 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone, 375 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone,
376 base::Unretained(this))); 376 base::Unretained(this)));
377 PumpLoop(); 377 PumpLoop();
378 378
379 // Try to update request1 when only request2 is in the queue. 379 // Try to update request1 when only request2 is in the queue.
380 queue()->UpdateRequest( 380 queue()->UpdateRequest(
381 request1, 381 request1,
382 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this))); 382 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this)));
383 PumpLoop(); 383 PumpLoop();
384 ASSERT_EQ(UpdateRequestResult::REQUEST_DOES_NOT_EXIST, last_update_result()); 384 ASSERT_EQ(UpdateRequestResult::REQUEST_DOES_NOT_EXIST, last_update_result());
385 } 385 }
386 386
387 } // namespace offline_pages 387 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698