Index: components/offline_pages/core/background/request_coordinator.cc |
diff --git a/components/offline_pages/core/background/request_coordinator.cc b/components/offline_pages/core/background/request_coordinator.cc |
index 346ec0294a13ff8f0f916bd92c041b163888769b..9320396b3e999aa7af91bd20a83adebcd7191475 100644 |
--- a/components/offline_pages/core/background/request_coordinator.cc |
+++ b/components/offline_pages/core/background/request_coordinator.cc |
@@ -178,7 +178,7 @@ RequestCoordinator::RequestCoordinator( |
active_request_(nullptr), |
last_offlining_status_(Offliner::RequestStatus::UNKNOWN), |
scheduler_callback_(base::Bind(&EmptySchedulerCallback)), |
- immediate_schedule_callback_(base::Bind(&EmptySchedulerCallback)), |
+ internal_start_processing_callback_(base::Bind(&EmptySchedulerCallback)), |
weak_ptr_factory_(this) { |
DCHECK(policy_ != nullptr); |
std::unique_ptr<CleanupTaskFactory> cleanup_factory( |
@@ -517,6 +517,18 @@ bool RequestCoordinator::StartScheduledProcessing( |
device_conditions, callback); |
} |
+// Returns true if the caller should expect a callback, false otherwise. |
+bool RequestCoordinator::StartImmediateProcessing( |
+ const DeviceConditions& device_conditions, |
+ const base::Callback<void(bool)>& callback) { |
+ OfflinerImmediateStartStatus immediate_start_status = |
+ TryImmediateStart(device_conditions, callback); |
+ UMA_HISTOGRAM_ENUMERATION( |
+ "OfflinePages.Background.ImmediateStartStatus", immediate_start_status, |
+ RequestCoordinator::OfflinerImmediateStartStatus::STATUS_COUNT); |
+ return immediate_start_status == OfflinerImmediateStartStatus::STARTED; |
+} |
+ |
bool RequestCoordinator::StartProcessingInternal( |
const ProcessingWindowState processing_state, |
const DeviceConditions& device_conditions, |
@@ -537,14 +549,18 @@ bool RequestCoordinator::StartProcessingInternal( |
} |
void RequestCoordinator::StartImmediatelyIfConnected() { |
- OfflinerImmediateStartStatus immediate_start_status = TryImmediateStart(); |
- UMA_HISTOGRAM_ENUMERATION( |
- "OfflinePages.Background.ImmediateStartStatus", immediate_start_status, |
- RequestCoordinator::OfflinerImmediateStartStatus::STATUS_COUNT); |
+ // Start processing with manufactured conservative battery conditions |
+ // (i.e., assume no battery). |
+ // TODO(dougarnett): Obtain actual battery conditions (from Android/Java). |
+ DeviceConditions device_conditions(false, 0, GetConnectionType()); |
+ StartImmediateProcessing(device_conditions, |
+ internal_start_processing_callback_); |
} |
RequestCoordinator::OfflinerImmediateStartStatus |
-RequestCoordinator::TryImmediateStart() { |
+RequestCoordinator::TryImmediateStart( |
+ const DeviceConditions& device_conditions, |
+ const base::Callback<void(bool)>& callback) { |
DVLOG(2) << "Immediate " << __func__; |
// Make sure not already busy processing. |
if (is_busy_) |
@@ -555,11 +571,11 @@ RequestCoordinator::TryImmediateStart() { |
!offline_pages::IsOfflinePagesSvelteConcurrentLoadingEnabled()) { |
DVLOG(2) << "low end device, returning"; |
// Let the scheduler know we are done processing and failed due to svelte. |
- immediate_schedule_callback_.Run(false); |
+ callback.Run(false); |
return OfflinerImmediateStartStatus::NOT_STARTED_ON_SVELTE; |
} |
- if (GetConnectionType() == |
+ if (device_conditions.GetNetConnectionType() == |
net::NetworkChangeNotifier::ConnectionType::CONNECTION_NONE) { |
RequestConnectedEventForStarting(); |
return OfflinerImmediateStartStatus::NO_CONNECTION; |
@@ -569,13 +585,8 @@ RequestCoordinator::TryImmediateStart() { |
ClearConnectedEventRequest(); |
} |
- // Start processing with manufactured conservative battery conditions |
- // (i.e., assume no battery). |
- // TODO(dougarnett): Obtain actual battery conditions (from Android/Java). |
- |
- DeviceConditions device_conditions(false, 0, GetConnectionType()); |
if (StartProcessingInternal(ProcessingWindowState::IMMEDIATE_WINDOW, |
- device_conditions, immediate_schedule_callback_)) |
+ device_conditions, callback)) |
return OfflinerImmediateStartStatus::STARTED; |
else |
return OfflinerImmediateStartStatus::NOT_ACCEPTED; |