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

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: CR feedback per BauerB 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()));
Bernhard Bauer 2016/09/08 09:01:58 I *think* the .get() is unnecessary -- you get the
Pete Williamson 2016/09/08 17:27:00 Done.
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)));
(...skipping 10 matching lines...) Expand all
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(2UL, this->last_requests().size()); 308 ASSERT_EQ(2UL, this->last_requests().size());
309 ASSERT_EQ(kRequestId, this->last_requests().at(0).request_id()); 309 ASSERT_EQ(kRequestId, this->last_requests().at(0)->request_id());
310 this->ClearResults(); 310 this->ClearResults();
311 311
312 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 312 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
313 base::Unretained(this))); 313 base::Unretained(this)));
314 this->PumpLoop(); 314 this->PumpLoop();
315 ASSERT_EQ(LastResult::kTrue, this->last_result()); 315 ASSERT_EQ(LastResult::kTrue, this->last_result());
316 ASSERT_TRUE(this->last_requests().empty()); 316 ASSERT_TRUE(this->last_requests().empty());
317 this->ClearResults(); 317 this->ClearResults();
318 318
319 // Try to remove a request that is not in the queue. 319 // Try to remove a request that is not in the queue.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 request_ids, SavePageRequest::RequestState::PAUSED, 351 request_ids, SavePageRequest::RequestState::PAUSED,
352 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone, 352 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone,
353 base::Unretained(this))); 353 base::Unretained(this)));
354 ASSERT_EQ(LastResult::kNone, this->last_result()); 354 ASSERT_EQ(LastResult::kNone, this->last_result());
355 this->PumpLoop(); 355 this->PumpLoop();
356 356
357 // Verify pause succeeded 357 // Verify pause succeeded
358 ASSERT_EQ(1ul, this->last_multiple_update_results().size()); 358 ASSERT_EQ(1ul, this->last_multiple_update_results().size());
359 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS, 359 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS,
360 this->last_multiple_update_results().at(0).second); 360 this->last_multiple_update_results().at(0).second);
361 ASSERT_EQ(kRequestId, this->last_requests().at(0).request_id()); 361 ASSERT_EQ(kRequestId, this->last_requests().at(0)->request_id());
362 this->ClearResults(); 362 this->ClearResults();
363 363
364 // Get the request from the queue to check it out 364 // Get the request from the queue to check it out
365 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 365 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
366 base::Unretained(this))); 366 base::Unretained(this)));
367 this->PumpLoop(); 367 this->PumpLoop();
368 ASSERT_EQ(LastResult::kTrue, this->last_result()); 368 ASSERT_EQ(LastResult::kTrue, this->last_result());
369 // The request should still be in the queue. 369 // The request should still be in the queue.
370 ASSERT_EQ(1UL, this->last_requests().size()); 370 ASSERT_EQ(1UL, this->last_requests().size());
371 // Request 1 should be paused. 371 // Request 1 should be paused.
372 ASSERT_EQ(SavePageRequest::RequestState::PAUSED, 372 ASSERT_EQ(SavePageRequest::RequestState::PAUSED,
373 this->last_requests().at(0).request_state()); 373 this->last_requests().at(0)->request_state());
374 this->ClearResults(); 374 this->ClearResults();
375 375
376 // Now resume the same request we paused. 376 // Now resume the same request we paused.
377 store->ChangeRequestsState( 377 store->ChangeRequestsState(
378 request_ids, SavePageRequest::RequestState::AVAILABLE, 378 request_ids, SavePageRequest::RequestState::AVAILABLE,
379 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone, 379 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone,
380 base::Unretained(this))); 380 base::Unretained(this)));
381 ASSERT_EQ(LastResult::kNone, this->last_result()); 381 ASSERT_EQ(LastResult::kNone, this->last_result());
382 this->PumpLoop(); 382 this->PumpLoop();
383 383
384 // Verify resume succeeded. 384 // Verify resume succeeded.
385 ASSERT_EQ(1ul, this->last_multiple_update_results().size()); 385 ASSERT_EQ(1ul, this->last_multiple_update_results().size());
386 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS, 386 ASSERT_EQ(RequestQueue::UpdateRequestResult::SUCCESS,
387 this->last_multiple_update_results().at(0).second); 387 this->last_multiple_update_results().at(0).second);
388 ASSERT_EQ(kRequestId, this->last_requests().at(0).request_id()); 388 ASSERT_EQ(kRequestId, this->last_requests().at(0)->request_id());
389 this->ClearResults(); 389 this->ClearResults();
390 390
391 // Get the request from the queue to check it out 391 // Get the request from the queue to check it out
392 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 392 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
393 base::Unretained(this))); 393 base::Unretained(this)));
394 this->PumpLoop(); 394 this->PumpLoop();
395 ASSERT_EQ(LastResult::kTrue, this->last_result()); 395 ASSERT_EQ(LastResult::kTrue, this->last_result());
396 // The request should still be in the queue. 396 // The request should still be in the queue.
397 ASSERT_EQ(1UL, this->last_requests().size()); 397 ASSERT_EQ(1UL, this->last_requests().size());
398 // Request 1 should be paused. 398 // Request 1 should be paused.
399 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE, 399 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE,
400 this->last_requests().at(0).request_state()); 400 this->last_requests().at(0)->request_state());
401 this->ClearResults(); 401 this->ClearResults();
402 } 402 }
403 403
404 TYPED_TEST(RequestQueueStoreTest, ResetStore) { 404 TYPED_TEST(RequestQueueStoreTest, ResetStore) {
405 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); 405 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
406 base::Time creation_time = base::Time::Now(); 406 base::Time creation_time = base::Time::Now();
407 SavePageRequest original_request( 407 SavePageRequest original_request(
408 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 408 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
409 store->AddOrUpdateRequest( 409 store->AddOrUpdateRequest(
410 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, 410 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 // Resets the store, using the same temp directory. The contents should be 445 // Resets the store, using the same temp directory. The contents should be
446 // intact. First reset is done separately to release DB lock. 446 // intact. First reset is done separately to release DB lock.
447 store.reset(); 447 store.reset();
448 store = BuildStore(); 448 store = BuildStore();
449 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 449 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
450 base::Unretained(this))); 450 base::Unretained(this)));
451 ASSERT_EQ(LastResult::kNone, this->last_result()); 451 ASSERT_EQ(LastResult::kNone, this->last_result());
452 this->PumpLoop(); 452 this->PumpLoop();
453 ASSERT_EQ(LastResult::kTrue, this->last_result()); 453 ASSERT_EQ(LastResult::kTrue, this->last_result());
454 ASSERT_EQ(1ul, this->last_requests().size()); 454 ASSERT_EQ(1ul, this->last_requests().size());
455 ASSERT_TRUE(original_request == this->last_requests()[0]); 455 ASSERT_TRUE(original_request == *(this->last_requests().at(0).get()));
456 } 456 }
457 457
458 } // offline_pages 458 } // offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698