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 90ab7d27a06643263b55681b5a1c3d4da1e28261..2913fa6e5b26bfdd94c72e333bfccb85db8ffb0e 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), |
@@ -466,8 +467,8 @@ RequestCoordinator::TryImmediateStart() { |
return OfflinerImmediateStartStatus::BUSY; |
// Make sure we are not on svelte device to start immediately. |
- // Let the scheduler know we are done processing and failed due to svelte. |
- if (base::SysInfo::IsLowEndDevice()) { |
+ if (is_low_end_device_) { |
+ // Let the scheduler know we are done processing and failed due to svelte. |
immediate_schedule_callback_.Run(false); |
return OfflinerImmediateStartStatus::NOT_STARTED_ON_SVELTE; |
} |
@@ -497,13 +498,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. |