| 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.h" | 5 #include "components/offline_pages/background/request_queue.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/test/test_simple_task_runner.h" | 10 #include "base/test/test_simple_task_runner.h" |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 | 155 |
| 156 TEST_F(RequestQueueTest, RemoveRequest) { | 156 TEST_F(RequestQueueTest, RemoveRequest) { |
| 157 base::Time creation_time = base::Time::Now(); | 157 base::Time creation_time = base::Time::Now(); |
| 158 SavePageRequest request( | 158 SavePageRequest request( |
| 159 kRequestId, kUrl, kClientId, creation_time, kUserRequested); | 159 kRequestId, kUrl, kClientId, creation_time, kUserRequested); |
| 160 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone, | 160 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone, |
| 161 base::Unretained(this))); | 161 base::Unretained(this))); |
| 162 PumpLoop(); | 162 PumpLoop(); |
| 163 ASSERT_EQ(kRequestId, last_added_request()->request_id()); | 163 ASSERT_EQ(kRequestId, last_added_request()->request_id()); |
| 164 | 164 |
| 165 queue()->RemoveRequest( | 165 std::vector<int64_t> remove_requests; |
| 166 kRequestId, | 166 remove_requests.push_back(kRequestId); |
| 167 queue()->RemoveRequests( |
| 168 remove_requests, |
| 167 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this))); | 169 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this))); |
| 168 PumpLoop(); | 170 PumpLoop(); |
| 169 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_result()); | 171 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_result()); |
| 170 | 172 |
| 171 queue()->GetRequests( | 173 queue()->GetRequests( |
| 172 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); | 174 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); |
| 173 PumpLoop(); | 175 PumpLoop(); |
| 174 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); | 176 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); |
| 175 ASSERT_EQ(0ul, last_requests().size()); | 177 ASSERT_EQ(0ul, last_requests().size()); |
| 176 } | 178 } |
| 177 | 179 |
| 178 TEST_F(RequestQueueTest, RemoveRequestByClientId) { | |
| 179 base::Time creation_time = base::Time::Now(); | |
| 180 // Put two requests on the queue with different client IDs. | |
| 181 SavePageRequest request(kRequestId, kUrl, kClientId, creation_time, | |
| 182 kUserRequested); | |
| 183 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone, | |
| 184 base::Unretained(this))); | |
| 185 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time, | |
| 186 kUserRequested); | |
| 187 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone, | |
| 188 base::Unretained(this))); | |
| 189 PumpLoop(); | |
| 190 | |
| 191 queue()->GetRequests( | |
| 192 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); | |
| 193 PumpLoop(); | |
| 194 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); | |
| 195 ASSERT_EQ(2ul, last_requests().size()); | |
| 196 | |
| 197 std::vector<ClientId> client_ids; | |
| 198 client_ids.push_back(kClientId); | |
| 199 | |
| 200 // Removing the first client ID should leave only the second on the queue. | |
| 201 queue()->RemoveRequestsByClientId( | |
| 202 client_ids, | |
| 203 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this))); | |
| 204 PumpLoop(); | |
| 205 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_result()); | |
| 206 | |
| 207 queue()->GetRequests( | |
| 208 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); | |
| 209 PumpLoop(); | |
| 210 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); | |
| 211 ASSERT_EQ(1ul, last_requests().size()); | |
| 212 ASSERT_EQ(kClientId2, last_requests().front().client_id()); | |
| 213 } | |
| 214 | |
| 215 // A longer test populating the request queue with more than one item, properly | 180 // A longer test populating the request queue with more than one item, properly |
| 216 // listing multiple items and removing the right item. | 181 // listing multiple items and removing the right item. |
| 217 TEST_F(RequestQueueTest, MultipleRequestsAddGetRemove) { | 182 TEST_F(RequestQueueTest, MultipleRequestsAddGetRemove) { |
| 218 base::Time creation_time = base::Time::Now(); | 183 base::Time creation_time = base::Time::Now(); |
| 219 SavePageRequest request1( | 184 SavePageRequest request1( |
| 220 kRequestId, kUrl, kClientId, creation_time, kUserRequested); | 185 kRequestId, kUrl, kClientId, creation_time, kUserRequested); |
| 221 queue()->AddRequest(request1, base::Bind(&RequestQueueTest::AddRequestDone, | 186 queue()->AddRequest(request1, base::Bind(&RequestQueueTest::AddRequestDone, |
| 222 base::Unretained(this))); | 187 base::Unretained(this))); |
| 223 PumpLoop(); | 188 PumpLoop(); |
| 224 ASSERT_EQ(request1.request_id(), last_added_request()->request_id()); | 189 ASSERT_EQ(request1.request_id(), last_added_request()->request_id()); |
| 225 SavePageRequest request2( | 190 SavePageRequest request2( |
| 226 kRequestId2, kUrl2, kClientId2, creation_time, kUserRequested); | 191 kRequestId2, kUrl2, kClientId2, creation_time, kUserRequested); |
| 227 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone, | 192 queue()->AddRequest(request2, base::Bind(&RequestQueueTest::AddRequestDone, |
| 228 base::Unretained(this))); | 193 base::Unretained(this))); |
| 229 PumpLoop(); | 194 PumpLoop(); |
| 230 ASSERT_EQ(request2.request_id(), last_added_request()->request_id()); | 195 ASSERT_EQ(request2.request_id(), last_added_request()->request_id()); |
| 231 | 196 |
| 232 queue()->GetRequests( | 197 queue()->GetRequests( |
| 233 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); | 198 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); |
| 234 PumpLoop(); | 199 PumpLoop(); |
| 235 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); | 200 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); |
| 236 ASSERT_EQ(2ul, last_requests().size()); | 201 ASSERT_EQ(2ul, last_requests().size()); |
| 237 | 202 |
| 238 queue()->RemoveRequest( | 203 std::vector<int64_t> remove_requests; |
| 239 request1.request_id(), | 204 remove_requests.push_back(request1.request_id()); |
| 205 queue()->RemoveRequests( |
| 206 remove_requests, |
| 240 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this))); | 207 base::Bind(&RequestQueueTest::RemoveRequestDone, base::Unretained(this))); |
| 241 PumpLoop(); | 208 PumpLoop(); |
| 242 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_result()); | 209 ASSERT_EQ(UpdateRequestResult::SUCCESS, last_remove_result()); |
| 243 | 210 |
| 244 queue()->GetRequests( | 211 queue()->GetRequests( |
| 245 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); | 212 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); |
| 246 PumpLoop(); | 213 PumpLoop(); |
| 247 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); | 214 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); |
| 248 ASSERT_EQ(1ul, last_requests().size()); | 215 ASSERT_EQ(1ul, last_requests().size()); |
| 249 ASSERT_EQ(request2.request_id(), last_requests()[0].request_id()); | 216 ASSERT_EQ(request2.request_id(), last_requests()[0].request_id()); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 | 255 |
| 289 // Try to update request1 when only request2 is in the queue. | 256 // Try to update request1 when only request2 is in the queue. |
| 290 queue()->UpdateRequest( | 257 queue()->UpdateRequest( |
| 291 request1, | 258 request1, |
| 292 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this))); | 259 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this))); |
| 293 PumpLoop(); | 260 PumpLoop(); |
| 294 ASSERT_EQ(UpdateRequestResult::REQUEST_DOES_NOT_EXIST, last_update_result()); | 261 ASSERT_EQ(UpdateRequestResult::REQUEST_DOES_NOT_EXIST, last_update_result()); |
| 295 } | 262 } |
| 296 | 263 |
| 297 } // namespace offline_pages | 264 } // namespace offline_pages |
| OLD | NEW |