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

Side by Side Diff: components/offline_pages/background/request_queue_store_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: Logical merge fixes 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_store.h" 5 #include "components/offline_pages/background/request_queue_store.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 RequestQueueStoreTestBase(); 57 RequestQueueStoreTestBase();
58 58
59 // Test overrides. 59 // Test overrides.
60 void TearDown() override; 60 void TearDown() override;
61 61
62 void PumpLoop(); 62 void PumpLoop();
63 void ClearResults(); 63 void ClearResults();
64 64
65 // Callback used for get requests. 65 // Callback used for get requests.
66 void GetRequestsDone(bool result, 66 void GetRequestsDone(bool result,
67 const std::vector<SavePageRequest>& requests); 67 std::vector<std::unique_ptr<SavePageRequest>> requests);
68 // Callback used for add/update request. 68 // Callback used for add/update request.
69 void AddOrUpdateDone(UpdateStatus result); 69 void AddOrUpdateDone(UpdateStatus result);
70 void UpdateMultipleRequestsDone( 70 void UpdateMultipleRequestsDone(
71 const RequestQueue::UpdateMultipleRequestResults& results, 71 const RequestQueue::UpdateMultipleRequestResults& results,
72 const std::vector<SavePageRequest>& requests); 72 std::vector<std::unique_ptr<SavePageRequest>> requests);
73 // Callback used for remove requests. 73 // Callback used for remove requests.
74 void RemoveDone(const RequestQueue::UpdateMultipleRequestResults& results, 74 void RemoveDone(const RequestQueue::UpdateMultipleRequestResults& results,
75 const std::vector<SavePageRequest>& requests); 75 std::vector<std::unique_ptr<SavePageRequest>> requests);
76 // Callback used for reset. 76 // Callback used for reset.
77 void ResetDone(bool result); 77 void ResetDone(bool result);
78 78
79 LastResult last_result() const { return last_result_; } 79 LastResult last_result() const { return last_result_; }
80 UpdateStatus last_update_status() const { return last_update_status_; } 80 UpdateStatus last_update_status() const { return last_update_status_; }
81 const RequestQueue::UpdateMultipleRequestResults& 81 const RequestQueue::UpdateMultipleRequestResults&
82 last_multiple_update_results() const { 82 last_multiple_update_results() const {
83 return last_multiple_update_results_; 83 return last_multiple_update_results_;
84 } 84 }
85 const RequestQueue::UpdateMultipleRequestResults& last_remove_results() 85 const RequestQueue::UpdateMultipleRequestResults& last_remove_results()
86 const { 86 const {
87 return last_remove_results_; 87 return last_remove_results_;
88 } 88 }
89 const std::vector<SavePageRequest>& last_requests() const { 89 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const {
90 return last_requests_; 90 return last_requests_;
91 } 91 }
92 92
93 protected: 93 protected:
94 base::ScopedTempDir temp_directory_; 94 base::ScopedTempDir temp_directory_;
95 95
96 private: 96 private:
97 LastResult last_result_; 97 LastResult last_result_;
98 UpdateStatus last_update_status_; 98 UpdateStatus last_update_status_;
99 RequestQueue::UpdateMultipleRequestResults last_multiple_update_results_; 99 RequestQueue::UpdateMultipleRequestResults last_multiple_update_results_;
100 RequestQueue::UpdateMultipleRequestResults last_remove_results_; 100 RequestQueue::UpdateMultipleRequestResults last_remove_results_;
101 std::vector<SavePageRequest> last_requests_; 101 std::vector<std::unique_ptr<SavePageRequest>> last_requests_;
102 102
103 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; 103 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
104 base::ThreadTaskRunnerHandle task_runner_handle_; 104 base::ThreadTaskRunnerHandle task_runner_handle_;
105 }; 105 };
106 106
107 RequestQueueStoreTestBase::RequestQueueStoreTestBase() 107 RequestQueueStoreTestBase::RequestQueueStoreTestBase()
108 : last_result_(LastResult::kNone), 108 : last_result_(LastResult::kNone),
109 last_update_status_(UpdateStatus::FAILED), 109 last_update_status_(UpdateStatus::FAILED),
110 task_runner_(new base::TestSimpleTaskRunner), 110 task_runner_(new base::TestSimpleTaskRunner),
111 task_runner_handle_(task_runner_) { 111 task_runner_handle_(task_runner_) {
(...skipping 11 matching lines...) Expand all
123 123
124 void RequestQueueStoreTestBase::ClearResults() { 124 void RequestQueueStoreTestBase::ClearResults() {
125 last_result_ = LastResult::kNone; 125 last_result_ = LastResult::kNone;
126 last_update_status_ = UpdateStatus::FAILED; 126 last_update_status_ = UpdateStatus::FAILED;
127 last_remove_results_.clear(); 127 last_remove_results_.clear();
128 last_requests_.clear(); 128 last_requests_.clear();
129 } 129 }
130 130
131 void RequestQueueStoreTestBase::GetRequestsDone( 131 void RequestQueueStoreTestBase::GetRequestsDone(
132 bool result, 132 bool result,
133 const std::vector<SavePageRequest>& requests) { 133 std::vector<std::unique_ptr<SavePageRequest>> requests) {
134 last_result_ = result ? LastResult::kTrue : LastResult::kFalse; 134 last_result_ = result ? LastResult::kTrue : LastResult::kFalse;
135 last_requests_ = requests; 135 last_requests_ = std::move(requests);
136 } 136 }
137 137
138 void RequestQueueStoreTestBase::AddOrUpdateDone(UpdateStatus status) { 138 void RequestQueueStoreTestBase::AddOrUpdateDone(UpdateStatus status) {
139 last_update_status_ = status; 139 last_update_status_ = status;
140 } 140 }
141 141
142 void RequestQueueStoreTestBase::UpdateMultipleRequestsDone( 142 void RequestQueueStoreTestBase::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 RequestQueueStoreTestBase::RemoveDone( 149 void RequestQueueStoreTestBase::RemoveDone(
150 const RequestQueue::UpdateMultipleRequestResults& results, 150 const RequestQueue::UpdateMultipleRequestResults& results,
151 const std::vector<SavePageRequest>& requests) { 151 std::vector<std::unique_ptr<SavePageRequest>> requests) {
152 last_remove_results_ = results; 152 last_remove_results_ = results;
153 last_requests_ = requests; 153 last_requests_ = std::move(requests);
154 } 154 }
155 155
156 void RequestQueueStoreTestBase::ResetDone(bool result) { 156 void RequestQueueStoreTestBase::ResetDone(bool result) {
157 last_result_ = result ? LastResult::kTrue : LastResult::kFalse; 157 last_result_ = result ? LastResult::kTrue : LastResult::kFalse;
158 } 158 }
159 159
160 // Defines interface for the store factory. 160 // Defines interface for the store factory.
161 class RequestQueueStoreFactory { 161 class RequestQueueStoreFactory {
162 public: 162 public:
163 virtual RequestQueueStore* BuildStore(const base::FilePath& path) = 0; 163 virtual RequestQueueStore* BuildStore(const base::FilePath& path) = 0;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status()); 233 ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status());
234 234
235 // Verifying get reqeust results after a request was added. 235 // Verifying get reqeust results after a request was added.
236 this->ClearResults(); 236 this->ClearResults();
237 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 237 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
238 base::Unretained(this))); 238 base::Unretained(this)));
239 ASSERT_EQ(LastResult::kNone, this->last_result()); 239 ASSERT_EQ(LastResult::kNone, this->last_result());
240 this->PumpLoop(); 240 this->PumpLoop();
241 ASSERT_EQ(LastResult::kTrue, this->last_result()); 241 ASSERT_EQ(LastResult::kTrue, this->last_result());
242 ASSERT_EQ(1ul, this->last_requests().size()); 242 ASSERT_EQ(1ul, this->last_requests().size());
243 ASSERT_TRUE(request == this->last_requests()[0]); 243 ASSERT_TRUE(request == *(this->last_requests()[0].get()));
244 } 244 }
245 245
246 TYPED_TEST(RequestQueueStoreTest, UpdateRequest) { 246 TYPED_TEST(RequestQueueStoreTest, UpdateRequest) {
247 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); 247 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
248 base::Time creation_time = base::Time::Now(); 248 base::Time creation_time = base::Time::Now();
249 SavePageRequest original_request( 249 SavePageRequest original_request(
250 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 250 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
251 store->AddOrUpdateRequest( 251 store->AddOrUpdateRequest(
252 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, 252 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
253 base::Unretained(this))); 253 base::Unretained(this)));
(...skipping 14 matching lines...) Expand all
268 ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status()); 268 ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status());
269 269
270 // Verifying get reqeust results after a request was updated. 270 // Verifying get reqeust results after a request was updated.
271 this->ClearResults(); 271 this->ClearResults();
272 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 272 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
273 base::Unretained(this))); 273 base::Unretained(this)));
274 ASSERT_EQ(LastResult::kNone, this->last_result()); 274 ASSERT_EQ(LastResult::kNone, this->last_result());
275 this->PumpLoop(); 275 this->PumpLoop();
276 ASSERT_EQ(LastResult::kTrue, this->last_result()); 276 ASSERT_EQ(LastResult::kTrue, this->last_result());
277 ASSERT_EQ(1ul, this->last_requests().size()); 277 ASSERT_EQ(1ul, this->last_requests().size());
278 ASSERT_TRUE(updated_request == this->last_requests()[0]); 278 ASSERT_TRUE(updated_request == *(this->last_requests()[0].get()));
279 } 279 }
280 280
281 TYPED_TEST(RequestQueueStoreTest, RemoveRequests) { 281 TYPED_TEST(RequestQueueStoreTest, RemoveRequests) {
282 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); 282 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
283 base::Time creation_time = base::Time::Now(); 283 base::Time creation_time = base::Time::Now();
284 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time, 284 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
285 kUserRequested); 285 kUserRequested);
286 store->AddOrUpdateRequest( 286 store->AddOrUpdateRequest(
287 request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, 287 request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
288 base::Unretained(this))); 288 base::Unretained(this)));
289 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time, 289 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
290 kUserRequested); 290 kUserRequested);
291 store->AddOrUpdateRequest( 291 store->AddOrUpdateRequest(
292 request2, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, 292 request2, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
293 base::Unretained(this))); 293 base::Unretained(this)));
294 this->PumpLoop(); 294 this->PumpLoop();
295 this->ClearResults(); 295 this->ClearResults();
296 296
297 std::vector<int64_t> request_ids{kRequestId, kRequestId2}; 297 std::vector<int64_t> request_ids{kRequestId, kRequestId2};
298 store->RemoveRequests(request_ids, 298 store->RemoveRequests(request_ids,
299 base::Bind(&RequestQueueStoreTestBase::RemoveDone, 299 base::Bind(&RequestQueueStoreTestBase::RemoveDone,
300 base::Unretained(this))); 300 base::Unretained(this)));
301 ASSERT_EQ(0ul, this->last_remove_results().size()); 301 ASSERT_EQ(0ul, this->last_remove_results().size());
302 this->PumpLoop(); 302 this->PumpLoop();
303 ASSERT_EQ(2ul, this->last_remove_results().size()); 303 ASSERT_EQ(2ul, this->last_remove_results().size());
304 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS, 304 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS,
305 this->last_remove_results().at(0).second); 305 this->last_remove_results().at(0).second);
306 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS, 306 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS,
307 this->last_remove_results().at(1).second); 307 this->last_remove_results().at(1).second);
308 ASSERT_EQ(kRequestId, this->last_requests().at(0).request_id()); 308 ASSERT_EQ(kRequestId, this->last_requests().at(0)->request_id());
309 this->ClearResults(); 309 this->ClearResults();
310 310
311 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 311 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
312 base::Unretained(this))); 312 base::Unretained(this)));
313 this->PumpLoop(); 313 this->PumpLoop();
314 ASSERT_EQ(LastResult::kTrue, this->last_result()); 314 ASSERT_EQ(LastResult::kTrue, this->last_result());
315 ASSERT_TRUE(this->last_requests().empty()); 315 ASSERT_TRUE(this->last_requests().empty());
316 this->ClearResults(); 316 this->ClearResults();
317 317
318 // Try to remove a request that is not in the queue. 318 // Try to remove a request that is not in the queue.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 request_ids, SavePageRequest::RequestState::PAUSED, 350 request_ids, SavePageRequest::RequestState::PAUSED,
351 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone, 351 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone,
352 base::Unretained(this))); 352 base::Unretained(this)));
353 ASSERT_EQ(LastResult::kNone, this->last_result()); 353 ASSERT_EQ(LastResult::kNone, this->last_result());
354 this->PumpLoop(); 354 this->PumpLoop();
355 355
356 // Verify pause succeeded 356 // Verify pause succeeded
357 ASSERT_EQ(1ul, this->last_multiple_update_results().size()); 357 ASSERT_EQ(1ul, this->last_multiple_update_results().size());
358 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS, 358 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS,
359 this->last_multiple_update_results().at(0).second); 359 this->last_multiple_update_results().at(0).second);
360 ASSERT_EQ(kRequestId, this->last_requests().at(0).request_id()); 360 ASSERT_EQ(kRequestId, this->last_requests().at(0)->request_id());
361 this->ClearResults(); 361 this->ClearResults();
362 362
363 // Get the request from the queue to check it out 363 // Get the request from the queue to check it out
364 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 364 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
365 base::Unretained(this))); 365 base::Unretained(this)));
366 this->PumpLoop(); 366 this->PumpLoop();
367 ASSERT_EQ(LastResult::kTrue, this->last_result()); 367 ASSERT_EQ(LastResult::kTrue, this->last_result());
368 // The request should still be in the queue. 368 // The request should still be in the queue.
369 ASSERT_EQ(1UL, this->last_requests().size()); 369 ASSERT_EQ(1UL, this->last_requests().size());
370 // Request 1 should be paused. 370 // Request 1 should be paused.
371 ASSERT_EQ(SavePageRequest::RequestState::PAUSED, 371 ASSERT_EQ(SavePageRequest::RequestState::PAUSED,
372 this->last_requests().at(0).request_state()); 372 this->last_requests().at(0)->request_state());
373 this->ClearResults(); 373 this->ClearResults();
374 374
375 // Now resume the same request we paused. 375 // Now resume the same request we paused.
376 store->ChangeRequestsState( 376 store->ChangeRequestsState(
377 request_ids, SavePageRequest::RequestState::AVAILABLE, 377 request_ids, SavePageRequest::RequestState::AVAILABLE,
378 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone, 378 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone,
379 base::Unretained(this))); 379 base::Unretained(this)));
380 ASSERT_EQ(LastResult::kNone, this->last_result()); 380 ASSERT_EQ(LastResult::kNone, this->last_result());
381 this->PumpLoop(); 381 this->PumpLoop();
382 382
383 // Verify resume succeeded. 383 // Verify resume succeeded.
384 ASSERT_EQ(1ul, this->last_multiple_update_results().size()); 384 ASSERT_EQ(1ul, this->last_multiple_update_results().size());
385 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS, 385 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS,
386 this->last_multiple_update_results().at(0).second); 386 this->last_multiple_update_results().at(0).second);
387 ASSERT_EQ(kRequestId, this->last_requests().at(0).request_id()); 387 ASSERT_EQ(kRequestId, this->last_requests().at(0)->request_id());
388 this->ClearResults(); 388 this->ClearResults();
389 389
390 // Get the request from the queue to check it out 390 // Get the request from the queue to check it out
391 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 391 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
392 base::Unretained(this))); 392 base::Unretained(this)));
393 this->PumpLoop(); 393 this->PumpLoop();
394 ASSERT_EQ(LastResult::kTrue, this->last_result()); 394 ASSERT_EQ(LastResult::kTrue, this->last_result());
395 // The request should still be in the queue. 395 // The request should still be in the queue.
396 ASSERT_EQ(1UL, this->last_requests().size()); 396 ASSERT_EQ(1UL, this->last_requests().size());
397 // Request 1 should be paused. 397 // Request 1 should be paused.
398 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE, 398 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE,
399 this->last_requests().at(0).request_state()); 399 this->last_requests().at(0)->request_state());
400 this->ClearResults(); 400 this->ClearResults();
401 } 401 }
402 402
403 TYPED_TEST(RequestQueueStoreTest, ResetStore) { 403 TYPED_TEST(RequestQueueStoreTest, ResetStore) {
404 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); 404 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
405 base::Time creation_time = base::Time::Now(); 405 base::Time creation_time = base::Time::Now();
406 SavePageRequest original_request( 406 SavePageRequest original_request(
407 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 407 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
408 store->AddOrUpdateRequest( 408 store->AddOrUpdateRequest(
409 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, 409 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 // Resets the store, using the same temp directory. The contents should be 444 // Resets the store, using the same temp directory. The contents should be
445 // intact. First reset is done separately to release DB lock. 445 // intact. First reset is done separately to release DB lock.
446 store.reset(); 446 store.reset();
447 store = BuildStore(); 447 store = BuildStore();
448 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 448 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
449 base::Unretained(this))); 449 base::Unretained(this)));
450 ASSERT_EQ(LastResult::kNone, this->last_result()); 450 ASSERT_EQ(LastResult::kNone, this->last_result());
451 this->PumpLoop(); 451 this->PumpLoop();
452 ASSERT_EQ(LastResult::kTrue, this->last_result()); 452 ASSERT_EQ(LastResult::kTrue, this->last_result());
453 ASSERT_EQ(1ul, this->last_requests().size()); 453 ASSERT_EQ(1ul, this->last_requests().size());
454 ASSERT_TRUE(original_request == this->last_requests()[0]); 454 ASSERT_TRUE(original_request == *(this->last_requests().at(0).get()));
455 } 455 }
456 456
457 } // offline_pages 457 } // offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698