blob: b1a1f493db28e774bc598d4f2b02524b419a95a2 [file] [log] [blame]
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef EXTENSIONS_BROWSER_API_SYSTEM_DISPLAY_SYSTEM_DISPLAY_API_H_
#define EXTENSIONS_BROWSER_API_SYSTEM_DISPLAY_SYSTEM_DISPLAY_API_H_
#include <string>
#include "extensions/browser/extension_function.h"
#include "extensions/common/api/system_display.h"
namespace extensions {
class SystemDisplayFunction : public ExtensionFunction {
public:
static const char kApiNotAvailableError[];
protected:
~SystemDisplayFunction() override = default;
bool PreRunValidation(std::string* error) override;
};
class SystemDisplayCrOSRestrictedFunction : public SystemDisplayFunction {
public:
static const char kCrosOnlyError[];
static const char kKioskOnlyError[];
protected:
~SystemDisplayCrOSRestrictedFunction() override = default;
bool PreRunValidation(std::string* error) override;
// Returns true if this function should be restricted to kiosk-mode apps and
// webui. The default is true.
virtual bool ShouldRestrictToKioskAndWebUI();
};
// This function inherits from SystemDisplayFunction because, unlike the
// rest of this API, it's available on all platforms.
class SystemDisplayGetInfoFunction : public SystemDisplayFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.getInfo", SYSTEM_DISPLAY_GETINFO)
protected:
~SystemDisplayGetInfoFunction() override = default;
ResponseAction Run() override;
void Response(
std::vector<api::system_display::DisplayUnitInfo> all_displays_info);
};
class SystemDisplayGetDisplayLayoutFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.getDisplayLayout",
SYSTEM_DISPLAY_GETDISPLAYLAYOUT)
protected:
~SystemDisplayGetDisplayLayoutFunction() override = default;
ResponseAction Run() override;
bool ShouldRestrictToKioskAndWebUI() override;
void Response(std::vector<api::system_display::DisplayLayout> display_layout);
};
class SystemDisplaySetDisplayPropertiesFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.setDisplayProperties",
SYSTEM_DISPLAY_SETDISPLAYPROPERTIES)
protected:
~SystemDisplaySetDisplayPropertiesFunction() override = default;
ResponseAction Run() override;
void Response(std::optional<std::string> error);
};
class SystemDisplaySetDisplayLayoutFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.setDisplayLayout",
SYSTEM_DISPLAY_SETDISPLAYLAYOUT)
protected:
~SystemDisplaySetDisplayLayoutFunction() override = default;
ResponseAction Run() override;
void Response(std::optional<std::string> error);
};
class SystemDisplayEnableUnifiedDesktopFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.enableUnifiedDesktop",
SYSTEM_DISPLAY_ENABLEUNIFIEDDESKTOP)
protected:
~SystemDisplayEnableUnifiedDesktopFunction() override = default;
ResponseAction Run() override;
};
class SystemDisplayOverscanCalibrationStartFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationStart",
SYSTEM_DISPLAY_OVERSCANCALIBRATIONSTART)
protected:
~SystemDisplayOverscanCalibrationStartFunction() override = default;
ResponseAction Run() override;
};
class SystemDisplayOverscanCalibrationAdjustFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationAdjust",
SYSTEM_DISPLAY_OVERSCANCALIBRATIONADJUST)
protected:
~SystemDisplayOverscanCalibrationAdjustFunction() override = default;
ResponseAction Run() override;
};
class SystemDisplayOverscanCalibrationResetFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationReset",
SYSTEM_DISPLAY_OVERSCANCALIBRATIONRESET)
protected:
~SystemDisplayOverscanCalibrationResetFunction() override = default;
ResponseAction Run() override;
};
class SystemDisplayOverscanCalibrationCompleteFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.overscanCalibrationComplete",
SYSTEM_DISPLAY_OVERSCANCALIBRATIONCOMPLETE)
protected:
~SystemDisplayOverscanCalibrationCompleteFunction() override = default;
ResponseAction Run() override;
};
class SystemDisplayShowNativeTouchCalibrationFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.showNativeTouchCalibration",
SYSTEM_DISPLAY_SHOWNATIVETOUCHCALIBRATION)
protected:
~SystemDisplayShowNativeTouchCalibrationFunction() override = default;
ResponseAction Run() override;
void OnCalibrationComplete(std::optional<std::string> error);
};
class SystemDisplayStartCustomTouchCalibrationFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.startCustomTouchCalibration",
SYSTEM_DISPLAY_STARTCUSTOMTOUCHCALIBRATION)
protected:
~SystemDisplayStartCustomTouchCalibrationFunction() override = default;
ResponseAction Run() override;
};
class SystemDisplayCompleteCustomTouchCalibrationFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.completeCustomTouchCalibration",
SYSTEM_DISPLAY_COMPLETECUSTOMTOUCHCALIBRATION)
protected:
~SystemDisplayCompleteCustomTouchCalibrationFunction() override = default;
ResponseAction Run() override;
};
class SystemDisplayClearTouchCalibrationFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.clearTouchCalibration",
SYSTEM_DISPLAY_CLEARTOUCHCALIBRATION)
protected:
~SystemDisplayClearTouchCalibrationFunction() override = default;
ResponseAction Run() override;
};
class SystemDisplaySetMirrorModeFunction
: public SystemDisplayCrOSRestrictedFunction {
public:
DECLARE_EXTENSION_FUNCTION("system.display.setMirrorMode",
SYSTEM_DISPLAY_SETMIRRORMODE)
protected:
~SystemDisplaySetMirrorModeFunction() override = default;
ResponseAction Run() override;
void Response(std::optional<std::string> error);
};
} // namespace extensions
#endif // EXTENSIONS_BROWSER_API_SYSTEM_DISPLAY_SYSTEM_DISPLAY_API_H_