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_coordinator.h" | 5 #include "components/offline_pages/background/request_coordinator.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 DVLOG(1) << "Not able to save page for requested url: " << url; | 117 DVLOG(1) << "Not able to save page for requested url: " << url; |
118 return 0L; | 118 return 0L; |
119 } | 119 } |
120 | 120 |
121 int64_t id = GenerateOfflineId(); | 121 int64_t id = GenerateOfflineId(); |
122 | 122 |
123 // Build a SavePageRequest. | 123 // Build a SavePageRequest. |
124 offline_pages::SavePageRequest request(id, url, client_id, base::Time::Now(), | 124 offline_pages::SavePageRequest request(id, url, client_id, base::Time::Now(), |
125 user_requested); | 125 user_requested); |
126 | 126 |
| 127 // If the download manager is not done with the request, put it on the |
| 128 // disabled list. |
| 129 if (availability == RequestAvailability::DISABLED_FOR_OFFLINER) |
| 130 disabled_requests_.insert(id); |
| 131 |
127 // Put the request on the request queue. | 132 // Put the request on the request queue. |
128 queue_->AddRequest(request, | 133 queue_->AddRequest(request, |
129 base::Bind(&RequestCoordinator::AddRequestResultCallback, | 134 base::Bind(&RequestCoordinator::AddRequestResultCallback, |
130 weak_ptr_factory_.GetWeakPtr())); | 135 weak_ptr_factory_.GetWeakPtr())); |
131 return id; | 136 return id; |
132 } | 137 } |
133 void RequestCoordinator::GetAllRequests(const GetRequestsCallback& callback) { | 138 void RequestCoordinator::GetAllRequests(const GetRequestsCallback& callback) { |
134 // Get all matching requests from the request queue, send them to our | 139 // Get all matching requests from the request queue, send them to our |
135 // callback. We bind the namespace and callback to the front of the callback | 140 // callback. We bind the namespace and callback to the front of the callback |
136 // param set. | 141 // param set. |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 | 431 |
427 return; | 432 return; |
428 } | 433 } |
429 | 434 |
430 // Choose a request to process that meets the available conditions. | 435 // Choose a request to process that meets the available conditions. |
431 // This is an async call, and returns right away. | 436 // This is an async call, and returns right away. |
432 picker_->ChooseNextRequest(base::Bind(&RequestCoordinator::RequestPicked, | 437 picker_->ChooseNextRequest(base::Bind(&RequestCoordinator::RequestPicked, |
433 weak_ptr_factory_.GetWeakPtr()), | 438 weak_ptr_factory_.GetWeakPtr()), |
434 base::Bind(&RequestCoordinator::RequestNotPicked, | 439 base::Bind(&RequestCoordinator::RequestNotPicked, |
435 weak_ptr_factory_.GetWeakPtr()), | 440 weak_ptr_factory_.GetWeakPtr()), |
436 current_conditions_.get()); | 441 current_conditions_.get(), |
| 442 disabled_requests_); |
437 } | 443 } |
438 | 444 |
439 // Called by the request picker when a request has been picked. | 445 // Called by the request picker when a request has been picked. |
440 void RequestCoordinator::RequestPicked(const SavePageRequest& request) { | 446 void RequestCoordinator::RequestPicked(const SavePageRequest& request) { |
441 is_starting_ = false; | 447 is_starting_ = false; |
442 | 448 |
443 // Make sure we were not stopped while picking. | 449 // Make sure we were not stopped while picking. |
444 if (!is_stopped_) { | 450 if (!is_stopped_) { |
445 // Send the request on to the offliner. | 451 // Send the request on to the offliner. |
446 SendRequestToOffliner(request); | 452 SendRequestToOffliner(request); |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
568 case Offliner::RequestStatus::PRERENDERING_FAILED: | 574 case Offliner::RequestStatus::PRERENDERING_FAILED: |
569 // No further processing in this service window. | 575 // No further processing in this service window. |
570 break; | 576 break; |
571 default: | 577 default: |
572 // Make explicit choice about new status codes that actually reach here. | 578 // Make explicit choice about new status codes that actually reach here. |
573 // Their default is no further processing in this service window. | 579 // Their default is no further processing in this service window. |
574 NOTREACHED(); | 580 NOTREACHED(); |
575 } | 581 } |
576 } | 582 } |
577 | 583 |
578 void RequestCoordinator::EnableForOffliner(int64_t request_id) {} | 584 void RequestCoordinator::EnableForOffliner(int64_t request_id) { |
| 585 disabled_requests_.erase(request_id); |
| 586 } |
579 | 587 |
580 void RequestCoordinator::MarkRequestCompleted(int64_t request_id) {} | 588 void RequestCoordinator::MarkRequestCompleted(int64_t request_id) {} |
581 | 589 |
582 const Scheduler::TriggerConditions RequestCoordinator::GetTriggerConditions( | 590 const Scheduler::TriggerConditions RequestCoordinator::GetTriggerConditions( |
583 const bool user_requested) { | 591 const bool user_requested) { |
584 return Scheduler::TriggerConditions( | 592 return Scheduler::TriggerConditions( |
585 policy_->PowerRequired(user_requested), | 593 policy_->PowerRequired(user_requested), |
586 policy_->BatteryPercentageRequired(user_requested), | 594 policy_->BatteryPercentageRequired(user_requested), |
587 policy_->UnmeteredNetworkRequired(user_requested)); | 595 policy_->UnmeteredNetworkRequired(user_requested)); |
588 } | 596 } |
(...skipping 28 matching lines...) Expand all Loading... |
617 | 625 |
618 ClientPolicyController* RequestCoordinator::GetPolicyController() { | 626 ClientPolicyController* RequestCoordinator::GetPolicyController() { |
619 return policy_controller_.get(); | 627 return policy_controller_.get(); |
620 } | 628 } |
621 | 629 |
622 void RequestCoordinator::Shutdown() { | 630 void RequestCoordinator::Shutdown() { |
623 network_quality_estimator_ = nullptr; | 631 network_quality_estimator_ = nullptr; |
624 } | 632 } |
625 | 633 |
626 } // namespace offline_pages | 634 } // namespace offline_pages |
OLD | NEW |