// Copyright (c) 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 CHROME_CLEANER_CLEANER_CLEANER_H_ #define CHROME_CLEANER_CLEANER_CLEANER_H_ #include #include "base/callback.h" #include "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 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& 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& 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& uws_ids) = 0; }; } // namespace chrome_cleaner #endif // CHROME_CLEANER_CLEANER_CLEANER_H_