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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: components/offline_pages/background/request_queue_store_unittest.cc
diff --git a/components/offline_pages/background/request_queue_store_unittest.cc b/components/offline_pages/background/request_queue_store_unittest.cc
index 7a75be9d265f4bf3db0c0a934551bcc8d0265ba4..076b650c305f51dc712ec1d71d5b5f2e0c02875f 100644
--- a/components/offline_pages/background/request_queue_store_unittest.cc
+++ b/components/offline_pages/background/request_queue_store_unittest.cc
@@ -22,8 +22,11 @@ using UpdateStatus = RequestQueueStore::UpdateStatus;
namespace {
const int64_t kRequestId = 42;
+const int64_t kRequestId2 = 44;
const GURL kUrl("http://example.com");
+const GURL kUrl2("http://another-example.com");
const ClientId kClientId("bookmark", "1234");
+const ClientId kClientId2("async", "5678");
const bool kUserRequested = true;
enum class LastResult {
@@ -281,7 +284,7 @@ TYPED_TEST(RequestQueueStoreTest, RemoveRequest) {
ASSERT_TRUE(this->last_requests().empty());
this->ClearResults();
- // Removing a request that is missing fails.
+ // Try to remove a request that is not in the queue.
store->RemoveRequests(request_ids,
base::Bind(&RequestQueueStoreTestBase::RemoveDone,
base::Unretained(this)));
@@ -292,6 +295,98 @@ TYPED_TEST(RequestQueueStoreTest, RemoveRequest) {
ASSERT_EQ(0, this->last_remove_count());
}
+TYPED_TEST(RequestQueueStoreTest, RemoveRequestByClientId) {
+ std::unique_ptr<RequestQueueStore> store(this->BuildStore());
+ base::Time creation_time = base::Time::Now();
+
+ // Create requests and add them to the queue.
+ SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
+ kUserRequested);
+ SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
+ kUserRequested);
+ store->AddOrUpdateRequest(
+ request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
+ base::Unretained(this)));
+ store->AddOrUpdateRequest(
+ request2, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
+ base::Unretained(this)));
+ this->PumpLoop();
+ this->ClearResults();
+
+ // Remove a request.
+ std::vector<ClientId> client_ids_to_delete{kClientId};
+ store->RemoveRequestsByClientId(
+ client_ids_to_delete,
+ base::Bind(
+ &RequestQueueStoreTestBase::RemoveDone, base::Unretained(this)));
+ ASSERT_EQ(LastResult::kNone, this->last_result());
+ ASSERT_EQ(0, this->last_remove_count());
+ this->PumpLoop();
+ ASSERT_EQ(LastResult::kTrue, this->last_result());
+ ASSERT_EQ(1, this->last_remove_count());
+ this->ClearResults();
+
+ // Check to see what remains in the queue. Removed request should be gone.
+ store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
+ base::Unretained(this)));
+ this->PumpLoop();
+ ASSERT_EQ(LastResult::kTrue, this->last_result());
+ // The other request should still be in the queue.
+ ASSERT_EQ(1UL, this->last_requests().size());
+ ASSERT_EQ(kClientId2, this->last_requests().at(0).client_id());
+ this->ClearResults();
+
+ // Try to remove a request that is not in the queue.
+ store->RemoveRequestsByClientId(
+ client_ids_to_delete,
+ base::Bind(
+ &RequestQueueStoreTestBase::RemoveDone, base::Unretained(this)));
+ this->PumpLoop();
+ ASSERT_EQ(LastResult::kTrue, this->last_result());
+ ASSERT_EQ(0, this->last_remove_count());
+}
+
+TYPED_TEST(RequestQueueStoreTest, RemoveRequestWithSameClientId) {
+ std::unique_ptr<RequestQueueStore> store(this->BuildStore());
+ base::Time creation_time = base::Time::Now();
+
+ // Create requests and add them to the queue.
+ SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time,
+ kUserRequested);
+ SavePageRequest request2(kRequestId2, kUrl2, kClientId, creation_time,
+ kUserRequested);
+ store->AddOrUpdateRequest(
+ request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
+ base::Unretained(this)));
+ store->AddOrUpdateRequest(
+ request2, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone,
+ base::Unretained(this)));
+ this->PumpLoop();
+ this->ClearResults();
+
+ // Remove a request.
+ std::vector<ClientId> client_ids_to_delete{kClientId};
+ store->RemoveRequestsByClientId(
+ client_ids_to_delete,
+ base::Bind(
+ &RequestQueueStoreTestBase::RemoveDone, base::Unretained(this)));
+ ASSERT_EQ(LastResult::kNone, this->last_result());
+ ASSERT_EQ(0, this->last_remove_count());
+ this->PumpLoop();
+ ASSERT_EQ(LastResult::kTrue, this->last_result());
+ ASSERT_EQ(2, this->last_remove_count());
+ this->ClearResults();
+
+ // Check to see what remains in the queue. Removed request should be gone.
+ store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone,
+ base::Unretained(this)));
+ this->PumpLoop();
+ ASSERT_EQ(LastResult::kTrue, this->last_result());
+ // The other request should still be in the queue.
+ ASSERT_TRUE(this->last_requests().empty());
+ this->ClearResults();
+}
+
TYPED_TEST(RequestQueueStoreTest, ResetStore) {
std::unique_ptr<RequestQueueStore> store(this->BuildStore());
base::Time creation_time = base::Time::Now();

Powered by Google App Engine
This is Rietveld 408576698