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

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

Issue 2197573003: Provide API in RequestCoordinator to remove results by client ID. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comment changes per feedback 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;
25 const GURL kUrl("http://example.com"); 26 const GURL kUrl("http://example.com");
27 const GURL kUrl2("http://another-example.com");
26 const ClientId kClientId("bookmark", "1234"); 28 const ClientId kClientId("bookmark", "1234");
29 const ClientId kClientId2("async", "5678");
27 const bool kUserRequested = true; 30 const bool kUserRequested = true;
28 31
29 enum class LastResult { 32 enum class LastResult {
30 kNone, 33 kNone,
31 kFalse, 34 kFalse,
32 kTrue, 35 kTrue,
33 }; 36 };
34 37
35 bool operator==(const SavePageRequest& lhs, const SavePageRequest& rhs) { 38 bool operator==(const SavePageRequest& lhs, const SavePageRequest& rhs) {
36 return lhs.request_id() == rhs.request_id() && lhs.url() == rhs.url() && 39 return lhs.request_id() == rhs.request_id() && lhs.url() == rhs.url() &&
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 ASSERT_EQ(1, this->last_remove_count()); 277 ASSERT_EQ(1, this->last_remove_count());
275 this->ClearResults(); 278 this->ClearResults();
276 279
277 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 280 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
278 base::Unretained(this))); 281 base::Unretained(this)));
279 this->PumpLoop(); 282 this->PumpLoop();
280 ASSERT_EQ(LastResult::kTrue, this->last_result()); 283 ASSERT_EQ(LastResult::kTrue, this->last_result());
281 ASSERT_TRUE(this->last_requests().empty()); 284 ASSERT_TRUE(this->last_requests().empty());
282 this->ClearResults(); 285 this->ClearResults();
283 286
284 // Removing a request that is missing fails. 287 // Try to remove a request that is not in the queue.
285 store->RemoveRequests(request_ids, 288 store->RemoveRequests(request_ids,
286 base::Bind(&RequestQueueStoreTestBase::RemoveDone, 289 base::Bind(&RequestQueueStoreTestBase::RemoveDone,
287 base::Unretained(this))); 290 base::Unretained(this)));
288 ASSERT_EQ(LastResult::kNone, this->last_result()); 291 ASSERT_EQ(LastResult::kNone, this->last_result());
289 ASSERT_EQ(0, this->last_remove_count()); 292 ASSERT_EQ(0, this->last_remove_count());
290 this->PumpLoop(); 293 this->PumpLoop();
291 ASSERT_EQ(LastResult::kTrue, this->last_result()); 294 ASSERT_EQ(LastResult::kTrue, this->last_result());
292 ASSERT_EQ(0, this->last_remove_count()); 295 ASSERT_EQ(0, this->last_remove_count());
293 } 296 }
294 297
298 TYPED_TEST(RequestQueueStoreTest, RemoveRequestByClientId) {
299 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
300 base::Time creation_time = base::Time::Now();
301
302 // Create requests and add them to the queue.
303 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
304 kUserRequested);
305 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
306 kUserRequested);
307 store->AddOrUpdateRequest(
308 request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
309 base::Unretained(this)));
310 store->AddOrUpdateRequest(
311 request2, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
312 base::Unretained(this)));
313 this->PumpLoop();
314 this->ClearResults();
315
316 // Remove a request.
317 std::vector<ClientId> client_ids_to_delete{kClientId};
318 store->RemoveRequestsByClientId(
319 client_ids_to_delete,
320 base::Bind(
321 &RequestQueueStoreTestBase::RemoveDone, base::Unretained(this)));
322 ASSERT_EQ(LastResult::kNone, this->last_result());
323 ASSERT_EQ(0, this->last_remove_count());
324 this->PumpLoop();
325 ASSERT_EQ(LastResult::kTrue, this->last_result());
326 ASSERT_EQ(1, this->last_remove_count());
327 this->ClearResults();
328
329 // Check to see what remains in the queue. Removed request should be gone.
330 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
331 base::Unretained(this)));
332 this->PumpLoop();
333 ASSERT_EQ(LastResult::kTrue, this->last_result());
334 // The other request should still be in the queue.
335 ASSERT_EQ(1UL, this->last_requests().size());
336 ASSERT_EQ(kClientId2, this->last_requests().at(0).client_id());
337 this->ClearResults();
338
339 // Try to remove a request that is not in the queue.
340 store->RemoveRequestsByClientId(
341 client_ids_to_delete,
342 base::Bind(
343 &RequestQueueStoreTestBase::RemoveDone, base::Unretained(this)));
344 this->PumpLoop();
345 ASSERT_EQ(LastResult::kTrue, this->last_result());
346 ASSERT_EQ(0, this->last_remove_count());
347 }
348
349 TYPED_TEST(RequestQueueStoreTest, RemoveRequestWithSameClientId) {
350 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
351 base::Time creation_time = base::Time::Now();
352
353 // Create requests and add them to the queue.
354 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
355 kUserRequested);
356 SavePageRequest request2(kRequestId2, kUrl2, kClientId, creation_time,
357 kUserRequested);
358 store->AddOrUpdateRequest(
359 request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
360 base::Unretained(this)));
361 store->AddOrUpdateRequest(
362 request2, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
363 base::Unretained(this)));
364 this->PumpLoop();
365 this->ClearResults();
366
367 // Remove a request.
368 std::vector<ClientId> client_ids_to_delete{kClientId};
369 store->RemoveRequestsByClientId(
370 client_ids_to_delete,
371 base::Bind(
372 &RequestQueueStoreTestBase::RemoveDone, base::Unretained(this)));
373 ASSERT_EQ(LastResult::kNone, this->last_result());
374 ASSERT_EQ(0, this->last_remove_count());
375 this->PumpLoop();
376 ASSERT_EQ(LastResult::kTrue, this->last_result());
377 ASSERT_EQ(2, this->last_remove_count());
378 this->ClearResults();
379
380 // Check to see what remains in the queue. Removed request should be gone.
381 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
382 base::Unretained(this)));
383 this->PumpLoop();
384 ASSERT_EQ(LastResult::kTrue, this->last_result());
385 // The other request should still be in the queue.
386 ASSERT_TRUE(this->last_requests().empty());
387 this->ClearResults();
388 }
389
295 TYPED_TEST(RequestQueueStoreTest, ResetStore) { 390 TYPED_TEST(RequestQueueStoreTest, ResetStore) {
296 std::unique_ptr<RequestQueueStore> store(this->BuildStore()); 391 std::unique_ptr<RequestQueueStore> store(this->BuildStore());
297 base::Time creation_time = base::Time::Now(); 392 base::Time creation_time = base::Time::Now();
298 SavePageRequest original_request( 393 SavePageRequest original_request(
299 kRequestId, kUrl, kClientId, creation_time, kUserRequested); 394 kRequestId, kUrl, kClientId, creation_time, kUserRequested);
300 store->AddOrUpdateRequest( 395 store->AddOrUpdateRequest(
301 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, 396 original_request, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
302 base::Unretained(this))); 397 base::Unretained(this)));
303 this->PumpLoop(); 398 this->PumpLoop();
304 this->ClearResults(); 399 this->ClearResults();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, 435 store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
341 base::Unretained(this))); 436 base::Unretained(this)));
342 ASSERT_EQ(LastResult::kNone, this->last_result()); 437 ASSERT_EQ(LastResult::kNone, this->last_result());
343 this->PumpLoop(); 438 this->PumpLoop();
344 ASSERT_EQ(LastResult::kTrue, this->last_result()); 439 ASSERT_EQ(LastResult::kTrue, this->last_result());
345 ASSERT_EQ(1ul, this->last_requests().size()); 440 ASSERT_EQ(1ul, this->last_requests().size());
346 ASSERT_TRUE(original_request == this->last_requests()[0]); 441 ASSERT_TRUE(original_request == this->last_requests()[0]);
347 } 442 }
348 443
349 } // offline_pages 444 } // offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698