| 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 10 matching lines...) Expand all Loading... |
| 21 #include "components/offline_pages/offline_page_item.h" | 21 #include "components/offline_pages/offline_page_item.h" |
| 22 #include "components/offline_pages/offline_page_model.h" | 22 #include "components/offline_pages/offline_page_model.h" |
| 23 | 23 |
| 24 namespace offline_pages { | 24 namespace offline_pages { |
| 25 | 25 |
| 26 namespace { | 26 namespace { |
| 27 const bool kUserRequest = true; | 27 const bool kUserRequest = true; |
| 28 const int kMinDurationSeconds = 1; | 28 const int kMinDurationSeconds = 1; |
| 29 const int kMaxDurationSeconds = 7 * 24 * 60 * 60; // 7 days | 29 const int kMaxDurationSeconds = 7 * 24 * 60 * 60; // 7 days |
| 30 const int kDurationBuckets = 50; | 30 const int kDurationBuckets = 50; |
| 31 const int kDisabledTaskRecheckSeconds = 5; |
| 31 | 32 |
| 32 // TODO(dougarnett): Move to util location and share with model impl. | 33 // TODO(dougarnett): Move to util location and share with model impl. |
| 33 std::string AddHistogramSuffix(const ClientId& client_id, | 34 std::string AddHistogramSuffix(const ClientId& client_id, |
| 34 const char* histogram_name) { | 35 const char* histogram_name) { |
| 35 if (client_id.name_space.empty()) { | 36 if (client_id.name_space.empty()) { |
| 36 NOTREACHED(); | 37 NOTREACHED(); |
| 37 return histogram_name; | 38 return histogram_name; |
| 38 } | 39 } |
| 39 std::string adjusted_histogram_name(histogram_name); | 40 std::string adjusted_histogram_name(histogram_name); |
| 40 adjusted_histogram_name += "." + client_id.name_space; | 41 adjusted_histogram_name += "." + client_id.name_space; |
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 } | 494 } |
| 494 } | 495 } |
| 495 | 496 |
| 496 void RequestCoordinator::RequestNotPicked( | 497 void RequestCoordinator::RequestNotPicked( |
| 497 bool non_user_requested_tasks_remaining) { | 498 bool non_user_requested_tasks_remaining) { |
| 498 is_starting_ = false; | 499 is_starting_ = false; |
| 499 | 500 |
| 500 // Clear the outstanding "safety" task in the scheduler. | 501 // Clear the outstanding "safety" task in the scheduler. |
| 501 scheduler_->Unschedule(); | 502 scheduler_->Unschedule(); |
| 502 | 503 |
| 503 if (non_user_requested_tasks_remaining) | 504 // If disabled tasks remain, post a new safety task for 5 sec from now. |
| 505 if (disabled_requests_.size() > 0) { |
| 506 scheduler_->BackupSchedule(GetTriggerConditions(kUserRequest), |
| 507 kDisabledTaskRecheckSeconds); |
| 508 } else if (non_user_requested_tasks_remaining) { |
| 509 // If we don't have any of those, check for non-user-requested tasks. |
| 504 scheduler_->Schedule(GetTriggerConditions(!kUserRequest)); | 510 scheduler_->Schedule(GetTriggerConditions(!kUserRequest)); |
| 511 } |
| 512 |
| 505 // Let the scheduler know we are done processing. | 513 // Let the scheduler know we are done processing. |
| 506 scheduler_callback_.Run(true); | 514 scheduler_callback_.Run(true); |
| 507 } | 515 } |
| 508 | 516 |
| 509 void RequestCoordinator::SendRequestToOffliner(const SavePageRequest& request) { | 517 void RequestCoordinator::SendRequestToOffliner(const SavePageRequest& request) { |
| 510 // Check that offlining didn't get cancelled while performing some async | 518 // Check that offlining didn't get cancelled while performing some async |
| 511 // steps. | 519 // steps. |
| 512 if (is_stopped_) | 520 if (is_stopped_) |
| 513 return; | 521 return; |
| 514 | 522 |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 617 break; | 625 break; |
| 618 default: | 626 default: |
| 619 // Make explicit choice about new status codes that actually reach here. | 627 // Make explicit choice about new status codes that actually reach here. |
| 620 // Their default is no further processing in this service window. | 628 // Their default is no further processing in this service window. |
| 621 NOTREACHED(); | 629 NOTREACHED(); |
| 622 } | 630 } |
| 623 } | 631 } |
| 624 | 632 |
| 625 void RequestCoordinator::EnableForOffliner(int64_t request_id) { | 633 void RequestCoordinator::EnableForOffliner(int64_t request_id) { |
| 626 disabled_requests_.erase(request_id); | 634 disabled_requests_.erase(request_id); |
| 635 // If we are not busy, start processing right away. |
| 636 StartProcessingIfConnected(); |
| 627 } | 637 } |
| 628 | 638 |
| 629 void RequestCoordinator::MarkRequestCompleted(int64_t request_id) {} | 639 void RequestCoordinator::MarkRequestCompleted(int64_t request_id) { |
| 640 // TODO: Remove the request, but send out SUCCEEDED instead of removed. |
| 641 } |
| 630 | 642 |
| 631 const Scheduler::TriggerConditions RequestCoordinator::GetTriggerConditions( | 643 const Scheduler::TriggerConditions RequestCoordinator::GetTriggerConditions( |
| 632 const bool user_requested) { | 644 const bool user_requested) { |
| 633 return Scheduler::TriggerConditions( | 645 return Scheduler::TriggerConditions( |
| 634 policy_->PowerRequired(user_requested), | 646 policy_->PowerRequired(user_requested), |
| 635 policy_->BatteryPercentageRequired(user_requested), | 647 policy_->BatteryPercentageRequired(user_requested), |
| 636 policy_->UnmeteredNetworkRequired(user_requested)); | 648 policy_->UnmeteredNetworkRequired(user_requested)); |
| 637 } | 649 } |
| 638 | 650 |
| 639 void RequestCoordinator::AddObserver(Observer* observer) { | 651 void RequestCoordinator::AddObserver(Observer* observer) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 666 | 678 |
| 667 ClientPolicyController* RequestCoordinator::GetPolicyController() { | 679 ClientPolicyController* RequestCoordinator::GetPolicyController() { |
| 668 return policy_controller_.get(); | 680 return policy_controller_.get(); |
| 669 } | 681 } |
| 670 | 682 |
| 671 void RequestCoordinator::Shutdown() { | 683 void RequestCoordinator::Shutdown() { |
| 672 network_quality_estimator_ = nullptr; | 684 network_quality_estimator_ = nullptr; |
| 673 } | 685 } |
| 674 | 686 |
| 675 } // namespace offline_pages | 687 } // namespace offline_pages |
| OLD | NEW |