blob: f821cd52f1da6aeba7fd31c03f1f16f83803995a [file] [log] [blame] [edit]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FBPREPROCESSOR_MANAGER_H_
#define FBPREPROCESSOR_MANAGER_H_
#include <memory>
#include <base/task/sequenced_task_runner.h>
#include <dbus/bus.h>
#include "fbpreprocessor/metrics.h"
#include "fbpreprocessor/platform_features_client.h"
namespace fbpreprocessor {
class InputManager;
class OutputManager;
class PseudonymizationManager;
class SessionStateManagerInterface;
class Manager {
public:
Manager() = default;
virtual ~Manager() {}
// After this function has returned the manager is fully initialized (D-Bus is
// up, etc) and all the child components are ready for use.
virtual void Start(dbus::Bus* bus) = 0;
// Is the user allowed to add firmware dumps to feedback reports? This will
// return false if any condition (Finch, policy, allowlist, etc.) is not met.
virtual bool FirmwareDumpsAllowed() const = 0;
virtual SessionStateManagerInterface* session_state_manager() const = 0;
virtual PseudonymizationManager* pseudonymization_manager() const = 0;
virtual OutputManager* output_manager() const = 0;
virtual InputManager* input_manager() const = 0;
virtual PlatformFeaturesClient* platform_features() const = 0;
Metrics& metrics() { return metrics_; }
virtual scoped_refptr<base::SequencedTaskRunner> task_runner() = 0;
virtual int default_file_expiration_in_secs() const = 0;
private:
Metrics metrics_;
};
} // namespace fbpreprocessor
#endif // FBPREPROCESSOR_MANAGER_H_