blob: b80c64ce4f2cd6f0c4bd5ee50eaebc7e5177bd3a [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.
#include <memory>
#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 scanning interface and is used as a base for the
// scanners for different engines.
class Scanner {
// The type of callback to be called when an UwS is detected.
typedef base::RepeatingCallback<void(UwSId found_uws)> FoundUwSCallback;
// The type of callback that is called when the scan completes.
// |status| should contain RESULT_CODE_SUCCESS if no failures were encountered
// or error status code otherwise.
typedef base::OnceCallback<void(ResultCode status,
const std::vector<UwSId>& found_pups)>
virtual ~Scanner() {}
// Start scanning for UwS. When an UwS is detected and if |Stop| has not been
// called, |found_uws_callback| is called. If scan is done in number of tasks,
// |progress_callback| may be called to report ratio of completed tasks. If
// the scan completes before |Stop| is called, then |done_callback| is called.
// Returns true if startup succeeded. If the startup fails, |done_callback|
// will be called with the failure code.
virtual bool Start(const FoundUwSCallback& found_uws_callback,
const DoneCallback done_callback) = 0;
// Interrupts the current scanning. It's a noop when scanning has not started
// or 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 UI to pump messages to let the task
// tracker mark all tasks as done before clearing data passed to the scanner.
virtual bool IsCompletelyDone() const = 0;
} // namespace chrome_cleaner