| Index: components/offline_pages/background/request_coordinator.cc
|
| diff --git a/components/offline_pages/background/request_coordinator.cc b/components/offline_pages/background/request_coordinator.cc
|
| index 81d90f15620fc27f6a2dd8abcafe48623e2aa976..71070cbf8a25f05f87276125abb20d2953ba1557 100644
|
| --- a/components/offline_pages/background/request_coordinator.cc
|
| +++ b/components/offline_pages/background/request_coordinator.cc
|
| @@ -122,7 +122,8 @@ RequestCoordinator::RequestCoordinator(
|
| std::unique_ptr<Scheduler> scheduler,
|
| net::NetworkQualityEstimator::NetworkQualityProvider*
|
| network_quality_estimator)
|
| - : is_busy_(false),
|
| + : is_low_end_device_(base::SysInfo::IsLowEndDevice()),
|
| + is_busy_(false),
|
| is_starting_(false),
|
| processing_state_(ProcessingWindowState::STOPPED),
|
| use_test_connection_type_(false),
|
| @@ -447,7 +448,7 @@ RequestCoordinator::TryImmediateStart() {
|
| return OfflinerImmediateStartStatus::BUSY;
|
|
|
| // Make sure we are not on svelte device to start immediately.
|
| - if (base::SysInfo::IsLowEndDevice())
|
| + if (is_low_end_device_)
|
| return OfflinerImmediateStartStatus::NOT_STARTED_ON_SVELTE;
|
|
|
| // Make sure we have reasonable network quality (or at least a connection).
|
| @@ -475,13 +476,21 @@ RequestCoordinator::TryImmediateStart() {
|
| }
|
|
|
| void RequestCoordinator::TryNextRequest() {
|
| + base::TimeDelta processing_time_budget;
|
| + if (processing_state_ == ProcessingWindowState::SCHEDULED_WINDOW) {
|
| + processing_time_budget = base::TimeDelta::FromSeconds(
|
| + policy_->GetProcessingTimeBudgetWhenBackgroundScheduledInSeconds());
|
| + } else {
|
| + DCHECK(processing_state_ == ProcessingWindowState::IMMEDIATE_WINDOW);
|
| + processing_time_budget = base::TimeDelta::FromSeconds(
|
| + policy_->GetProcessingTimeBudgetForImmediateLoadInSeconds());
|
| + }
|
| +
|
| // If there is no time left in the budget, return to the scheduler.
|
| // We do not remove the pending task that was set up earlier in case
|
| // we run out of time, so the background scheduler will return to us
|
| // at the next opportunity to run background tasks.
|
| - if (base::Time::Now() - operation_start_time_ >
|
| - base::TimeDelta::FromSeconds(
|
| - policy_->GetBackgroundProcessingTimeBudgetSeconds())) {
|
| + if ((base::Time::Now() - operation_start_time_) > processing_time_budget) {
|
| is_starting_ = false;
|
|
|
| // Let the scheduler know we are done processing.
|
|
|