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

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

Issue 2262423002: Use a vector of smart pointers for callback return type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Logical merge fixes Created 4 years, 3 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_coordinator.h" 5 #include "components/offline_pages/background/request_coordinator.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 void WaitingCallbackFunction(bool result) { 205 void WaitingCallbackFunction(bool result) {
206 waiter_.Signal(); 206 waiter_.Signal();
207 } 207 }
208 208
209 // Callback for Add requests. 209 // Callback for Add requests.
210 void AddRequestDone(RequestQueue::AddRequestResult result, 210 void AddRequestDone(RequestQueue::AddRequestResult result,
211 const SavePageRequest& request); 211 const SavePageRequest& request);
212 212
213 // Callback for getting requests. 213 // Callback for getting requests.
214 void GetRequestsDone(RequestQueue::GetRequestsResult result, 214 void GetRequestsDone(RequestQueue::GetRequestsResult result,
215 const std::vector<SavePageRequest>& requests); 215 std::vector<std::unique_ptr<SavePageRequest>> requests);
216 216
217 // Callback for removing requests. 217 // Callback for removing requests.
218 void RemoveRequestsDone( 218 void RemoveRequestsDone(
219 const RequestQueue::UpdateMultipleRequestResults& results); 219 const RequestQueue::UpdateMultipleRequestResults& results);
220 220
221 // Callback for getting request statuses. 221 // Callback for getting request statuses.
222 void GetQueuedRequestsDone(const std::vector<SavePageRequest>& requests); 222 void GetQueuedRequestsDone(
223 std::vector<std::unique_ptr<SavePageRequest>> requests);
223 224
224 void SendOfflinerDoneCallback(const SavePageRequest& request, 225 void SendOfflinerDoneCallback(const SavePageRequest& request,
225 Offliner::RequestStatus status); 226 Offliner::RequestStatus status);
226 227
227 RequestQueue::GetRequestsResult last_get_requests_result() const { 228 RequestQueue::GetRequestsResult last_get_requests_result() const {
228 return last_get_requests_result_; 229 return last_get_requests_result_;
229 } 230 }
230 231
231 const std::vector<SavePageRequest>& last_requests() const { 232 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const {
232 return last_requests_; 233 return last_requests_;
233 } 234 }
234 235
235 const RequestQueue::UpdateMultipleRequestResults& last_remove_results() 236 const RequestQueue::UpdateMultipleRequestResults& last_remove_results()
236 const { 237 const {
237 return last_remove_results_; 238 return last_remove_results_;
238 } 239 }
239 240
240 void EnableOfflinerCallback(bool enable) { 241 void EnableOfflinerCallback(bool enable) {
241 offliner_->enable_callback(enable); 242 offliner_->enable_callback(enable);
(...skipping 18 matching lines...) Expand all
260 Offliner::RequestStatus last_offlining_status() const { 261 Offliner::RequestStatus last_offlining_status() const {
261 return coordinator_->last_offlining_status_; 262 return coordinator_->last_offlining_status_;
262 } 263 }
263 264
264 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); } 265 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); }
265 266
266 ObserverStub observer() { return observer_; } 267 ObserverStub observer() { return observer_; }
267 268
268 private: 269 private:
269 RequestQueue::GetRequestsResult last_get_requests_result_; 270 RequestQueue::GetRequestsResult last_get_requests_result_;
270 std::vector<SavePageRequest> last_requests_;
271 RequestQueue::UpdateMultipleRequestResults last_remove_results_; 271 RequestQueue::UpdateMultipleRequestResults last_remove_results_;
272 std::vector<std::unique_ptr<SavePageRequest>> last_requests_;
272 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; 273 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_;
273 base::ThreadTaskRunnerHandle task_runner_handle_; 274 base::ThreadTaskRunnerHandle task_runner_handle_;
274 std::unique_ptr<RequestCoordinator> coordinator_; 275 std::unique_ptr<RequestCoordinator> coordinator_;
275 OfflinerStub* offliner_; 276 OfflinerStub* offliner_;
276 base::WaitableEvent waiter_; 277 base::WaitableEvent waiter_;
277 ObserverStub observer_; 278 ObserverStub observer_;
278 }; 279 };
279 280
280 RequestCoordinatorTest::RequestCoordinatorTest() 281 RequestCoordinatorTest::RequestCoordinatorTest()
281 : last_get_requests_result_(RequestQueue::GetRequestsResult::STORE_FAILURE), 282 : last_get_requests_result_(RequestQueue::GetRequestsResult::STORE_FAILURE),
(...skipping 20 matching lines...) Expand all
302 std::move(scheduler_stub))); 303 std::move(scheduler_stub)));
303 coordinator_->AddObserver(&observer_); 304 coordinator_->AddObserver(&observer_);
304 } 305 }
305 306
306 void RequestCoordinatorTest::PumpLoop() { 307 void RequestCoordinatorTest::PumpLoop() {
307 task_runner_->RunUntilIdle(); 308 task_runner_->RunUntilIdle();
308 } 309 }
309 310
310 void RequestCoordinatorTest::GetRequestsDone( 311 void RequestCoordinatorTest::GetRequestsDone(
311 RequestQueue::GetRequestsResult result, 312 RequestQueue::GetRequestsResult result,
312 const std::vector<SavePageRequest>& requests) { 313 std::vector<std::unique_ptr<SavePageRequest>> requests) {
313 last_get_requests_result_ = result; 314 last_get_requests_result_ = result;
314 last_requests_ = requests; 315 last_requests_ = std::move(requests);
315 } 316 }
316 317
317 void RequestCoordinatorTest::RemoveRequestsDone( 318 void RequestCoordinatorTest::RemoveRequestsDone(
318 const RequestQueue::UpdateMultipleRequestResults& results) { 319 const RequestQueue::UpdateMultipleRequestResults& results) {
319 last_remove_results_ = results; 320 last_remove_results_ = results;
320 waiter_.Signal(); 321 waiter_.Signal();
321 } 322 }
322 323
323 void RequestCoordinatorTest::GetQueuedRequestsDone( 324 void RequestCoordinatorTest::GetQueuedRequestsDone(
324 const std::vector<SavePageRequest>& requests) { 325 std::vector<std::unique_ptr<SavePageRequest>> requests) {
325 last_requests_ = requests; 326 last_requests_ = std::move(requests);
326 waiter_.Signal(); 327 waiter_.Signal();
327 } 328 }
328 329
329 void RequestCoordinatorTest::AddRequestDone( 330 void RequestCoordinatorTest::AddRequestDone(
330 RequestQueue::AddRequestResult result, 331 RequestQueue::AddRequestResult result,
331 const SavePageRequest& request) {} 332 const SavePageRequest& request) {}
332 333
333 void RequestCoordinatorTest::SendOfflinerDoneCallback( 334 void RequestCoordinatorTest::SendOfflinerDoneCallback(
334 const SavePageRequest& request, Offliner::RequestStatus status) { 335 const SavePageRequest& request, Offliner::RequestStatus status) {
335 // Using the fact that the test class is a friend, call to the callback 336 // Using the fact that the test class is a friend, call to the callback
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 // Expect that a request got placed on the queue. 377 // Expect that a request got placed on the queue.
377 coordinator()->queue()->GetRequests( 378 coordinator()->queue()->GetRequests(
378 base::Bind(&RequestCoordinatorTest::GetRequestsDone, 379 base::Bind(&RequestCoordinatorTest::GetRequestsDone,
379 base::Unretained(this))); 380 base::Unretained(this)));
380 381
381 // Wait for callbacks to finish, both request queue and offliner. 382 // Wait for callbacks to finish, both request queue and offliner.
382 PumpLoop(); 383 PumpLoop();
383 384
384 // Check the request queue is as expected. 385 // Check the request queue is as expected.
385 EXPECT_EQ(1UL, last_requests().size()); 386 EXPECT_EQ(1UL, last_requests().size());
386 EXPECT_EQ(kUrl1, last_requests()[0].url()); 387 EXPECT_EQ(kUrl1, last_requests().at(0)->url());
387 EXPECT_EQ(kClientId1, last_requests()[0].client_id()); 388 EXPECT_EQ(kClientId1, last_requests().at(0)->client_id());
388 389
389 // Expect that the scheduler got notified. 390 // Expect that the scheduler got notified.
390 SchedulerStub* scheduler_stub = reinterpret_cast<SchedulerStub*>( 391 SchedulerStub* scheduler_stub = reinterpret_cast<SchedulerStub*>(
391 coordinator()->scheduler()); 392 coordinator()->scheduler());
392 EXPECT_TRUE(scheduler_stub->schedule_called()); 393 EXPECT_TRUE(scheduler_stub->schedule_called());
393 EXPECT_EQ(coordinator() 394 EXPECT_EQ(coordinator()
394 ->GetTriggerConditionsForUserRequest() 395 ->GetTriggerConditionsForUserRequest()
395 .minimum_battery_percentage, 396 .minimum_battery_percentage,
396 scheduler_stub->conditions()->minimum_battery_percentage); 397 scheduler_stub->conditions()->minimum_battery_percentage);
397 398
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 PumpLoop(); 537 PumpLoop();
537 538
538 // Verify the request is not removed from the queue, and wait for callbacks. 539 // Verify the request is not removed from the queue, and wait for callbacks.
539 coordinator()->queue()->GetRequests(base::Bind( 540 coordinator()->queue()->GetRequests(base::Bind(
540 &RequestCoordinatorTest::GetRequestsDone, base::Unretained(this))); 541 &RequestCoordinatorTest::GetRequestsDone, base::Unretained(this)));
541 PumpLoop(); 542 PumpLoop();
542 543
543 // Request no longer in the queue (for single attempt policy). 544 // Request no longer in the queue (for single attempt policy).
544 EXPECT_EQ(1UL, last_requests().size()); 545 EXPECT_EQ(1UL, last_requests().size());
545 // Verify foreground cancel not counted as an attempt after all. 546 // Verify foreground cancel not counted as an attempt after all.
546 const SavePageRequest& found_request = last_requests().front(); 547 EXPECT_EQ(0L, last_requests().at(0)->completed_attempt_count());
547 EXPECT_EQ(0L, found_request.completed_attempt_count());
548 } 548 }
549 549
550 // This tests a StopProcessing call before we have actually started the 550 // This tests a StopProcessing call before we have actually started the
551 // prerenderer. 551 // prerenderer.
552 TEST_F(RequestCoordinatorTest, StartProcessingThenStopProcessingImmediately) { 552 TEST_F(RequestCoordinatorTest, StartProcessingThenStopProcessingImmediately) {
553 // Add a request to the queue, wait for callbacks to finish. 553 // Add a request to the queue, wait for callbacks to finish.
554 offline_pages::SavePageRequest request( 554 offline_pages::SavePageRequest request(
555 kRequestId1, kUrl1, kClientId1, base::Time::Now(), kUserRequested); 555 kRequestId1, kUrl1, kClientId1, base::Time::Now(), kUserRequested);
556 coordinator()->queue()->AddRequest( 556 coordinator()->queue()->AddRequest(
557 request, 557 request,
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 coordinator()->GetAllRequests(base::Bind( 767 coordinator()->GetAllRequests(base::Bind(
768 &RequestCoordinatorTest::GetQueuedRequestsDone, base::Unretained(this))); 768 &RequestCoordinatorTest::GetQueuedRequestsDone, base::Unretained(this)));
769 PumpLoop(); 769 PumpLoop();
770 770
771 // Wait for async get to finish. 771 // Wait for async get to finish.
772 WaitForCallback(); 772 WaitForCallback();
773 PumpLoop(); 773 PumpLoop();
774 774
775 // Check that the statuses found in the callback match what we expect. 775 // Check that the statuses found in the callback match what we expect.
776 EXPECT_EQ(2UL, last_requests().size()); 776 EXPECT_EQ(2UL, last_requests().size());
777 EXPECT_EQ(kRequestId1, last_requests().at(0).request_id()); 777 EXPECT_EQ(kRequestId1, last_requests().at(0)->request_id());
778 EXPECT_EQ(kRequestId2, last_requests().at(1).request_id()); 778 EXPECT_EQ(kRequestId2, last_requests().at(1)->request_id());
779 } 779 }
780 780
781 TEST_F(RequestCoordinatorTest, PauseAndResumeObserver) { 781 TEST_F(RequestCoordinatorTest, PauseAndResumeObserver) {
782 // Add a request to the queue. 782 // Add a request to the queue.
783 offline_pages::SavePageRequest request1(kRequestId1, kUrl1, kClientId1, 783 offline_pages::SavePageRequest request1(kRequestId1, kUrl1, kClientId1,
784 base::Time::Now(), kUserRequested); 784 base::Time::Now(), kUserRequested);
785 coordinator()->queue()->AddRequest( 785 coordinator()->queue()->AddRequest(
786 request1, base::Bind(&RequestCoordinatorTest::AddRequestDone, 786 request1, base::Bind(&RequestCoordinatorTest::AddRequestDone,
787 base::Unretained(this))); 787 base::Unretained(this)));
788 PumpLoop(); 788 PumpLoop();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 PumpLoop(); 828 PumpLoop();
829 829
830 EXPECT_TRUE(observer().completed_called()); 830 EXPECT_TRUE(observer().completed_called());
831 EXPECT_EQ(RequestCoordinator::SavePageStatus::REMOVED, 831 EXPECT_EQ(RequestCoordinator::SavePageStatus::REMOVED,
832 observer().last_status()); 832 observer().last_status());
833 EXPECT_EQ(1UL, last_remove_results().size()); 833 EXPECT_EQ(1UL, last_remove_results().size());
834 EXPECT_EQ(kRequestId1, std::get<0>(last_remove_results().at(0))); 834 EXPECT_EQ(kRequestId1, std::get<0>(last_remove_results().at(0)));
835 } 835 }
836 836
837 } // namespace offline_pages 837 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698