// Copyright 2019 The Chromium OS 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 LOGIN_MANAGER_ARC_SIDELOAD_STATUS_INTERFACE_H_
#define LOGIN_MANAGER_ARC_SIDELOAD_STATUS_INTERFACE_H_

#include <memory>

#include <brillo/dbus/dbus_method_response.h>

namespace login_manager {

class ArcSideloadStatusInterface {
 public:
  virtual ~ArcSideloadStatusInterface() {}

  virtual void Initialize() = 0;

  // Returns true IFF ARC Sideload is allowed as per bootlockbox status. Can
  // return false if it's explicitly not yet allowed, or if the status is
  // still unknown, e.g. due to slowness in asking bootlockbox.
  virtual bool IsAdbSideloadAllowed() = 0;

  // Callback of EnableAdbSideload. The first argument indicates whether the
  // operation has succeeded. The second argument is the error message when
  // failed, or nullptr on success.
  // TODO(victorhsieh): Consider making convert all the Callbacks to
  // OnceCallback. It will be easier or possible once the next libchrome uprev
  // (crbug.com/909719) is done.
  using EnableAdbSideloadCallback = base::Callback<void(bool, const char*)>;

  // Handles request to allow ARC Sideload via DBus. This can only success
  // before the first user login after boot. Currently must be called after
  // initialized.
  virtual void EnableAdbSideload(EnableAdbSideloadCallback callback) = 0;

  // Callback of EnableAdbSideload. The first argument indicates whether
  // sideloading is allowed on the current device.
  using QueryAdbSideloadCallback = base::Callback<void(bool)>;

  // Handles query of the ARC Sideload status via DBus. The response will be
  // sent immediately if the status is already known - otherwise the response
  // can be deferred due to slowness in asking cryptohome.
  virtual void QueryAdbSideload(QueryAdbSideloadCallback callback) = 0;
};

}  // namespace login_manager

#endif  // LOGIN_MANAGER_ARC_SIDELOAD_STATUS_INTERFACE_H_
