123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- // Copyright 2021 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.
- module crosapi.mojom;
- import "ui/gfx/geometry/mojom/geometry.mojom";
- // The structs in this file are copied from
- // extensions/common/api/system_display.idl,
- // with explicit versioning added to allow skew. Some simplifications (e.g.,
- // using gfx.mojom classes) are taken from
- // ash/public/mojom/cros_display_config.mojom.
- // However, the two mojoms operate at different layers and have different
- // version stability requirements, so should not be mixed.
- [Stable, RenamedFrom="crosapi.mojom.DisplayMode"]
- struct SysDisplayMode {
- // The display mode sizes in device independent (user visible) pixels.
- gfx.mojom.Size size@0;
- // The display mode size in native pixels.
- gfx.mojom.Size size_in_native_pixels@1;
- // double? |ui_scale| is long deprecated, and therefore excluded.
- // The display mode device scale factor.
- double device_scale_factor@2;
- // The display mode refresh rate in hertz.
- double refresh_rate@3;
- // True if the mode is the display's native mode.
- bool is_native@4;
- // True if the display mode is currently selected.
- bool is_selected@5;
- // Whether |is_interlaced| is defined.
- bool has_is_interlaced@6;
- // True if this mode is interlaced, false if not provided.
- bool is_interlaced@7;
- };
- // EDID extracted parameters. Field description refers to "VESA ENHANCED
- // EXTENDED DISPLAY IDENTIFICATION DATA STANDARD (Defines EDID Structure
- // Version 1, Revision 4)" Release A, Revision 2 September 25, 2006.
- // https://www.vesa.org/vesa-standards
- [Stable, RenamedFrom="crosapi.mojom.Edid"]
- struct SysDisplayEdid {
- // Three character manufacturer code, Sec. 3.4.1 page 21.
- string manufacturer_id@0;
- // Two byte manufacturer-assigned code, Sec. 3.4.2 page 21.
- string product_id@1;
- // Year of manufacture. Sec. 3.4.4 page 22.
- int32 year_of_manufacture@2;
- };
- // Struct to transmit extensions::api::system_display::DisplayUnitInfo.
- [Stable, RenamedFrom="crosapi.mojom.DisplayUnitInfo"]
- struct SysDisplayUnitInfo {
- // The unique identifier of the display.
- string id@0;
- // The user-friendly name (e.g. "Acme LCD monitor").
- string name@1;
- // EDID properties when available.
- SysDisplayEdid? edid@2;
- // Identifier of the display that is being mirrored if mirroring is enabled,
- // otherwise empty. This will be set for all displays (including the display
- // being mirrored).
- string mirroring_source_id@3;
- // Identifiers of the displays to which the source display is being mirrored.
- // Empty if no displays are being mirrored. This will be set to the same value
- // for all displays. This must not include |mirroringSourceId|.
- array<string> mirroring_destination_ids@4;
- // True if this is the primary display.
- bool is_primary@5;
- // True if this is an internal display.
- bool is_internal@6;
- // True if this display is enabled.
- bool is_enabled@7;
- // True for all displays when in unified desktop mode. See documentation
- // for $(ref:enableUnifiedDesktop).
- bool is_unified@8;
- // Whether |is_auto_rotation_allowed| is defined.
- bool has_is_auto_rotation_allowed@9;
- // Optional: True when the auto-rotation is allowed in the device.
- bool is_auto_rotation_allowed@10;
- // The number of pixels per inch along the x-axis.
- double dpi_x@11;
- // The number of pixels per inch along the y-axis.
- double dpi_y@12;
- // The display's clockwise rotation in degrees relative to the vertical
- // position. A value of -1 will be interpreted as auto-rotate when the device
- // is in a physical tablet state.
- int32 rotation@13;
- // The display's logical bounds, represented using Rect.
- gfx.mojom.Rect bounds_as_rect@14;
- // The display's ovserscan insets within its screen's bounds.
- gfx.mojom.Insets overscan@15;
- // The usable work area of the display within the display bounds, represented
- // using Rect. Excludes areas of the display reserved for the OS, e.g. the
- // taskbar and launcher.
- gfx.mojom.Rect work_area_as_rect@16;
- // The list of available display modes. The current mode will have
- // is_selected=true.
- array<SysDisplayMode> modes@17;
- // True if this display has a touch input device associated with it.
- bool has_touch_support@18;
- // True if this display has an accelerometer associated with it.
- bool has_accelerometer_support@19;
- // The list of allowed zoom factor values for the display.
- array<double> available_display_zoom_factors@20;
- // The ratio between the display's current and default zoom. i.e. 1.0 is
- // is equivalent to 100% zoom, and value 1.5 is equivalent to 150% zoom.
- double display_zoom_factor@21;
- };
- // Interface for display change observer. Implemented by lacros-chrome. Used by
- // ash-chrome to send display change event.
- [Stable, Uuid="5c1e28fd-2f79-4b47-ab7c-780ef0cd2b0a"]
- interface DisplayChangeObserver {
- // Called by ash-chrome when display changes.
- OnCrosapiDisplayChanged@0();
- };
- // Crosapi support for chrome.system.display extensions API.
- [Stable, Uuid="07f25a88-9762-4876-a8ce-2c1e6ad9f797"]
- interface SystemDisplay {
- // Returns the properties for all displays. If |single_unified| is true, a
- // single display will be returned if the display layout is in unifed mode.
- GetDisplayUnitInfoList@0(bool single_unified) =>
- (array<SysDisplayUnitInfo> info_list);
- // Adds an observer for display change. Multiple observers may be registered.
- [MinVersion=1] AddDisplayChangeObserver@1(
- pending_remote<DisplayChangeObserver> observer);
- };
|