blob: 9c5acc2c07a1a88e2a595b7d43ae0e4eea9e4291 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_OFFLINE_PAGES_CORE_PREFETCH_TASKS_STALE_ENTRY_FINALIZER_TASK_H_
#define COMPONENTS_OFFLINE_PAGES_CORE_PREFETCH_TASKS_STALE_ENTRY_FINALIZER_TASK_H_
#include <vector>
#include "base/callback.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "components/offline_pages/task/task.h"
namespace offline_pages {
class PrefetchDispatcher;
class PrefetchStore;
// Reconciliation task responsible for finalizing entries for which their
// freshness date are past the limits specific to each pipeline bucket. Entries
// considered stale are moved to the "finished" state and have their error code
// column set to the PrefetchItemErrorCode value that identifies the bucket they
// were at.
// NOTE: This task is run periodically as reconciliation task and from some
// event handlers. As such, it must not cause network operations nor cause
// 'progress' in the pipeline that would trigger other tasks.
class StaleEntryFinalizerTask : public Task {
public:
enum class Result { NO_MORE_WORK, MORE_WORK_NEEDED };
StaleEntryFinalizerTask(PrefetchDispatcher* prefetch_dispatcher,
PrefetchStore* prefetch_store);
~StaleEntryFinalizerTask() override;
void Run() override;
// Will be set to true upon after an error-free run.
Result final_status() const { return final_status_; }
private:
void OnFinished(Result result);
// Not owned.
PrefetchDispatcher* prefetch_dispatcher_;
// Prefetch store to execute against. Not owned.
PrefetchStore* prefetch_store_;
Result final_status_ = Result::NO_MORE_WORK;
base::WeakPtrFactory<StaleEntryFinalizerTask> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(StaleEntryFinalizerTask);
};
} // namespace offline_pages
#endif // COMPONENTS_OFFLINE_PAGES_CORE_PREFETCH_TASKS_STALE_ENTRY_FINALIZER_TASK_H_