blob: a910c17eeac8134586e32d6980b9ce22bbc2d0d6 [file] [log] [blame]
// Copyright 2018 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 CHROME_CHROME_CLEANER_CLEANER_CLEANER_H_
#define CHROME_CHROME_CLEANER_CLEANER_CLEANER_H_
#include <vector>
#include "base/callback.h"
#include "chrome/chrome_cleaner/constants/uws_id.h"
#include "components/chrome_cleaner/public/constants/result_codes.h"
namespace chrome_cleaner {
// This class defines the cleaning interface that is used for all engines.
class Cleaner {
public:
typedef base::OnceCallback<void(ResultCode status)> DoneCallback;
virtual ~Cleaner() = default;
// Start cleaning UwS specified in |uws_ids|. If the cleanup completes before
// |Stop| is called, |done_callback| must be called to report cleanup status.
virtual void Start(const std::vector<UwSId>& uws_ids,
DoneCallback done_callback) = 0;
// Start post-reboot cleanup of UwS specified in |uws_ids|. |done_callback|
// must be called to report cleanup status.
virtual void StartPostReboot(const std::vector<UwSId>& uws_ids,
DoneCallback done_callback) = 0;
// Interrupts the current cleaning. It's a noop when cleaning hasn't started
// yet, is already done, or has already been stopped.
virtual void Stop() = 0;
// When calling |Stop|, some tasks may still be running, so make sure to call
// |IsCompletelyDone| and allow the main message loop to pump messages until
// all tasks are done before clearing data passed to the cleaner.
virtual bool IsCompletelyDone() const = 0;
// Indicate whether the cleaner can remove UwS specified in |uws_ids|.
virtual bool CanClean(const std::vector<UwSId>& uws_ids) = 0;
};
} // namespace chrome_cleaner
#endif // CHROME_CHROME_CLEANER_CLEANER_CLEANER_H_