| OLD | NEW |
| 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 18 matching lines...) Expand all Loading... |
| 29 const ClientId kClientId("bookmark", "1234"); | 29 const ClientId kClientId("bookmark", "1234"); |
| 30 const ClientId kClientId2("async", "5678"); | 30 const ClientId kClientId2("async", "5678"); |
| 31 const bool kUserRequested = true; | 31 const bool kUserRequested = true; |
| 32 | 32 |
| 33 enum class LastResult { | 33 enum class LastResult { |
| 34 kNone, | 34 kNone, |
| 35 kFalse, | 35 kFalse, |
| 36 kTrue, | 36 kTrue, |
| 37 }; | 37 }; |
| 38 | 38 |
| 39 bool operator==(const SavePageRequest& lhs, const SavePageRequest& rhs) { | |
| 40 return lhs.request_id() == rhs.request_id() && lhs.url() == rhs.url() && | |
| 41 lhs.client_id() == rhs.client_id() && | |
| 42 lhs.creation_time() == rhs.creation_time() && | |
| 43 lhs.activation_time() == rhs.activation_time() && | |
| 44 lhs.started_attempt_count() == rhs.started_attempt_count() && | |
| 45 lhs.completed_attempt_count() == rhs.completed_attempt_count() && | |
| 46 lhs.last_attempt_time() == rhs.last_attempt_time() && | |
| 47 lhs.request_state() == rhs.request_state(); | |
| 48 } | |
| 49 | |
| 50 } // namespace | 39 } // namespace |
| 51 | 40 |
| 52 // Class that serves as a base for testing different implementations of the | 41 // Class that serves as a base for testing different implementations of the |
| 53 // |RequestQueueStore|. Specific implementations extend the templatized version | 42 // |RequestQueueStore|. Specific implementations extend the templatized version |
| 54 // of this class and provide appropriate store factory. | 43 // of this class and provide appropriate store factory. |
| 55 class RequestQueueStoreTestBase : public testing::Test { | 44 class RequestQueueStoreTestBase : public testing::Test { |
| 56 public: | 45 public: |
| 57 RequestQueueStoreTestBase(); | 46 RequestQueueStoreTestBase(); |
| 58 | 47 |
| 59 // Test overrides. | 48 // Test overrides. |
| 60 void TearDown() override; | 49 void TearDown() override; |
| 61 | 50 |
| 62 void PumpLoop(); | 51 void PumpLoop(); |
| 63 void ClearResults(); | 52 void ClearResults(); |
| 64 | 53 |
| 65 // Callback used for get requests. | 54 // Callback used for get requests. |
| 66 void GetRequestsDone(bool result, | 55 void GetRequestsDone(bool result, |
| 67 std::vector<std::unique_ptr<SavePageRequest>> requests); | 56 std::vector<std::unique_ptr<SavePageRequest>> requests); |
| 68 // Callback used for add/update request. | 57 // Callback used for add/update request. |
| 69 void AddOrUpdateDone(UpdateStatus result); | 58 void AddOrUpdateDone(UpdateStatus result); |
| 59 void AddRequestDone(ItemActionStatus status); |
| 70 void UpdateMultipleRequestsDone( | 60 void UpdateMultipleRequestsDone( |
| 71 const RequestQueue::UpdateMultipleRequestResults& results, | 61 const RequestQueue::UpdateMultipleRequestResults& results, |
| 72 std::vector<std::unique_ptr<SavePageRequest>> requests); | 62 std::vector<std::unique_ptr<SavePageRequest>> requests); |
| 73 // Callback used for remove requests. | 63 // Callback used for remove requests. |
| 74 void RemoveDone(const RequestQueue::UpdateMultipleRequestResults& results, | 64 void RemoveDone(const RequestQueue::UpdateMultipleRequestResults& results, |
| 75 std::vector<std::unique_ptr<SavePageRequest>> requests); | 65 std::vector<std::unique_ptr<SavePageRequest>> requests); |
| 76 // Callback used for reset. | 66 // Callback used for reset. |
| 77 void ResetDone(bool result); | 67 void ResetDone(bool result); |
| 78 | 68 |
| 79 LastResult last_result() const { return last_result_; } | 69 LastResult last_result() const { return last_result_; } |
| 80 UpdateStatus last_update_status() const { return last_update_status_; } | 70 UpdateStatus last_update_status() const { return last_update_status_; } |
| 81 const RequestQueue::UpdateMultipleRequestResults& | 71 const RequestQueue::UpdateMultipleRequestResults& |
| 82 last_multiple_update_results() const { | 72 last_multiple_update_results() const { |
| 83 return last_multiple_update_results_; | 73 return last_multiple_update_results_; |
| 84 } | 74 } |
| 85 const RequestQueue::UpdateMultipleRequestResults& last_remove_results() | 75 const RequestQueue::UpdateMultipleRequestResults& last_remove_results() |
| 86 const { | 76 const { |
| 87 return last_remove_results_; | 77 return last_remove_results_; |
| 88 } | 78 } |
| 89 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const { | 79 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const { |
| 90 return last_requests_; | 80 return last_requests_; |
| 91 } | 81 } |
| 82 ItemActionStatus last_add_status() const { return last_add_status_; } |
| 92 | 83 |
| 93 protected: | 84 protected: |
| 94 base::ScopedTempDir temp_directory_; | 85 base::ScopedTempDir temp_directory_; |
| 95 | 86 |
| 96 private: | 87 private: |
| 97 LastResult last_result_; | 88 LastResult last_result_; |
| 98 UpdateStatus last_update_status_; | 89 UpdateStatus last_update_status_; |
| 90 ItemActionStatus last_add_status_; |
| 99 RequestQueue::UpdateMultipleRequestResults last_multiple_update_results_; | 91 RequestQueue::UpdateMultipleRequestResults last_multiple_update_results_; |
| 100 RequestQueue::UpdateMultipleRequestResults last_remove_results_; | 92 RequestQueue::UpdateMultipleRequestResults last_remove_results_; |
| 101 std::vector<std::unique_ptr<SavePageRequest>> last_requests_; | 93 std::vector<std::unique_ptr<SavePageRequest>> last_requests_; |
| 102 | 94 |
| 103 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; | 95 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
| 104 base::ThreadTaskRunnerHandle task_runner_handle_; | 96 base::ThreadTaskRunnerHandle task_runner_handle_; |
| 105 }; | 97 }; |
| 106 | 98 |
| 107 RequestQueueStoreTestBase::RequestQueueStoreTestBase() | 99 RequestQueueStoreTestBase::RequestQueueStoreTestBase() |
| 108 : last_result_(LastResult::kNone), | 100 : last_result_(LastResult::kNone), |
| 109 last_update_status_(UpdateStatus::FAILED), | 101 last_update_status_(UpdateStatus::FAILED), |
| 102 last_add_status_(ItemActionStatus::NOT_FOUND), |
| 110 task_runner_(new base::TestSimpleTaskRunner), | 103 task_runner_(new base::TestSimpleTaskRunner), |
| 111 task_runner_handle_(task_runner_) { | 104 task_runner_handle_(task_runner_) { |
| 112 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir()); | 105 EXPECT_TRUE(temp_directory_.CreateUniqueTempDir()); |
| 113 } | 106 } |
| 114 | 107 |
| 115 void RequestQueueStoreTestBase::TearDown() { | 108 void RequestQueueStoreTestBase::TearDown() { |
| 116 // Wait for all the pieces of the store to delete itself properly. | 109 // Wait for all the pieces of the store to delete itself properly. |
| 117 PumpLoop(); | 110 PumpLoop(); |
| 118 } | 111 } |
| 119 | 112 |
| 120 void RequestQueueStoreTestBase::PumpLoop() { | 113 void RequestQueueStoreTestBase::PumpLoop() { |
| 121 task_runner_->RunUntilIdle(); | 114 task_runner_->RunUntilIdle(); |
| 122 } | 115 } |
| 123 | 116 |
| 124 void RequestQueueStoreTestBase::ClearResults() { | 117 void RequestQueueStoreTestBase::ClearResults() { |
| 125 last_result_ = LastResult::kNone; | 118 last_result_ = LastResult::kNone; |
| 126 last_update_status_ = UpdateStatus::FAILED; | 119 last_update_status_ = UpdateStatus::FAILED; |
| 120 last_add_status_ = ItemActionStatus::NOT_FOUND; |
| 127 last_remove_results_.clear(); | 121 last_remove_results_.clear(); |
| 128 last_requests_.clear(); | 122 last_requests_.clear(); |
| 129 } | 123 } |
| 130 | 124 |
| 131 void RequestQueueStoreTestBase::GetRequestsDone( | 125 void RequestQueueStoreTestBase::GetRequestsDone( |
| 132 bool result, | 126 bool result, |
| 133 std::vector<std::unique_ptr<SavePageRequest>> requests) { | 127 std::vector<std::unique_ptr<SavePageRequest>> requests) { |
| 134 last_result_ = result ? LastResult::kTrue : LastResult::kFalse; | 128 last_result_ = result ? LastResult::kTrue : LastResult::kFalse; |
| 135 last_requests_ = std::move(requests); | 129 last_requests_ = std::move(requests); |
| 136 } | 130 } |
| 137 | 131 |
| 138 void RequestQueueStoreTestBase::AddOrUpdateDone(UpdateStatus status) { | 132 void RequestQueueStoreTestBase::AddOrUpdateDone(UpdateStatus status) { |
| 139 last_update_status_ = status; | 133 last_update_status_ = status; |
| 140 } | 134 } |
| 141 | 135 |
| 136 void RequestQueueStoreTestBase::AddRequestDone(ItemActionStatus status) { |
| 137 last_add_status_ = status; |
| 138 } |
| 139 |
| 142 void RequestQueueStoreTestBase::UpdateMultipleRequestsDone( | 140 void RequestQueueStoreTestBase::UpdateMultipleRequestsDone( |
| 143 const RequestQueue::UpdateMultipleRequestResults& results, | 141 const RequestQueue::UpdateMultipleRequestResults& results, |
| 144 std::vector<std::unique_ptr<SavePageRequest>> requests) { | 142 std::vector<std::unique_ptr<SavePageRequest>> requests) { |
| 145 last_multiple_update_results_ = results; | 143 last_multiple_update_results_ = results; |
| 146 last_requests_ = std::move(requests); | 144 last_requests_ = std::move(requests); |
| 147 } | 145 } |
| 148 | 146 |
| 149 void RequestQueueStoreTestBase::RemoveDone( | 147 void RequestQueueStoreTestBase::RemoveDone( |
| 150 const RequestQueue::UpdateMultipleRequestResults& results, | 148 const RequestQueue::UpdateMultipleRequestResults& results, |
| 151 std::vector<std::unique_ptr<SavePageRequest>> requests) { | 149 std::vector<std::unique_ptr<SavePageRequest>> requests) { |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 ASSERT_EQ(LastResult::kTrue, this->last_result()); | 216 ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| 219 ASSERT_TRUE(this->last_requests().empty()); | 217 ASSERT_TRUE(this->last_requests().empty()); |
| 220 } | 218 } |
| 221 | 219 |
| 222 TYPED_TEST(RequestQueueStoreTest, AddRequest) { | 220 TYPED_TEST(RequestQueueStoreTest, AddRequest) { |
| 223 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); | 221 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); |
| 224 base::Time creation_time = base::Time::Now(); | 222 base::Time creation_time = base::Time::Now(); |
| 225 SavePageRequest request( | 223 SavePageRequest request( |
| 226 kRequestId, kUrl, kClientId, creation_time, kUserRequested); | 224 kRequestId, kUrl, kClientId, creation_time, kUserRequested); |
| 227 | 225 |
| 228 store->AddOrUpdateRequest( | 226 store->AddRequest(request, |
| 229 request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, | 227 base::Bind(&RequestQueueStoreTestBase::AddRequestDone, |
| 230 base::Unretained(this))); | 228 base::Unretained(this))); |
| 231 ASSERT_EQ(UpdateStatus::FAILED, this->last_update_status()); | 229 ASSERT_EQ(ItemActionStatus::NOT_FOUND, this->last_add_status()); |
| 232 this->PumpLoop(); | 230 this->PumpLoop(); |
| 233 ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status()); | 231 ASSERT_EQ(ItemActionStatus::SUCCESS, this->last_add_status()); |
| 234 | 232 |
| 235 // Verifying get reqeust results after a request was added. | 233 // Verifying get reqeust results after a request was added. |
| 236 this->ClearResults(); | 234 this->ClearResults(); |
| 237 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, | 235 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, |
| 238 base::Unretained(this))); | 236 base::Unretained(this))); |
| 239 ASSERT_EQ(LastResult::kNone, this->last_result()); | 237 ASSERT_EQ(LastResult::kNone, this->last_result()); |
| 240 this->PumpLoop(); | 238 this->PumpLoop(); |
| 241 ASSERT_EQ(LastResult::kTrue, this->last_result()); | 239 ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| 242 ASSERT_EQ(1ul, this->last_requests().size()); | 240 ASSERT_EQ(1ul, this->last_requests().size()); |
| 243 ASSERT_TRUE(request == *(this->last_requests()[0])); | 241 ASSERT_EQ(request, *(this->last_requests()[0].get())); |
| 242 |
| 243 // Verify it is not possible to add the same request twice. |
| 244 this->ClearResults(); |
| 245 store->AddRequest(request, |
| 246 base::Bind(&RequestQueueStoreTestBase::AddRequestDone, |
| 247 base::Unretained(this))); |
| 248 ASSERT_EQ(ItemActionStatus::NOT_FOUND, this->last_add_status()); |
| 249 this->PumpLoop(); |
| 250 ASSERT_EQ(ItemActionStatus::ALREADY_EXISTS, this->last_add_status()); |
| 251 |
| 252 // Check that there is still only one item in the store. |
| 253 this->ClearResults(); |
| 254 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, |
| 255 base::Unretained(this))); |
| 256 ASSERT_EQ(LastResult::kNone, this->last_result()); |
| 257 this->PumpLoop(); |
| 258 ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| 259 ASSERT_EQ(1ul, this->last_requests().size()); |
| 244 } | 260 } |
| 245 | 261 |
| 246 TYPED_TEST(RequestQueueStoreTest, UpdateRequest) { | 262 TYPED_TEST(RequestQueueStoreTest, UpdateRequest) { |
| 247 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); | 263 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); |
| 248 base::Time creation_time = base::Time::Now(); | 264 base::Time creation_time = base::Time::Now(); |
| 249 SavePageRequest original_request( | 265 SavePageRequest original_request( |
| 250 kRequestId, kUrl, kClientId, creation_time, kUserRequested); | 266 kRequestId, kUrl, kClientId, creation_time, kUserRequested); |
| 251 store->AddOrUpdateRequest( | 267 store->AddRequest(original_request, |
| 252 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, | 268 base::Bind(&RequestQueueStoreTestBase::AddRequestDone, |
| 253 base::Unretained(this))); | 269 base::Unretained(this))); |
| 254 this->PumpLoop(); | 270 this->PumpLoop(); |
| 255 this->ClearResults(); | 271 this->ClearResults(); |
| 256 | 272 |
| 257 base::Time new_creation_time = | 273 base::Time new_creation_time = |
| 258 creation_time + base::TimeDelta::FromMinutes(1); | 274 creation_time + base::TimeDelta::FromMinutes(1); |
| 259 base::Time activation_time = creation_time + base::TimeDelta::FromHours(6); | 275 base::Time activation_time = creation_time + base::TimeDelta::FromHours(6); |
| 260 SavePageRequest updated_request(kRequestId, kUrl, kClientId, | 276 SavePageRequest updated_request(kRequestId, kUrl, kClientId, |
| 261 new_creation_time, activation_time, | 277 new_creation_time, activation_time, |
| 262 kUserRequested); | 278 kUserRequested); |
| 263 store->AddOrUpdateRequest( | 279 store->AddOrUpdateRequest( |
| 264 updated_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, | 280 updated_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, |
| 265 base::Unretained(this))); | 281 base::Unretained(this))); |
| 266 ASSERT_EQ(UpdateStatus::FAILED, this->last_update_status()); | 282 ASSERT_EQ(UpdateStatus::FAILED, this->last_update_status()); |
| 267 this->PumpLoop(); | 283 this->PumpLoop(); |
| 268 ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status()); | 284 ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status()); |
| 269 | 285 |
| 270 // Verifying get reqeust results after a request was updated. | 286 // Verifying get reqeust results after a request was updated. |
| 271 this->ClearResults(); | 287 this->ClearResults(); |
| 272 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, | 288 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, |
| 273 base::Unretained(this))); | 289 base::Unretained(this))); |
| 274 ASSERT_EQ(LastResult::kNone, this->last_result()); | 290 ASSERT_EQ(LastResult::kNone, this->last_result()); |
| 275 this->PumpLoop(); | 291 this->PumpLoop(); |
| 276 ASSERT_EQ(LastResult::kTrue, this->last_result()); | 292 ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| 277 ASSERT_EQ(1ul, this->last_requests().size()); | 293 ASSERT_EQ(1ul, this->last_requests().size()); |
| 278 ASSERT_TRUE(updated_request == *(this->last_requests()[0].get())); | 294 ASSERT_EQ(updated_request, *(this->last_requests()[0].get())); |
| 279 } | 295 } |
| 280 | 296 |
| 281 TYPED_TEST(RequestQueueStoreTest, RemoveRequests) { | 297 TYPED_TEST(RequestQueueStoreTest, RemoveRequests) { |
| 282 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); | 298 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); |
| 283 base::Time creation_time = base::Time::Now(); | 299 base::Time creation_time = base::Time::Now(); |
| 284 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time, | 300 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time, |
| 285 kUserRequested); | 301 kUserRequested); |
| 286 store->AddOrUpdateRequest( | 302 store->AddRequest(request1, |
| 287 request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, | 303 base::Bind(&RequestQueueStoreTestBase::AddRequestDone, |
| 288 base::Unretained(this))); | 304 base::Unretained(this))); |
| 289 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time, | 305 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time, |
| 290 kUserRequested); | 306 kUserRequested); |
| 291 store->AddOrUpdateRequest( | 307 store->AddRequest(request2, |
| 292 request2, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, | 308 base::Bind(&RequestQueueStoreTestBase::AddRequestDone, |
| 293 base::Unretained(this))); | 309 base::Unretained(this))); |
| 294 this->PumpLoop(); | 310 this->PumpLoop(); |
| 295 this->ClearResults(); | 311 this->ClearResults(); |
| 296 | 312 |
| 297 std::vector<int64_t> request_ids{kRequestId, kRequestId2}; | 313 std::vector<int64_t> request_ids{kRequestId, kRequestId2}; |
| 298 store->RemoveRequests(request_ids, | 314 store->RemoveRequests(request_ids, |
| 299 base::Bind(&RequestQueueStoreTestBase::RemoveDone, | 315 base::Bind(&RequestQueueStoreTestBase::RemoveDone, |
| 300 base::Unretained(this))); | 316 base::Unretained(this))); |
| 301 ASSERT_EQ(0ul, this->last_remove_results().size()); | 317 ASSERT_EQ(0ul, this->last_remove_results().size()); |
| 302 this->PumpLoop(); | 318 this->PumpLoop(); |
| 303 ASSERT_EQ(2ul, this->last_remove_results().size()); | 319 ASSERT_EQ(2ul, this->last_remove_results().size()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 332 ASSERT_EQ(0UL, this->last_requests().size()); | 348 ASSERT_EQ(0UL, this->last_requests().size()); |
| 333 } | 349 } |
| 334 | 350 |
| 335 TYPED_TEST(RequestQueueStoreTest, PauseAndResumeRequest) { | 351 TYPED_TEST(RequestQueueStoreTest, PauseAndResumeRequest) { |
| 336 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); | 352 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); |
| 337 base::Time creation_time = base::Time::Now(); | 353 base::Time creation_time = base::Time::Now(); |
| 338 | 354 |
| 339 // Create request and add it to the queue. | 355 // Create request and add it to the queue. |
| 340 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time, | 356 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time, |
| 341 kUserRequested); | 357 kUserRequested); |
| 342 store->AddOrUpdateRequest( | 358 store->AddRequest(request1, |
| 343 request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, | 359 base::Bind(&RequestQueueStoreTestBase::AddRequestDone, |
| 344 base::Unretained(this))); | 360 base::Unretained(this))); |
| 345 this->PumpLoop(); | 361 this->PumpLoop(); |
| 346 this->ClearResults(); | 362 this->ClearResults(); |
| 347 | 363 |
| 348 // Pause a request. | 364 // Pause a request. |
| 349 std::vector<int64_t> request_ids{kRequestId}; | 365 std::vector<int64_t> request_ids{kRequestId}; |
| 350 store->ChangeRequestsState( | 366 store->ChangeRequestsState( |
| 351 request_ids, SavePageRequest::RequestState::PAUSED, | 367 request_ids, SavePageRequest::RequestState::PAUSED, |
| 352 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone, | 368 base::Bind(&RequestQueueStoreTestBase::UpdateMultipleRequestsDone, |
| 353 base::Unretained(this))); | 369 base::Unretained(this))); |
| 354 ASSERT_EQ(LastResult::kNone, this->last_result()); | 370 ASSERT_EQ(LastResult::kNone, this->last_result()); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE, | 415 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE, |
| 400 this->last_requests().at(0)->request_state()); | 416 this->last_requests().at(0)->request_state()); |
| 401 this->ClearResults(); | 417 this->ClearResults(); |
| 402 } | 418 } |
| 403 | 419 |
| 404 TYPED_TEST(RequestQueueStoreTest, ResetStore) { | 420 TYPED_TEST(RequestQueueStoreTest, ResetStore) { |
| 405 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); | 421 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); |
| 406 base::Time creation_time = base::Time::Now(); | 422 base::Time creation_time = base::Time::Now(); |
| 407 SavePageRequest original_request( | 423 SavePageRequest original_request( |
| 408 kRequestId, kUrl, kClientId, creation_time, kUserRequested); | 424 kRequestId, kUrl, kClientId, creation_time, kUserRequested); |
| 409 store->AddOrUpdateRequest( | 425 store->AddRequest(original_request, |
| 410 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, | 426 base::Bind(&RequestQueueStoreTestBase::AddRequestDone, |
| 411 base::Unretained(this))); | 427 base::Unretained(this))); |
| 412 this->PumpLoop(); | 428 this->PumpLoop(); |
| 413 this->ClearResults(); | 429 this->ClearResults(); |
| 414 | 430 |
| 415 store->Reset(base::Bind(&RequestQueueStoreTestBase::ResetDone, | 431 store->Reset(base::Bind(&RequestQueueStoreTestBase::ResetDone, |
| 416 base::Unretained(this))); | 432 base::Unretained(this))); |
| 417 ASSERT_EQ(LastResult::kNone, this->last_result()); | 433 ASSERT_EQ(LastResult::kNone, this->last_result()); |
| 418 this->PumpLoop(); | 434 this->PumpLoop(); |
| 419 ASSERT_EQ(LastResult::kTrue, this->last_result()); | 435 ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| 420 this->ClearResults(); | 436 this->ClearResults(); |
| 421 | 437 |
| 422 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, | 438 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, |
| 423 base::Unretained(this))); | 439 base::Unretained(this))); |
| 424 this->PumpLoop(); | 440 this->PumpLoop(); |
| 425 ASSERT_EQ(LastResult::kTrue, this->last_result()); | 441 ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| 426 ASSERT_TRUE(this->last_requests().empty()); | 442 ASSERT_TRUE(this->last_requests().empty()); |
| 427 } | 443 } |
| 428 | 444 |
| 429 class RequestQueueStoreSQLTest | 445 class RequestQueueStoreSQLTest |
| 430 : public RequestQueueStoreTest<RequestQueueStoreSQLFactory> {}; | 446 : public RequestQueueStoreTest<RequestQueueStoreSQLFactory> {}; |
| 431 | 447 |
| 432 // Makes sure that persistent DB is actually persisting requests across store | 448 // Makes sure that persistent DB is actually persisting requests across store |
| 433 // restarts. | 449 // restarts. |
| 434 TEST_F(RequestQueueStoreSQLTest, SaveCloseReopenRead) { | 450 TEST_F(RequestQueueStoreSQLTest, SaveCloseReopenRead) { |
| 435 std::unique_ptr<RequestQueueStore> store(BuildStore()); | 451 std::unique_ptr<RequestQueueStore> store(BuildStore()); |
| 436 base::Time creation_time = base::Time::Now(); | 452 base::Time creation_time = base::Time::Now(); |
| 437 SavePageRequest original_request( | 453 SavePageRequest original_request( |
| 438 kRequestId, kUrl, kClientId, creation_time, kUserRequested); | 454 kRequestId, kUrl, kClientId, creation_time, kUserRequested); |
| 439 store->AddOrUpdateRequest( | 455 store->AddRequest(original_request, |
| 440 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, | 456 base::Bind(&RequestQueueStoreTestBase::AddRequestDone, |
| 441 base::Unretained(this))); | 457 base::Unretained(this))); |
| 442 PumpLoop(); | 458 PumpLoop(); |
| 443 ClearResults(); | 459 ClearResults(); |
| 444 | 460 |
| 445 // Resets the store, using the same temp directory. The contents should be | 461 // Resets the store, using the same temp directory. The contents should be |
| 446 // intact. First reset is done separately to release DB lock. | 462 // intact. First reset is done separately to release DB lock. |
| 447 store.reset(); | 463 store.reset(); |
| 448 store = BuildStore(); | 464 store = BuildStore(); |
| 449 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, | 465 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, |
| 450 base::Unretained(this))); | 466 base::Unretained(this))); |
| 451 ASSERT_EQ(LastResult::kNone, this->last_result()); | 467 ASSERT_EQ(LastResult::kNone, this->last_result()); |
| 452 this->PumpLoop(); | 468 this->PumpLoop(); |
| 453 ASSERT_EQ(LastResult::kTrue, this->last_result()); | 469 ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| 454 ASSERT_EQ(1ul, this->last_requests().size()); | 470 ASSERT_EQ(1ul, this->last_requests().size()); |
| 455 ASSERT_TRUE(original_request == *(this->last_requests().at(0).get())); | 471 ASSERT_TRUE(original_request == *(this->last_requests().at(0).get())); |
| 456 } | 472 } |
| 457 | 473 |
| 458 } // offline_pages | 474 } // offline_pages |
| OLD | NEW |