Introduce PointerEvent-related definitions

* Resolves https://youtrack.jetbrains.com/issue/KT-23932
 * Backed by review https://upsource.jetbrains.com/kotlin/branch/KT-23932-POINTER-EVENT-FROM-REMOTE-IDL
This commit is contained in:
Shagen Ogandzhanian
2018-12-12 14:50:03 +01:00
parent 2d49268a0b
commit 44da3c89b7
17 changed files with 233 additions and 9 deletions
@@ -0,0 +1,54 @@
namespace org.w3c.dom.pointerevents;
// Downloaded from http://www.w3.org/TR/pointerevents/
dictionary PointerEventInit : MouseEventInit {
long pointerId = 0;
double width = 1;
double height = 1;
float pressure = 0;
float tangentialPressure = 0;
long tiltX = 0;
long tiltY = 0;
long twist = 0;
DOMString pointerType = "";
boolean isPrimary = false;
};
[Constructor(DOMString type, optional PointerEventInit eventInitDict), Exposed=Window]
interface PointerEvent : MouseEvent {
readonly attribute long pointerId;
readonly attribute double width;
readonly attribute double height;
readonly attribute float pressure;
readonly attribute float tangentialPressure;
readonly attribute long tiltX;
readonly attribute long tiltY;
readonly attribute long twist;
readonly attribute DOMString pointerType;
readonly attribute boolean isPrimary;
};
partial interface Element {
void setPointerCapture(long pointerId);
void releasePointerCapture(long pointerId);
boolean hasPointerCapture(long pointerId);
};
partial interface GlobalEventHandlers {
attribute EventHandler ongotpointercapture;
attribute EventHandler onlostpointercapture;
attribute EventHandler onpointerdown;
attribute EventHandler onpointermove;
attribute EventHandler onpointerup;
attribute EventHandler onpointercancel;
attribute EventHandler onpointerover;
attribute EventHandler onpointerout;
attribute EventHandler onpointerenter;
attribute EventHandler onpointerleave;
};
partial interface Navigator {
readonly attribute long maxTouchPoints;
};
@@ -14,6 +14,7 @@ import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
@@ -14,6 +14,7 @@ import org.khronos.webgl.*
import org.w3c.dom.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
@@ -14,6 +14,7 @@ import org.khronos.webgl.*
import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
@@ -14,6 +14,7 @@ import org.khronos.webgl.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
@@ -74,6 +75,16 @@ public external open class Document : Node, GlobalEventHandlers, DocumentAndElem
open val documentElement: Element?
open val scrollingElement: Element?
open val styleSheets: StyleSheetList
override var ongotpointercapture: ((Event) -> dynamic)?
override var onlostpointercapture: ((Event) -> dynamic)?
override var onpointerdown: ((Event) -> dynamic)?
override var onpointermove: ((Event) -> dynamic)?
override var onpointerup: ((Event) -> dynamic)?
override var onpointercancel: ((Event) -> dynamic)?
override var onpointerover: ((Event) -> dynamic)?
override var onpointerout: ((Event) -> dynamic)?
override var onpointerenter: ((Event) -> dynamic)?
override var onpointerleave: ((Event) -> dynamic)?
override var onabort: ((Event) -> dynamic)?
override var onblur: ((Event) -> dynamic)?
override var oncancel: ((Event) -> dynamic)?
@@ -2125,6 +2136,16 @@ public inline fun PromiseRejectionEventInit(promise: Promise<Any?>?, reason: Any
* Exposes the JavaScript [GlobalEventHandlers](https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers) to Kotlin
*/
public external interface GlobalEventHandlers {
var ongotpointercapture: ((Event) -> dynamic)?
var onlostpointercapture: ((Event) -> dynamic)?
var onpointerdown: ((Event) -> dynamic)?
var onpointermove: ((Event) -> dynamic)?
var onpointerup: ((Event) -> dynamic)?
var onpointercancel: ((Event) -> dynamic)?
var onpointerover: ((Event) -> dynamic)?
var onpointerout: ((Event) -> dynamic)?
var onpointerenter: ((Event) -> dynamic)?
var onpointerleave: ((Event) -> dynamic)?
var onabort: ((Event) -> dynamic)?
var onblur: ((Event) -> dynamic)?
var oncancel: ((Event) -> dynamic)?
@@ -2237,6 +2258,7 @@ public external interface WindowOrWorkerGlobalScope {
*/
public external abstract class Navigator : NavigatorID, NavigatorLanguage, NavigatorOnLine, NavigatorContentUtils, NavigatorCookies, NavigatorPlugins, NavigatorConcurrentHardware {
open val serviceWorker: ServiceWorkerContainer
open val maxTouchPoints: Int
fun vibrate(pattern: dynamic): Boolean
}
@@ -3199,6 +3221,9 @@ public external abstract class Element : Node, ParentNode, NonDocumentTypeChildN
open val clientWidth: Int
open val clientHeight: Int
fun requestFullscreen(): Promise<Unit>
fun setPointerCapture(pointerId: Int): Unit
fun releasePointerCapture(pointerId: Int): Unit
fun hasPointerCapture(pointerId: Int): Boolean
fun insertAdjacentHTML(position: String, text: String): Unit
fun hasAttributes(): Boolean
fun getAttributeNames(): Array<String>
@@ -14,6 +14,7 @@ import org.khronos.webgl.*
import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
@@ -0,0 +1,119 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
// NOTE: THIS FILE IS AUTO-GENERATED, DO NOT EDIT!
// See libraries/tools/idl2k for details
@file:Suppress("NESTED_CLASS_IN_EXTERNAL_INTERFACE")
package org.w3c.dom.pointerevents
import kotlin.js.*
import org.khronos.webgl.*
import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
import org.w3c.files.*
import org.w3c.notifications.*
import org.w3c.performance.*
import org.w3c.workers.*
import org.w3c.xhr.*
public external interface PointerEventInit : MouseEventInit {
var pointerId: Int? /* = 0 */
get() = definedExternally
set(value) = definedExternally
var width: Double? /* = 1.0 */
get() = definedExternally
set(value) = definedExternally
var height: Double? /* = 1.0 */
get() = definedExternally
set(value) = definedExternally
var pressure: Float? /* = 0f */
get() = definedExternally
set(value) = definedExternally
var tangentialPressure: Float? /* = 0f */
get() = definedExternally
set(value) = definedExternally
var tiltX: Int? /* = 0 */
get() = definedExternally
set(value) = definedExternally
var tiltY: Int? /* = 0 */
get() = definedExternally
set(value) = definedExternally
var twist: Int? /* = 0 */
get() = definedExternally
set(value) = definedExternally
var pointerType: String? /* = "" */
get() = definedExternally
set(value) = definedExternally
var isPrimary: Boolean? /* = false */
get() = definedExternally
set(value) = definedExternally
}
@kotlin.internal.InlineOnly
public inline fun PointerEventInit(pointerId: Int? = 0, width: Double? = 1.0, height: Double? = 1.0, pressure: Float? = 0f, tangentialPressure: Float? = 0f, tiltX: Int? = 0, tiltY: Int? = 0, twist: Int? = 0, pointerType: String? = "", isPrimary: Boolean? = false, screenX: Int? = 0, screenY: Int? = 0, clientX: Int? = 0, clientY: Int? = 0, button: Short? = 0, buttons: Short? = 0, relatedTarget: EventTarget? = null, ctrlKey: Boolean? = false, shiftKey: Boolean? = false, altKey: Boolean? = false, metaKey: Boolean? = false, modifierAltGraph: Boolean? = false, modifierCapsLock: Boolean? = false, modifierFn: Boolean? = false, modifierFnLock: Boolean? = false, modifierHyper: Boolean? = false, modifierNumLock: Boolean? = false, modifierScrollLock: Boolean? = false, modifierSuper: Boolean? = false, modifierSymbol: Boolean? = false, modifierSymbolLock: Boolean? = false, view: Window? = null, detail: Int? = 0, bubbles: Boolean? = false, cancelable: Boolean? = false, composed: Boolean? = false): PointerEventInit {
val o = js("({})")
o["pointerId"] = pointerId
o["width"] = width
o["height"] = height
o["pressure"] = pressure
o["tangentialPressure"] = tangentialPressure
o["tiltX"] = tiltX
o["tiltY"] = tiltY
o["twist"] = twist
o["pointerType"] = pointerType
o["isPrimary"] = isPrimary
o["screenX"] = screenX
o["screenY"] = screenY
o["clientX"] = clientX
o["clientY"] = clientY
o["button"] = button
o["buttons"] = buttons
o["relatedTarget"] = relatedTarget
o["ctrlKey"] = ctrlKey
o["shiftKey"] = shiftKey
o["altKey"] = altKey
o["metaKey"] = metaKey
o["modifierAltGraph"] = modifierAltGraph
o["modifierCapsLock"] = modifierCapsLock
o["modifierFn"] = modifierFn
o["modifierFnLock"] = modifierFnLock
o["modifierHyper"] = modifierHyper
o["modifierNumLock"] = modifierNumLock
o["modifierScrollLock"] = modifierScrollLock
o["modifierSuper"] = modifierSuper
o["modifierSymbol"] = modifierSymbol
o["modifierSymbolLock"] = modifierSymbolLock
o["view"] = view
o["detail"] = detail
o["bubbles"] = bubbles
o["cancelable"] = cancelable
o["composed"] = composed
return o
}
/**
* Exposes the JavaScript [PointerEvent](https://developer.mozilla.org/en/docs/Web/API/PointerEvent) to Kotlin
*/
public external open class PointerEvent(type: String, eventInitDict: PointerEventInit = definedExternally) : MouseEvent {
open val pointerId: Int
open val width: Double
open val height: Double
open val pressure: Float
open val tangentialPressure: Float
open val tiltX: Int
open val tiltY: Int
open val twist: Int
open val pointerType: String
open val isPrimary: Boolean
}
@@ -15,6 +15,7 @@ import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
import org.w3c.files.*
@@ -15,6 +15,7 @@ import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.fetch.*
import org.w3c.files.*
@@ -15,6 +15,7 @@ import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.files.*
@@ -15,6 +15,7 @@ import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
@@ -15,6 +15,7 @@ import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
@@ -15,6 +15,7 @@ import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
@@ -15,6 +15,7 @@ import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
@@ -15,6 +15,7 @@ import org.w3c.dom.*
import org.w3c.dom.css.*
import org.w3c.dom.events.*
import org.w3c.dom.parsing.*
import org.w3c.dom.pointerevents.*
import org.w3c.dom.svg.*
import org.w3c.dom.url.*
import org.w3c.fetch.*
@@ -24,6 +24,8 @@ val urls = listOf(
"http://www.w3.org/TR/geometry-1/" to "org.w3c.dom",
"http://www.w3.org/TR/cssom-view/" to "org.w3c.dom",
"http://www.w3.org/TR/uievents/" to "org.w3c.dom.events",
"http://www.w3.org/TR/pointerevents/" to "org.w3c.dom.pointerevents",
"https://drafts.csswg.org/cssom/" to "org.w3c.dom.css",
"http://www.w3.org/TR/DOM-Parsing/" to "org.w3c.dom.parsing",
"https://raw.githubusercontent.com/whatwg/url/master/url.html" to "org.w3c.dom.url",
@@ -49,15 +49,18 @@ fun main(args: Array<String>) {
w.appendln()
w.appendln()
e.value.forEach { pair ->
val (url) = pair
e.value.forEach { (url) ->
println("Loading $url...")
w.appendln("// Downloaded from $url")
if (url.endsWith(".idl")) {
w.appendln(URL(url).readText())
} else {
extractIDLText(url, w)
val content = fetch(url)
if (content != null) {
if (url.endsWith(".idl")) {
w.appendln(content)
} else {
extractIDLText(content, w)
}
}
}
@@ -66,9 +69,18 @@ fun main(args: Array<String>) {
}
}
private fun extractIDLText(url: String, out: Appendable) {
// val soup = Jsoup.connect(url).validateTLSCertificates(false).ignoreHttpErrors(true).get()
val soup = Jsoup.parse(URL(url).readText())
private fun fetch(url: String): String? {
try {
return URL(url).readText()
} catch (e: Exception) {
println("failed to download ${url}, if it's not a local problem, revisit the list of downloaded entities")
e.printStackTrace()
return null
}
}
private fun extractIDLText(rawContent: String, out: Appendable) {
val soup = Jsoup.parse(rawContent)
fun append(it : Element) {
if (!it.tag().preserveWhitespace()) {
return append(Element(Tag.valueOf("pre"), it.baseUri()).appendChild(it))