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 9bb828867fd07cb7d98df95eeb2b81c87fec3d45..092d608799793ffb6732476403decf05fc5a5ae4 100644 |
--- a/components/offline_pages/background/request_coordinator.cc |
+++ b/components/offline_pages/background/request_coordinator.cc |
@@ -25,6 +25,7 @@ namespace offline_pages { |
namespace { |
const bool kUserRequest = true; |
+const int kDisabledTaskRecheckSeconds = 5 * 60; |
Dmitry Titov
2016/10/10 17:29:45
I think this needs to be a much shorter interval.
Pete Williamson
2016/10/10 19:45:17
Done.
|
// Records the final request status UMA for an offlining request. This should |
// only be called once per Offliner::LoadAndSave request. |
@@ -460,8 +461,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 min 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); |
} |
@@ -583,9 +591,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) { |