// Copyright 2015 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.

// https://w3c.github.io/pointerevents/#pointerevent-interface

[
    Exposed=Window
] interface PointerEvent : MouseEvent {
    constructor(DOMString type, optional PointerEventInit eventInitDict = {});
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute long      pointerId;
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute double    width;
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute double    height;
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute float     pressure;
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute long      tiltX;
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute long      tiltY;
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute double    azimuthAngle;
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute double    altitudeAngle;
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute float     tangentialPressure;
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute long      twist;
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute DOMString pointerType;
    [MeasureAs=PointerEventAttributeCount]   readonly    attribute boolean   isPrimary;

    // https://w3c.github.io/pointerevents/extension.html#extensions-to-the-pointerevent-interface
    sequence<PointerEvent> getCoalescedEvents();
    [Measure] sequence<PointerEvent> getPredictedEvents();
};
