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

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: More compile 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 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 void WaitingCallbackFunction(bool result) { 198 void WaitingCallbackFunction(bool result) {
199 waiter_.Signal(); 199 waiter_.Signal();
200 } 200 }
201 201
202 // Callback for Add requests. 202 // Callback for Add requests.
203 void AddRequestDone(RequestQueue::AddRequestResult result, 203 void AddRequestDone(RequestQueue::AddRequestResult result,
204 const SavePageRequest& request); 204 const SavePageRequest& request);
205 205
206 // Callback for getting requests. 206 // Callback for getting requests.
207 void GetRequestsDone(RequestQueue::GetRequestsResult result, 207 void GetRequestsDone(RequestQueue::GetRequestsResult result,
208 const std::vector<SavePageRequest>& requests); 208 std::vector<std::unique_ptr<SavePageRequest>> requests);
209 209
210 // Callback for removing requests. 210 // Callback for removing requests.
211 void RemoveRequestsDone( 211 void RemoveRequestsDone(
212 const RequestQueue::UpdateMultipleRequestResults& results); 212 const RequestQueue::UpdateMultipleRequestResults& results);
213 213
214 // Callback for getting request statuses. 214 // Callback for getting request statuses.
215 void GetQueuedRequestsDone(const std::vector<SavePageRequest>& requests); 215 void GetQueuedRequestsDone(
216 std::vector<std::unique_ptr<SavePageRequest>> requests);
216 217
217 void SendOfflinerDoneCallback(const SavePageRequest& request, 218 void SendOfflinerDoneCallback(const SavePageRequest& request,
218 Offliner::RequestStatus status); 219 Offliner::RequestStatus status);
219 220
220 RequestQueue::GetRequestsResult last_get_requests_result() const { 221 RequestQueue::GetRequestsResult last_get_requests_result() const {
221 return last_get_requests_result_; 222 return last_get_requests_result_;
222 } 223 }
223 224
224 const std::vector<SavePageRequest>& last_requests() const { 225 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const {
225 return last_requests_; 226 return last_requests_;
226 } 227 }
227 228
228 const RequestQueue::UpdateMultipleRequestResults& last_remove_results() 229 const RequestQueue::UpdateMultipleRequestResults& last_remove_results()
229 const { 230 const {
230 return last_remove_results_; 231 return last_remove_results_;
231 } 232 }
232 233
233 void EnableOfflinerCallback(bool enable) { 234 void EnableOfflinerCallback(bool enable) {
234 offliner_->enable_callback(enable); 235 offliner_->enable_callback(enable);
(...skipping 23 matching lines...) Expand all
258 Offliner::RequestStatus last_offlining_status() const { 259 Offliner::RequestStatus last_offlining_status() const {
259 return coordinator_->last_offlining_status_; 260 return coordinator_->last_offlining_status_;
260 } 261 }
261 262
262 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); } 263 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); }
263 264
264 ObserverStub observer() { return observer_; } 265 ObserverStub observer() { return observer_; }
265 266
266 private: 267 private:
267 RequestQueue::GetRequestsResult last_get_requests_result_; 268 RequestQueue::GetRequestsResult last_get_requests_result_;
268 std::vector<SavePageRequest> last_requests_;
269 RequestQueue::UpdateMultipleRequestResults last_remove_results_; 269 RequestQueue::UpdateMultipleRequestResults last_remove_results_;
270 std::vector<std::unique_ptr<SavePageRequest>> last_requests_;
270 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; 271 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_;
271 base::ThreadTaskRunnerHandle task_runner_handle_; 272 base::ThreadTaskRunnerHandle task_runner_handle_;
272 std::unique_ptr<RequestCoordinator> coordinator_; 273 std::unique_ptr<RequestCoordinator> coordinator_;
273 OfflinerStub* offliner_; 274 OfflinerStub* offliner_;
274 base::WaitableEvent waiter_; 275 base::WaitableEvent waiter_;
275 ObserverStub observer_; 276 ObserverStub observer_;
276 }; 277 };
277 278
278 RequestCoordinatorTest::RequestCoordinatorTest() 279 RequestCoordinatorTest::RequestCoordinatorTest()
279 : last_get_requests_result_(RequestQueue::GetRequestsResult::STORE_FAILURE), 280 : last_get_requests_result_(RequestQueue::GetRequestsResult::STORE_FAILURE),
(...skipping 20 matching lines...) Expand all
300 std::move(scheduler_stub))); 301 std::move(scheduler_stub)));
301 coordinator_->AddObserver(&observer_); 302 coordinator_->AddObserver(&observer_);
302 } 303 }
303 304
304 void RequestCoordinatorTest::PumpLoop() { 305 void RequestCoordinatorTest::PumpLoop() {
305 task_runner_->RunUntilIdle(); 306 task_runner_->RunUntilIdle();
306 } 307 }
307 308
308 void RequestCoordinatorTest::GetRequestsDone( 309 void RequestCoordinatorTest::GetRequestsDone(
309 RequestQueue::GetRequestsResult result, 310 RequestQueue::GetRequestsResult result,
310 const std::vector<SavePageRequest>& requests) { 311 std::vector<std::unique_ptr<SavePageRequest>> requests) {
311 last_get_requests_result_ = result; 312 last_get_requests_result_ = result;
312 last_requests_ = requests; 313 last_requests_ = std::move(requests);
313 } 314 }
314 315
315 void RequestCoordinatorTest::RemoveRequestsDone( 316 void RequestCoordinatorTest::RemoveRequestsDone(
316 const RequestQueue::UpdateMultipleRequestResults& results) { 317 const RequestQueue::UpdateMultipleRequestResults& results) {
317 last_remove_results_ = results; 318 last_remove_results_ = results;
318 waiter_.Signal(); 319 waiter_.Signal();
319 } 320 }
320 321
321 void RequestCoordinatorTest::GetQueuedRequestsDone( 322 void RequestCoordinatorTest::GetQueuedRequestsDone(
322 const std::vector<SavePageRequest>& requests) { 323 std::vector<std::unique_ptr<SavePageRequest>> requests) {
323 last_requests_ = requests; 324 last_requests_ = std::move(requests);
324 waiter_.Signal(); 325 waiter_.Signal();
325 } 326 }
326 327
327 void RequestCoordinatorTest::AddRequestDone( 328 void RequestCoordinatorTest::AddRequestDone(
328 RequestQueue::AddRequestResult result, 329 RequestQueue::AddRequestResult result,
329 const SavePageRequest& request) {} 330 const SavePageRequest& request) {}
330 331
331 void RequestCoordinatorTest::SendOfflinerDoneCallback( 332 void RequestCoordinatorTest::SendOfflinerDoneCallback(
332 const SavePageRequest& request, Offliner::RequestStatus status) { 333 const SavePageRequest& request, Offliner::RequestStatus status) {
333 // Using the fact that the test class is a friend, call to the callback 334 // Using the fact that the test class is a friend, call to the callback
(...skipping 42 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 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 PumpLoop(); 533 PumpLoop();
533 534
534 // Verify the request is not removed from the queue, and wait for callbacks. 535 // Verify the request is not removed from the queue, and wait for callbacks.
535 coordinator()->queue()->GetRequests(base::Bind( 536 coordinator()->queue()->GetRequests(base::Bind(
536 &RequestCoordinatorTest::GetRequestsDone, base::Unretained(this))); 537 &RequestCoordinatorTest::GetRequestsDone, base::Unretained(this)));
537 PumpLoop(); 538 PumpLoop();
538 539
539 // Request no longer in the queue (for single attempt policy). 540 // Request no longer in the queue (for single attempt policy).
540 EXPECT_EQ(1UL, last_requests().size()); 541 EXPECT_EQ(1UL, last_requests().size());
541 // Verify foreground cancel not counted as an attempt after all. 542 // Verify foreground cancel not counted as an attempt after all.
542 const SavePageRequest& found_request = last_requests().front(); 543 EXPECT_EQ(0L, last_requests().at(0)->completed_attempt_count());
543 EXPECT_EQ(0L, found_request.completed_attempt_count());
544 } 544 }
545 545
546 // This tests a StopProcessing call before we have actually started the 546 // This tests a StopProcessing call before we have actually started the
547 // prerenderer. 547 // prerenderer.
548 TEST_F(RequestCoordinatorTest, StartProcessingThenStopProcessingImmediately) { 548 TEST_F(RequestCoordinatorTest, StartProcessingThenStopProcessingImmediately) {
549 // Add a request to the queue, wait for callbacks to finish. 549 // Add a request to the queue, wait for callbacks to finish.
550 offline_pages::SavePageRequest request( 550 offline_pages::SavePageRequest request(
551 kRequestId1, kUrl1, kClientId1, base::Time::Now(), kUserRequested); 551 kRequestId1, kUrl1, kClientId1, base::Time::Now(), kUserRequested);
552 coordinator()->queue()->AddRequest( 552 coordinator()->queue()->AddRequest(
553 request, 553 request,
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 coordinator()->GetAllRequests(base::Bind( 768 coordinator()->GetAllRequests(base::Bind(
769 &RequestCoordinatorTest::GetQueuedRequestsDone, base::Unretained(this))); 769 &RequestCoordinatorTest::GetQueuedRequestsDone, base::Unretained(this)));
770 PumpLoop(); 770 PumpLoop();
771 771
772 // Wait for async get to finish. 772 // Wait for async get to finish.
773 WaitForCallback(); 773 WaitForCallback();
774 PumpLoop(); 774 PumpLoop();
775 775
776 // Check that the statuses found in the callback match what we expect. 776 // Check that the statuses found in the callback match what we expect.
777 EXPECT_EQ(2UL, last_requests().size()); 777 EXPECT_EQ(2UL, last_requests().size());
778 EXPECT_EQ(kRequestId1, last_requests().at(0).request_id()); 778 EXPECT_EQ(kRequestId1, last_requests().at(0)->request_id());
779 EXPECT_EQ(kRequestId2, last_requests().at(1).request_id()); 779 EXPECT_EQ(kRequestId2, last_requests().at(1)->request_id());
780 } 780 }
781 781
782 TEST_F(RequestCoordinatorTest, PauseAndResumeObserver) { 782 TEST_F(RequestCoordinatorTest, PauseAndResumeObserver) {
783 // Add a request to the queue. 783 // Add a request to the queue.
784 offline_pages::SavePageRequest request1(kRequestId1, kUrl1, kClientId1, 784 offline_pages::SavePageRequest request1(kRequestId1, kUrl1, kClientId1,
785 base::Time::Now(), kUserRequested); 785 base::Time::Now(), kUserRequested);
786 coordinator()->queue()->AddRequest( 786 coordinator()->queue()->AddRequest(
787 request1, base::Bind(&RequestCoordinatorTest::AddRequestDone, 787 request1, base::Bind(&RequestCoordinatorTest::AddRequestDone,
788 base::Unretained(this))); 788 base::Unretained(this)));
789 PumpLoop(); 789 PumpLoop();
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 net::NetworkChangeNotifier::ConnectionType::CONNECTION_3G); 884 net::NetworkChangeNotifier::ConnectionType::CONNECTION_3G);
885 885
886 // Resume the request while connected. 886 // Resume the request while connected.
887 coordinator()->ResumeRequests(request_ids); 887 coordinator()->ResumeRequests(request_ids);
888 EXPECT_FALSE(is_busy()); 888 EXPECT_FALSE(is_busy());
889 PumpLoop(); 889 PumpLoop();
890 EXPECT_TRUE(is_busy()); 890 EXPECT_TRUE(is_busy());
891 } 891 }
892 892
893 } // namespace offline_pages 893 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698