blob: b971f3eed55e016cc73c156f107774ba7c21b65d [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Use the <code>system.display</code> API to query display metadata.
namespace system.display {
dictionary Bounds {
// The x-coordinate of the upper-left corner.
long left;
// The y-coordinate of the upper-left corner.
long top;
// The width of the display in pixels.
long width;
// The height of the display in pixels.
long height;
};
dictionary Insets {
// The x-axis distance from the left bound.
long left;
// The y-axis distance from the top bound.
long top;
// The x-axis distance from the right bound.
long right;
// The y-axis distance from the bottom bound.
long bottom;
};
dictionary DisplayUnitInfo {
// The unique identifier of the display.
DOMString id;
// The user-friendly name (e.g. "HP LCD monitor").
DOMString name;
// Identifier of the display that is being mirrored on the display unit.
// If mirroring is not in progress, set to an empty string.
// Currently exposed only on ChromeOS. Will be empty string on other
// platforms.
DOMString mirroringSourceId;
// True if this is the primary display.
boolean isPrimary;
// True if this is an internal display.
boolean isInternal;
// True if this display is enabled.
boolean isEnabled;
// The number of pixels per inch along the x-axis.
double dpiX;
// The number of pixels per inch along the y-axis.
double dpiY;
// The display's clockwise rotation in degrees relative to the vertical
// position.
// Currently exposed only on ChromeOS. Will be set to 0 on other platforms.
long rotation;
// The display's logical bounds.
Bounds bounds;
// The display's insets within its screen's bounds.
// Currently exposed only on ChromeOS. Will be set to empty insets on
// other platforms.
Insets overscan;
// The usable work area of the display within the display bounds. The work
// area excludes areas of the display reserved for OS, for example taskbar
// and launcher.
Bounds workArea;
};
dictionary DisplayProperties {
// If set and not empty, starts mirroring between this and the display with
// the provided id (the system will determine which of the displays is
// actually mirrored).
// If set and not empty, stops mirroring between this and the display with
// the specified id (if mirroring is in progress).
// If set, no other parameter may be set.
DOMString? mirroringSourceId;
// If set to true, makes the display primary. No-op if set to false.
boolean? isPrimary;
// If set, sets the display's overscan insets to the provided values. Note
// that overscan values may not be negative or larger than a half of the
// screen's size. Overscan cannot be changed on the internal monitor.
// It's applied after <code>isPrimary</code> parameter.
Insets? overscan;
// If set, updates the display's rotation.
// Legal values are [0, 90, 180, 270]. The rotation is set clockwise,
// relative to the display's vertical position.
// It's applied after <code>overscan</code> paramter.
long? rotation;
// If set, updates the display's logical bounds origin along x-axis. Applied
// together with <code>boundsOriginY</code>, if <code>boundsOriginY</code>
// is set. Note that, when updating the display origin, some constraints
// will be applied, so the final bounds origin may be different than the one
// set. The final bounds can be retrieved using $(ref:getInfo).
// The bounds origin is applied after <code>rotation</code>.
// The bounds origin cannot be changed on the primary display. Note that is
// also invalid to set bounds origin values if <code>isPrimary</code> is
// also set (as <code>isPrimary</code> parameter is applied first).
long? boundsOriginX;
// If set, updates the display's logical bounds origin along y-axis.
// See documentation for <code>boundsOriginX</code> parameter.
long? boundsOriginY;
};
callback DisplayInfoCallback = void (DisplayUnitInfo[] displayInfo);
callback SetDisplayUnitInfoCallback = void();
interface Functions {
// Get the information of all attached display devices.
static void getInfo(DisplayInfoCallback callback);
// Updates the properties for the display specified by |id|, according to
// the information provided in |info|. On failure, $(ref:runtime.lastError)
// will be set.
// |id|: The display's unique identifier.
// |info|: The information about display properties that should be changed.
// A property will be changed only if a new value for it is specified in
// |info|.
// |callback|: Empty function called when the function finishes. To find out
// whether the function succeeded, $(ref:runtime.lastError) should be
// queried.
static void setDisplayProperties(
DOMString id,
DisplayProperties info,
optional SetDisplayUnitInfoCallback callback);
};
interface Events {
// Fired when anything changes to the display configuration.
static void onDisplayChanged();
};
};