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 06aa7dc2ce4f10ff46599f37c9f3ba7fa03a8176..a1fcd7d93d97c92a8239d147d09709efaa3ef495 100644 |
--- a/components/offline_pages/background/request_coordinator.cc |
+++ b/components/offline_pages/background/request_coordinator.cc |
@@ -28,6 +28,7 @@ const bool kUserRequest = true; |
const int kMinDurationSeconds = 1; |
const int kMaxDurationSeconds = 7 * 24 * 60 * 60; // 7 days |
const int kDurationBuckets = 50; |
+const int kDisabledTaskRecheckSeconds = 5; |
// TODO(dougarnett): Move to util location and share with model impl. |
std::string AddHistogramSuffix(const ClientId& client_id, |
@@ -500,8 +501,15 @@ void RequestCoordinator::RequestNotPicked( |
// Clear the outstanding "safety" task in the scheduler. |
scheduler_->Unschedule(); |
- if (non_user_requested_tasks_remaining) |
+ // If disabled tasks remain, post a new safety task for 5 sec from now. |
+ if (disabled_requests_.size() > 0) { |
+ scheduler_->BackupSchedule(GetTriggerConditions(kUserRequest), |
+ kDisabledTaskRecheckSeconds); |
+ } else if (non_user_requested_tasks_remaining) { |
+ // If we don't have any of those, check for non-user-requested tasks. |
scheduler_->Schedule(GetTriggerConditions(!kUserRequest)); |
+ } |
+ |
// Let the scheduler know we are done processing. |
scheduler_callback_.Run(true); |
} |
@@ -624,9 +632,13 @@ void RequestCoordinator::OfflinerDoneCallback(const SavePageRequest& request, |
void RequestCoordinator::EnableForOffliner(int64_t request_id) { |
disabled_requests_.erase(request_id); |
+ // If we are not busy, start processing right away. |
+ StartProcessingIfConnected(); |
} |
-void RequestCoordinator::MarkRequestCompleted(int64_t request_id) {} |
+void RequestCoordinator::MarkRequestCompleted(int64_t request_id) { |
+ // TODO: Remove the request, but send out SUCCEEDED instead of removed. |
+} |
const Scheduler::TriggerConditions RequestCoordinator::GetTriggerConditions( |
const bool user_requested) { |