chromium/chrome/browser/chromeos/extensions/wm/wm_desks_private_api.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_WM_WM_DESKS_PRIVATE_API_H_
#define CHROME_BROWSER_CHROMEOS_EXTENSIONS_WM_WM_DESKS_PRIVATE_API_H_

#include "base/uuid.h"
#include "base/values.h"
#include "chrome/common/extensions/api/wm_desks_private.h"
#include "extensions/browser/extension_function.h"
#include "extensions/browser/extension_function_histogram_value.h"

namespace extensions {

class WmDesksPrivateGetSavedDesksFunction : public ExtensionFunction {
 public:
  WmDesksPrivateGetSavedDesksFunction();
  WmDesksPrivateGetSavedDesksFunction(
      const WmDesksPrivateGetSavedDesksFunction&) = delete;
  WmDesksPrivateGetSavedDesksFunction& operator=(
      const WmDesksPrivateGetSavedDesksFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.getSavedDesks",
                             WMDESKSPRIVATE_GETSAVEDDESKS)

 protected:
  ~WmDesksPrivateGetSavedDesksFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;

  void OnGetSavedDesks(std::string error_string,
                       std::vector<api::wm_desks_private::SavedDesk> desks);
};

class WmDesksPrivateGetDeskTemplateJsonFunction : public ExtensionFunction {
 public:
  WmDesksPrivateGetDeskTemplateJsonFunction();
  WmDesksPrivateGetDeskTemplateJsonFunction(
      const WmDesksPrivateGetDeskTemplateJsonFunction&) = delete;
  WmDesksPrivateGetDeskTemplateJsonFunction& operator=(
      const WmDesksPrivateGetDeskTemplateJsonFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.getDeskTemplateJson",
                             WMDESKSPRIVATE_GETDESKTEMPLATEJSON)

 protected:
  ~WmDesksPrivateGetDeskTemplateJsonFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;
  void OnGetDeskTemplateJson(std::string error, base::Value template_json);
};

class WmDesksPrivateLaunchDeskFunction : public ExtensionFunction {
 public:
  WmDesksPrivateLaunchDeskFunction();
  WmDesksPrivateLaunchDeskFunction(const WmDesksPrivateLaunchDeskFunction&) =
      delete;
  WmDesksPrivateLaunchDeskFunction& operator=(
      const WmDesksPrivateLaunchDeskFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.launchDesk",
                             WMDESKSPRIVATE_LAUNCHDESK)

 protected:
  ~WmDesksPrivateLaunchDeskFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;
  void OnLaunchDesk(std::string error, const base::Uuid& desk_uuid);
};

class WmDesksPrivateRemoveDeskFunction : public ExtensionFunction {
 public:
  WmDesksPrivateRemoveDeskFunction();
  WmDesksPrivateRemoveDeskFunction(const WmDesksPrivateRemoveDeskFunction&) =
      delete;
  WmDesksPrivateRemoveDeskFunction& operator=(
      const WmDesksPrivateRemoveDeskFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.removeDesk",
                             WMDESKSPRIVATE_REMOVEDESK)
 protected:
  ~WmDesksPrivateRemoveDeskFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;

  void OnRemoveDesk(std::string error);
};

class WmDesksPrivateGetAllDesksFunction : public ExtensionFunction {
 public:
  WmDesksPrivateGetAllDesksFunction();
  WmDesksPrivateGetAllDesksFunction(const WmDesksPrivateGetAllDesksFunction&) =
      delete;
  WmDesksPrivateGetAllDesksFunction& operator=(
      const WmDesksPrivateGetAllDesksFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.getAllDesks",
                             WMDESKSPRIVATE_GETALLDESKS)

 protected:
  ~WmDesksPrivateGetAllDesksFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;
  void OnGetAllDesks(std::string error,
                     std::vector<api::wm_desks_private::Desk> desks);
};

class WmDesksPrivateSetWindowPropertiesFunction : public ExtensionFunction {
 public:
  WmDesksPrivateSetWindowPropertiesFunction();
  WmDesksPrivateSetWindowPropertiesFunction(
      const WmDesksPrivateSetWindowPropertiesFunction&) = delete;
  WmDesksPrivateSetWindowPropertiesFunction& operator=(
      const WmDesksPrivateSetWindowPropertiesFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.setWindowProperties",
                             WMDESKSPRIVATE_SETWINDOWPROPERTIES)

 protected:
  ~WmDesksPrivateSetWindowPropertiesFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;

  void OnSetWindowProperties(std::string error);
};

class WmDesksPrivateSaveActiveDeskFunction : public ExtensionFunction {
 public:
  WmDesksPrivateSaveActiveDeskFunction();
  WmDesksPrivateSaveActiveDeskFunction(
      const WmDesksPrivateSaveActiveDeskFunction&) = delete;
  WmDesksPrivateSaveActiveDeskFunction& operator=(
      const WmDesksPrivateSaveActiveDeskFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.saveActiveDesk",
                             WMDESKSPRIVATE_SAVEACTIVEDESK)

 protected:
  ~WmDesksPrivateSaveActiveDeskFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;
  void OnSavedActiveDesk(std::string error,
                         api::wm_desks_private::SavedDesk desk);
};

class WmDesksPrivateDeleteSavedDeskFunction : public ExtensionFunction {
 public:
  WmDesksPrivateDeleteSavedDeskFunction();
  WmDesksPrivateDeleteSavedDeskFunction(
      const WmDesksPrivateDeleteSavedDeskFunction&) = delete;
  WmDesksPrivateDeleteSavedDeskFunction& operator=(
      const WmDesksPrivateDeleteSavedDeskFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.deleteSavedDesk",
                             WMDESKSPRIVATE_DELETESAVEDDESK)

 protected:
  ~WmDesksPrivateDeleteSavedDeskFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;
  void OnDeletedSavedDesk(std::string error);
};

class WmDesksPrivateRecallSavedDeskFunction : public ExtensionFunction {
 public:
  WmDesksPrivateRecallSavedDeskFunction();
  WmDesksPrivateRecallSavedDeskFunction(
      const WmDesksPrivateRecallSavedDeskFunction&) = delete;
  WmDesksPrivateRecallSavedDeskFunction& operator=(
      const WmDesksPrivateRecallSavedDeskFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.recallSavedDesk",
                             WMDESKSPRIVATE_RECALLSAVEDDESK)

 protected:
  ~WmDesksPrivateRecallSavedDeskFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;

  void OnRecalledSavedDesk(std::string error, const base::Uuid& desk_Id);
};

class WmDesksPrivateGetActiveDeskFunction : public ExtensionFunction {
 public:
  WmDesksPrivateGetActiveDeskFunction();
  WmDesksPrivateGetActiveDeskFunction(
      const WmDesksPrivateGetActiveDeskFunction&) = delete;
  WmDesksPrivateGetActiveDeskFunction& operator=(
      const WmDesksPrivateGetActiveDeskFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.getActiveDesk",
                             WMDESKSPRIVATE_GETACTIVEDESK)

 protected:
  ~WmDesksPrivateGetActiveDeskFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;

  void OnGetActiveDesk(std::string error_string, const base::Uuid& desk_Id);
};

class WmDesksPrivateSwitchDeskFunction : public ExtensionFunction {
 public:
  WmDesksPrivateSwitchDeskFunction();
  WmDesksPrivateSwitchDeskFunction(const WmDesksPrivateSwitchDeskFunction&) =
      delete;
  WmDesksPrivateSwitchDeskFunction& operator=(
      const WmDesksPrivateSwitchDeskFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.switchDesk",
                             WMDESKSPRIVATE_SWITCHDESK)

 protected:
  ~WmDesksPrivateSwitchDeskFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;

  void OnSwitchDesk(std::string error_string);
};

class WmDesksPrivateGetDeskByIDFunction : public ExtensionFunction {
 public:
  WmDesksPrivateGetDeskByIDFunction();
  WmDesksPrivateGetDeskByIDFunction(const WmDesksPrivateGetDeskByIDFunction&) =
      delete;
  WmDesksPrivateGetDeskByIDFunction& operator=(
      const WmDesksPrivateGetDeskByIDFunction&) = delete;

  DECLARE_EXTENSION_FUNCTION("wmDesksPrivate.getDeskByID",
                             WMDESKSPRIVATE_GETDESKBYID)

 protected:
  ~WmDesksPrivateGetDeskByIDFunction() override;

  // ExtensionFunction:
  ResponseAction Run() override;

  void OnGetDeskByID(std::string error_string,
                     api::wm_desks_private::Desk desk);
};

}  // namespace extensions

#endif  // CHROME_BROWSER_CHROMEOS_EXTENSIONS_WM_WM_DESKS_PRIVATE_API_H_