| 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 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 ASSERT_EQ(2ul, this->last_remove_results().size()); | 305 ASSERT_EQ(2ul, this->last_remove_results().size()); |
| 306 // Since the SQL statement returns true on a delete of an item that isn't | 306 // Since the SQL statement returns true on a delete of an item that isn't |
| 307 // present, SQL is returning SUCCESS, but the memory is returning | 307 // present, SQL is returning SUCCESS, but the memory is returning |
| 308 // REQUEST_DOES_NOT_EXIST, so we just check that the result is not failure. | 308 // REQUEST_DOES_NOT_EXIST, so we just check that the result is not failure. |
| 309 ASSERT_NE(RequestQueue::UpdateRequestResult::STORE_FAILURE, | 309 ASSERT_NE(RequestQueue::UpdateRequestResult::STORE_FAILURE, |
| 310 this->last_remove_results().at(0).second); | 310 this->last_remove_results().at(0).second); |
| 311 ASSERT_NE(RequestQueue::UpdateRequestResult::STORE_FAILURE, | 311 ASSERT_NE(RequestQueue::UpdateRequestResult::STORE_FAILURE, |
| 312 this->last_remove_results().at(1).second); | 312 this->last_remove_results().at(1).second); |
| 313 } | 313 } |
| 314 | 314 |
| 315 TYPED_TEST(RequestQueueStoreTest, PauseAndResumeRequest) { |
| 316 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); |
| 317 base::Time creation_time = base::Time::Now(); |
| 318 |
| 319 // Create request and add it to the queue. |
| 320 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time, |
| 321 kUserRequested); |
| 322 store->AddOrUpdateRequest( |
| 323 request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, |
| 324 base::Unretained(this))); |
| 325 this->PumpLoop(); |
| 326 this->ClearResults(); |
| 327 |
| 328 // Pause a request. |
| 329 std::vector<int64_t> request_ids{kRequestId}; |
| 330 store->ChangeRequestsState( |
| 331 request_ids, SavePageRequest::RequestState::PAUSED, |
| 332 base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, |
| 333 base::Unretained(this))); |
| 334 ASSERT_EQ(LastResult::kNone, this->last_result()); |
| 335 this->PumpLoop(); |
| 336 |
| 337 // Verify pause succeeded |
| 338 ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status()); |
| 339 this->ClearResults(); |
| 340 |
| 341 // Get the request from the queue to check it out |
| 342 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, |
| 343 base::Unretained(this))); |
| 344 this->PumpLoop(); |
| 345 ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| 346 // The request should still be in the queue. |
| 347 ASSERT_EQ(1UL, this->last_requests().size()); |
| 348 // Request 1 should be paused. |
| 349 ASSERT_EQ(SavePageRequest::RequestState::PAUSED, |
| 350 this->last_requests().at(0).request_state()); |
| 351 this->ClearResults(); |
| 352 |
| 353 // Now resume the same request we paused. |
| 354 store->ChangeRequestsState( |
| 355 request_ids, SavePageRequest::RequestState::AVAILABLE, |
| 356 base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, |
| 357 base::Unretained(this))); |
| 358 ASSERT_EQ(LastResult::kNone, this->last_result()); |
| 359 this->PumpLoop(); |
| 360 |
| 361 // Verify resume succeeded. |
| 362 ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status()); |
| 363 this->ClearResults(); |
| 364 |
| 365 // Get the request from the queue to check it out |
| 366 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, |
| 367 base::Unretained(this))); |
| 368 this->PumpLoop(); |
| 369 ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| 370 // The request should still be in the queue. |
| 371 ASSERT_EQ(1UL, this->last_requests().size()); |
| 372 // Request 1 should be paused. |
| 373 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE, |
| 374 this->last_requests().at(0).request_state()); |
| 375 this->ClearResults(); |
| 376 } |
| 377 |
| 315 TYPED_TEST(RequestQueueStoreTest, ResetStore) { | 378 TYPED_TEST(RequestQueueStoreTest, ResetStore) { |
| 316 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); | 379 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); |
| 317 base::Time creation_time = base::Time::Now(); | 380 base::Time creation_time = base::Time::Now(); |
| 318 SavePageRequest original_request( | 381 SavePageRequest original_request( |
| 319 kRequestId, kUrl, kClientId, creation_time, kUserRequested); | 382 kRequestId, kUrl, kClientId, creation_time, kUserRequested); |
| 320 store->AddOrUpdateRequest( | 383 store->AddOrUpdateRequest( |
| 321 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, | 384 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, |
| 322 base::Unretained(this))); | 385 base::Unretained(this))); |
| 323 this->PumpLoop(); | 386 this->PumpLoop(); |
| 324 this->ClearResults(); | 387 this->ClearResults(); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, | 423 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, |
| 361 base::Unretained(this))); | 424 base::Unretained(this))); |
| 362 ASSERT_EQ(LastResult::kNone, this->last_result()); | 425 ASSERT_EQ(LastResult::kNone, this->last_result()); |
| 363 this->PumpLoop(); | 426 this->PumpLoop(); |
| 364 ASSERT_EQ(LastResult::kTrue, this->last_result()); | 427 ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| 365 ASSERT_EQ(1ul, this->last_requests().size()); | 428 ASSERT_EQ(1ul, this->last_requests().size()); |
| 366 ASSERT_TRUE(original_request == this->last_requests()[0]); | 429 ASSERT_TRUE(original_request == this->last_requests()[0]); |
| 367 } | 430 } |
| 368 | 431 |
| 369 } // offline_pages | 432 } // offline_pages |
| OLD | NEW |