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

Side by Side Diff: components/offline_pages/background/request_queue_store_unittest.cc

Issue 2228813003: Changes to fit better with the needs of the download manager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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"
11 #include "base/files/scoped_temp_dir.h" 11 #include "base/files/scoped_temp_dir.h"
12 #include "base/test/test_simple_task_runner.h" 12 #include "base/test/test_simple_task_runner.h"
13 #include "base/threading/thread_task_runner_handle.h" 13 #include "base/threading/thread_task_runner_handle.h"
14 #include "components/offline_pages/background/request_queue_in_memory_store.h" 14 #include "components/offline_pages/background/request_queue_in_memory_store.h"
15 #include "components/offline_pages/background/request_queue_store_sql.h" 15 #include "components/offline_pages/background/request_queue_store_sql.h"
16 #include "components/offline_pages/background/save_page_request.h" 16 #include "components/offline_pages/background/save_page_request.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 namespace offline_pages { 19 namespace offline_pages {
20 20
21 using UpdateStatus = RequestQueueStore::UpdateStatus; 21 using UpdateStatus = RequestQueueStore::UpdateStatus;
22 22
23 namespace { 23 namespace {
24 const int64_t kRequestId = 42; 24 const int64_t kRequestId = 42;
25 const int64_t kRequestId2 = 44;
26 const GURL kUrl("http://example.com"); 25 const GURL kUrl("http://example.com");
27 const GURL kUrl2("http://another-example.com"); 26 const GURL kUrl2("http://another-example.com");
28 const ClientId kClientId("bookmark", "1234"); 27 const ClientId kClientId("bookmark", "1234");
29 const ClientId kClientId2("async", "5678"); 28 const ClientId kClientId2("async", "5678");
30 const bool kUserRequested = true; 29 const bool kUserRequested = true;
31 30
32 enum class LastResult { 31 enum class LastResult {
33 kNone, 32 kNone,
34 kFalse, 33 kFalse,
35 kTrue, 34 kTrue,
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 store->RemoveRequests(request_ids, 289 store->RemoveRequests(request_ids,
291 base::Bind(&RequestQueueStoreTestBase::RemoveDone, 290 base::Bind(&RequestQueueStoreTestBase::RemoveDone,
292 base::Unretained(this))); 291 base::Unretained(this)));
293 ASSERT_EQ(LastResult::kNone, this->last_result()); 292 ASSERT_EQ(LastResult::kNone, this->last_result());
294 ASSERT_EQ(0, this->last_remove_count()); 293 ASSERT_EQ(0, this->last_remove_count());
295 this->PumpLoop(); 294 this->PumpLoop();
296 ASSERT_EQ(LastResult::kTrue, this->last_result()); 295 ASSERT_EQ(LastResult::kTrue, this->last_result());
297 ASSERT_EQ(0, this->last_remove_count()); 296 ASSERT_EQ(0, this->last_remove_count());
298 } 297 }
299 298
300 TYPED_TEST(RequestQueueStoreTest, RemoveRequestByClientId) {
301 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
302 base::Time creation_time = base::Time::Now();
303
304 // Create requests and add them to the queue.
305 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
306 kUserRequested);
307 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
308 kUserRequested);
309 store->AddOrUpdateRequest(
310 request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
311 base::Unretained(this)));
312 store->AddOrUpdateRequest(
313 request2, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
314 base::Unretained(this)));
315 this->PumpLoop();
316 this->ClearResults();
317
318 // Remove a request.
319 std::vector<ClientId> client_ids_to_delete{kClientId};
320 store->RemoveRequestsByClientId(
321 client_ids_to_delete,
322 base::Bind(
323 &RequestQueueStoreTestBase::RemoveDone, base::Unretained(this)));
324 ASSERT_EQ(LastResult::kNone, this->last_result());
325 ASSERT_EQ(0, this->last_remove_count());
326 this->PumpLoop();
327 ASSERT_EQ(LastResult::kTrue, this->last_result());
328 ASSERT_EQ(1, this->last_remove_count());
329 this->ClearResults();
330
331 // Check to see what remains in the queue. Removed request should be gone.
332 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
333 base::Unretained(this)));
334 this->PumpLoop();
335 ASSERT_EQ(LastResult::kTrue, this->last_result());
336 // The other request should still be in the queue.
337 ASSERT_EQ(1UL, this->last_requests().size());
338 ASSERT_EQ(kClientId2, this->last_requests().at(0).client_id());
339 this->ClearResults();
340
341 // Try to remove a request that is not in the queue.
342 store->RemoveRequestsByClientId(
343 client_ids_to_delete,
344 base::Bind(
345 &RequestQueueStoreTestBase::RemoveDone, base::Unretained(this)));
346 this->PumpLoop();
347 ASSERT_EQ(LastResult::kTrue, this->last_result());
348 ASSERT_EQ(0, this->last_remove_count());
349 }
350
351 TYPED_TEST(RequestQueueStoreTest, RemoveRequestWithSameClientId) {
352 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
353 base::Time creation_time = base::Time::Now();
354
355 // Create requests and add them to the queue.
356 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
357 kUserRequested);
358 SavePageRequest request2(kRequestId2, kUrl2, kClientId, creation_time,
359 kUserRequested);
360 store->AddOrUpdateRequest(
361 request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
362 base::Unretained(this)));
363 store->AddOrUpdateRequest(
364 request2, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
365 base::Unretained(this)));
366 this->PumpLoop();
367 this->ClearResults();
368
369 // Remove a request.
370 std::vector<ClientId> client_ids_to_delete{kClientId};
371 store->RemoveRequestsByClientId(
372 client_ids_to_delete,
373 base::Bind(
374 &RequestQueueStoreTestBase::RemoveDone, base::Unretained(this)));
375 ASSERT_EQ(LastResult::kNone, this->last_result());
376 ASSERT_EQ(0, this->last_remove_count());
377 this->PumpLoop();
378 ASSERT_EQ(LastResult::kTrue, this->last_result());
379 ASSERT_EQ(2, this->last_remove_count());
380 this->ClearResults();
381
382 // Check to see what remains in the queue. Removed request should be gone.
383 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
384 base::Unretained(this)));
385 this->PumpLoop();
386 ASSERT_EQ(LastResult::kTrue, this->last_result());
387 // The other request should still be in the queue.
388 ASSERT_TRUE(this->last_requests().empty());
389 this->ClearResults();
390 }
391
392 TYPED_TEST(RequestQueueStoreTest, ResetStore) { 299 TYPED_TEST(RequestQueueStoreTest, ResetStore) {
393 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); 300 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
394 base::Time creation_time = base::Time::Now(); 301 base::Time creation_time = base::Time::Now();
395 SavePageRequest original_request( 302 SavePageRequest original_request(
396 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 303 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
397 store->AddOrUpdateRequest( 304 store->AddOrUpdateRequest(
398 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, 305 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
399 base::Unretained(this))); 306 base::Unretained(this)));
400 this->PumpLoop(); 307 this->PumpLoop();
401 this->ClearResults(); 308 this->ClearResults();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 344 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
438 base::Unretained(this))); 345 base::Unretained(this)));
439 ASSERT_EQ(LastResult::kNone, this->last_result()); 346 ASSERT_EQ(LastResult::kNone, this->last_result());
440 this->PumpLoop(); 347 this->PumpLoop();
441 ASSERT_EQ(LastResult::kTrue, this->last_result()); 348 ASSERT_EQ(LastResult::kTrue, this->last_result());
442 ASSERT_EQ(1ul, this->last_requests().size()); 349 ASSERT_EQ(1ul, this->last_requests().size());
443 ASSERT_TRUE(original_request == this->last_requests()[0]); 350 ASSERT_TRUE(original_request == this->last_requests()[0]);
444 } 351 }
445 352
446 } // offline_pages 353 } // offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698