blob: 33e79dc9081aa2061285c7543207aa0ec280413b [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 DEVICE_MANAGEMENT_CLIENT_CLIENT_H_
#define DEVICE_MANAGEMENT_CLIENT_CLIENT_H_
#include "device_management/client/printer.h"
#include "device_management-client/device_management/dbus-proxies.h"
#include <memory>
#include <string>
#include <base/command_line.h>
#include <base/memory/ref_counted.h>
#include <brillo/brillo_export.h>
#include <dbus/bus.h>
namespace device_management {
// Five minutes is enough to wait for any TPM operations, sync() calls, etc.
constexpr int kDefaultTimeoutMs = 5 * 60 * 1000;
// A class that manages communication with DeviceManagement.
class DeviceManagementClient {
public:
DeviceManagementClient(const DeviceManagementClient&) = delete;
DeviceManagementClient& operator=(const DeviceManagementClient&) = delete;
virtual ~DeviceManagementClient();
// Creates DeviceManagementClient.
static std::unique_ptr<DeviceManagementClient> CreateDeviceManagementClient();
bool InitializePrinter(const base::CommandLine* cl);
virtual bool IsInstallAttributesReady();
virtual bool GetInstallAttributes(const base::CommandLine* cl);
virtual bool SetInstallAttributes(const base::CommandLine* cl);
virtual bool FinalizeInstallAttributes();
virtual bool GetStatusInstallAttributes();
virtual bool GetCountInstallAttributes();
virtual bool IsReadyInstallAttributes();
virtual bool IsSecureInstallAttributes();
virtual bool IsInvalidInstallAttributes();
virtual bool IsFirstInstallInstallAttributes();
virtual bool GetEnterpriseOwnedStatus();
virtual bool GetFWMP();
virtual bool SetFWMP(const base::CommandLine* cl);
virtual bool RemoveFWMP();
private:
DeviceManagementClient(
std::unique_ptr<org::chromium::DeviceManagementProxy> device_management,
scoped_refptr<dbus::Bus> bus);
std::unique_ptr<org::chromium::DeviceManagementProxy>
device_management_proxy_;
scoped_refptr<dbus::Bus> bus_;
std::unique_ptr<Printer> printer_;
const int timeout_ms = kDefaultTimeoutMs;
};
} // namespace device_management
#endif // DEVICE_MANAGEMENT_CLIENT_CLIENT_H_