mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
WEB-23769 JS debugger: update wip protocol to chrome 54
This commit is contained in:
+74
-72
@@ -15,18 +15,18 @@ internal class ProtocolSchemaReaderImpl : org.jetbrains.jsonProtocol.ProtocolSch
|
||||
private var _domains: List<org.jetbrains.jsonProtocol.ProtocolMetaModel.Domain>? = null
|
||||
|
||||
init {
|
||||
var name = preReadName
|
||||
if (name == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
name = reader.nextName()
|
||||
var _n = preReadName
|
||||
if (_n == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
_n = reader.nextName()
|
||||
}
|
||||
|
||||
loop@ while (name != null) {
|
||||
when (name) {
|
||||
loop@ while (_n != null) {
|
||||
when (_n) {
|
||||
"version" -> version = M1(reader, null)
|
||||
"domains" -> _domains = readObjectArray(reader, FM2())
|
||||
else -> reader.skipValue()
|
||||
}
|
||||
name = reader.nextNameOrNull()
|
||||
_n = reader.nextNameOrNull()
|
||||
}
|
||||
|
||||
reader.endObject()
|
||||
@@ -42,18 +42,18 @@ internal class ProtocolSchemaReaderImpl : org.jetbrains.jsonProtocol.ProtocolSch
|
||||
private var _minor: String? = null
|
||||
|
||||
init {
|
||||
var name = preReadName
|
||||
if (name == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
name = reader.nextName()
|
||||
var _n = preReadName
|
||||
if (_n == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
_n = reader.nextName()
|
||||
}
|
||||
|
||||
loop@ while (name != null) {
|
||||
when (name) {
|
||||
loop@ while (_n != null) {
|
||||
when (_n) {
|
||||
"major" -> _major = reader.nextString()
|
||||
"minor" -> _minor = reader.nextString()
|
||||
else -> reader.skipValue()
|
||||
}
|
||||
name = reader.nextNameOrNull()
|
||||
_n = reader.nextNameOrNull()
|
||||
}
|
||||
|
||||
reader.endObject()
|
||||
@@ -69,28 +69,30 @@ internal class ProtocolSchemaReaderImpl : org.jetbrains.jsonProtocol.ProtocolSch
|
||||
private class M2(reader: JsonReaderEx, preReadName: String?) : org.jetbrains.jsonProtocol.ProtocolMetaModel.Domain {
|
||||
override var description: String? = null
|
||||
override var events: List<org.jetbrains.jsonProtocol.ProtocolMetaModel.Event>? = null
|
||||
override var experimental = false
|
||||
override var hidden = false
|
||||
override var types: List<org.jetbrains.jsonProtocol.ProtocolMetaModel.StandaloneType>? = null
|
||||
private var _commands: List<org.jetbrains.jsonProtocol.ProtocolMetaModel.Command>? = null
|
||||
private var _domain: String? = null
|
||||
|
||||
init {
|
||||
var name = preReadName
|
||||
if (name == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
name = reader.nextName()
|
||||
var _n = preReadName
|
||||
if (_n == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
_n = reader.nextName()
|
||||
}
|
||||
|
||||
loop@ while (name != null) {
|
||||
when (name) {
|
||||
"description" -> description = reader.nextString()
|
||||
loop@ while (_n != null) {
|
||||
when (_n) {
|
||||
"description" -> description = reader.nextNullableString()
|
||||
"events" -> events = readObjectArray(reader, FM5())
|
||||
"experimental" -> experimental = reader.nextBoolean()
|
||||
"hidden" -> hidden = reader.nextBoolean()
|
||||
"types" -> types = readObjectArray(reader, FM6())
|
||||
"commands" -> _commands = readObjectArray(reader, FM3())
|
||||
"domain" -> _domain = reader.nextString()
|
||||
else -> reader.skipValue()
|
||||
}
|
||||
name = reader.nextNameOrNull()
|
||||
_n = reader.nextNameOrNull()
|
||||
}
|
||||
|
||||
reader.endObject()
|
||||
@@ -100,7 +102,7 @@ internal class ProtocolSchemaReaderImpl : org.jetbrains.jsonProtocol.ProtocolSch
|
||||
|
||||
override fun domain() = _domain!!
|
||||
|
||||
override fun equals(other: Any?): Boolean = other is M2 && hidden == other.hidden && description == other.description && _domain == other._domain && events == other.events && types == other.types && _commands == other._commands
|
||||
override fun equals(other: Any?): Boolean = other is M2 && experimental == other.experimental && hidden == other.hidden && description == other.description && _domain == other._domain && events == other.events && types == other.types && _commands == other._commands
|
||||
}
|
||||
|
||||
private class M3(reader: JsonReaderEx, preReadName: String?) : org.jetbrains.jsonProtocol.ProtocolMetaModel.Command {
|
||||
@@ -112,22 +114,22 @@ internal class ProtocolSchemaReaderImpl : org.jetbrains.jsonProtocol.ProtocolSch
|
||||
private var _name: String? = null
|
||||
|
||||
init {
|
||||
var name = preReadName
|
||||
if (name == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
name = reader.nextName()
|
||||
var _n = preReadName
|
||||
if (_n == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
_n = reader.nextName()
|
||||
}
|
||||
|
||||
loop@ while (name != null) {
|
||||
when (name) {
|
||||
loop@ while (_n != null) {
|
||||
when (_n) {
|
||||
"async" -> async = reader.nextBoolean()
|
||||
"description" -> description = reader.nextString()
|
||||
"description" -> description = reader.nextNullableString()
|
||||
"hidden" -> hidden = reader.nextBoolean()
|
||||
"parameters" -> parameters = readObjectArray(reader, FM4())
|
||||
"returns" -> returns = readObjectArray(reader, FM4())
|
||||
"name" -> _name = reader.nextString()
|
||||
else -> reader.skipValue()
|
||||
}
|
||||
name = reader.nextNameOrNull()
|
||||
_n = reader.nextNameOrNull()
|
||||
}
|
||||
|
||||
reader.endObject()
|
||||
@@ -151,26 +153,26 @@ internal class ProtocolSchemaReaderImpl : org.jetbrains.jsonProtocol.ProtocolSch
|
||||
override var type: String? = null
|
||||
|
||||
init {
|
||||
var name = preReadName
|
||||
if (name == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
name = reader.nextName()
|
||||
var _n = preReadName
|
||||
if (_n == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
_n = reader.nextName()
|
||||
}
|
||||
|
||||
loop@ while (name != null) {
|
||||
when (name) {
|
||||
"default" -> default = reader.nextString()
|
||||
loop@ while (_n != null) {
|
||||
when (_n) {
|
||||
"default" -> default = readRawString(reader)
|
||||
"hidden" -> hidden = reader.nextBoolean()
|
||||
"optional" -> optional = reader.nextBoolean()
|
||||
"shortName" -> shortName = reader.nextString()
|
||||
"shortName" -> shortName = reader.nextNullableString()
|
||||
"name" -> _name = reader.nextString()
|
||||
"\$ref" -> ref = reader.nextString()
|
||||
"description" -> description = reader.nextString()
|
||||
"\$ref" -> ref = reader.nextNullableString()
|
||||
"description" -> description = reader.nextNullableString()
|
||||
"enum" -> enum = nextList(reader)
|
||||
"items" -> items = M7(reader, null)
|
||||
"type" -> type = reader.nextString()
|
||||
"type" -> type = reader.nextNullableString()
|
||||
else -> reader.skipValue()
|
||||
}
|
||||
name = reader.nextNameOrNull()
|
||||
_n = reader.nextNameOrNull()
|
||||
}
|
||||
|
||||
reader.endObject()
|
||||
@@ -189,21 +191,21 @@ internal class ProtocolSchemaReaderImpl : org.jetbrains.jsonProtocol.ProtocolSch
|
||||
private var _name: String? = null
|
||||
|
||||
init {
|
||||
var name = preReadName
|
||||
if (name == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
name = reader.nextName()
|
||||
var _n = preReadName
|
||||
if (_n == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
_n = reader.nextName()
|
||||
}
|
||||
|
||||
loop@ while (name != null) {
|
||||
when (name) {
|
||||
"description" -> description = reader.nextString()
|
||||
loop@ while (_n != null) {
|
||||
when (_n) {
|
||||
"description" -> description = reader.nextNullableString()
|
||||
"hidden" -> hidden = reader.nextBoolean()
|
||||
"optionalData" -> optionalData = reader.nextBoolean()
|
||||
"parameters" -> parameters = readObjectArray(reader, FM4())
|
||||
"name" -> _name = reader.nextString()
|
||||
else -> reader.skipValue()
|
||||
}
|
||||
name = reader.nextNameOrNull()
|
||||
_n = reader.nextNameOrNull()
|
||||
}
|
||||
|
||||
reader.endObject()
|
||||
@@ -224,23 +226,23 @@ internal class ProtocolSchemaReaderImpl : org.jetbrains.jsonProtocol.ProtocolSch
|
||||
override var type: String? = null
|
||||
|
||||
init {
|
||||
var name = preReadName
|
||||
if (name == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
name = reader.nextName()
|
||||
var _n = preReadName
|
||||
if (_n == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
_n = reader.nextName()
|
||||
}
|
||||
|
||||
loop@ while (name != null) {
|
||||
when (name) {
|
||||
loop@ while (_n != null) {
|
||||
when (_n) {
|
||||
"hidden" -> hidden = reader.nextBoolean()
|
||||
"id" -> _id = reader.nextString()
|
||||
"properties" -> properties = readObjectArray(reader, FM8())
|
||||
"description" -> description = reader.nextString()
|
||||
"description" -> description = reader.nextNullableString()
|
||||
"enum" -> enum = nextList(reader)
|
||||
"items" -> items = M7(reader, null)
|
||||
"type" -> type = reader.nextString()
|
||||
"type" -> type = reader.nextNullableString()
|
||||
else -> reader.skipValue()
|
||||
}
|
||||
name = reader.nextNameOrNull()
|
||||
_n = reader.nextNameOrNull()
|
||||
}
|
||||
|
||||
reader.endObject()
|
||||
@@ -261,23 +263,23 @@ internal class ProtocolSchemaReaderImpl : org.jetbrains.jsonProtocol.ProtocolSch
|
||||
override var ref: String? = null
|
||||
|
||||
init {
|
||||
var name = preReadName
|
||||
if (name == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
name = reader.nextName()
|
||||
var _n = preReadName
|
||||
if (_n == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
_n = reader.nextName()
|
||||
}
|
||||
|
||||
loop@ while (name != null) {
|
||||
when (name) {
|
||||
loop@ while (_n != null) {
|
||||
when (_n) {
|
||||
"optional" -> optional = reader.nextBoolean()
|
||||
"properties" -> properties = readObjectArray(reader, FM8())
|
||||
"description" -> description = reader.nextString()
|
||||
"description" -> description = reader.nextNullableString()
|
||||
"enum" -> enum = nextList(reader)
|
||||
"items" -> items = M7(reader, null)
|
||||
"type" -> type = reader.nextString()
|
||||
"\$ref" -> ref = reader.nextString()
|
||||
"type" -> type = reader.nextNullableString()
|
||||
"\$ref" -> ref = reader.nextNullableString()
|
||||
else -> reader.skipValue()
|
||||
}
|
||||
name = reader.nextNameOrNull()
|
||||
_n = reader.nextNameOrNull()
|
||||
}
|
||||
|
||||
reader.endObject()
|
||||
@@ -298,25 +300,25 @@ internal class ProtocolSchemaReaderImpl : org.jetbrains.jsonProtocol.ProtocolSch
|
||||
override var type: String? = null
|
||||
|
||||
init {
|
||||
var name = preReadName
|
||||
if (name == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
name = reader.nextName()
|
||||
var _n = preReadName
|
||||
if (_n == null && reader.hasNext() && reader.beginObject().hasNext()) {
|
||||
_n = reader.nextName()
|
||||
}
|
||||
|
||||
loop@ while (name != null) {
|
||||
when (name) {
|
||||
loop@ while (_n != null) {
|
||||
when (_n) {
|
||||
"hidden" -> hidden = reader.nextBoolean()
|
||||
"name" -> _name = reader.nextString()
|
||||
"optional" -> optional = reader.nextBoolean()
|
||||
"shortName" -> shortName = reader.nextString()
|
||||
"\$ref" -> ref = reader.nextString()
|
||||
"description" -> description = reader.nextString()
|
||||
"shortName" -> shortName = reader.nextNullableString()
|
||||
"\$ref" -> ref = reader.nextNullableString()
|
||||
"description" -> description = reader.nextNullableString()
|
||||
"enum" -> enum = nextList(reader)
|
||||
"items" -> items = M7(reader, null)
|
||||
"type" -> type = reader.nextString()
|
||||
"type" -> type = reader.nextNullableString()
|
||||
else -> reader.skipValue()
|
||||
}
|
||||
name = reader.nextNameOrNull()
|
||||
_n = reader.nextNameOrNull()
|
||||
}
|
||||
|
||||
reader.endObject()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.jetbrains.protocolModelGenerator
|
||||
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.util.containers.ContainerUtil
|
||||
import com.intellij.util.containers.isNullOrEmpty
|
||||
import gnu.trove.THashMap
|
||||
import org.jetbrains.io.JsonReaderEx
|
||||
@@ -15,17 +16,28 @@ import java.util.*
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val outputDir = args[0]
|
||||
val schemaUrl = args[1]
|
||||
val bytes: ByteArray
|
||||
if (schemaUrl.startsWith("http")) {
|
||||
bytes = loadBytes(URL(schemaUrl).openStream())
|
||||
val roots = IntRange(3, args.size - 1).map {
|
||||
val schemaUrl = args[it]
|
||||
val bytes: ByteArray
|
||||
if (schemaUrl.startsWith("http")) {
|
||||
bytes = loadBytes(URL(schemaUrl).openStream())
|
||||
}
|
||||
else {
|
||||
bytes = Files.readAllBytes(FileSystems.getDefault().getPath(schemaUrl))
|
||||
}
|
||||
val reader = JsonReaderEx(bytes.toString(Charsets.UTF_8))
|
||||
reader.isLenient = true
|
||||
ProtocolSchemaReaderImpl().parseRoot(reader)
|
||||
}
|
||||
else {
|
||||
bytes = Files.readAllBytes(FileSystems.getDefault().getPath(schemaUrl))
|
||||
val mergedRoot = if (roots.size == 1) roots[0] else object : ProtocolMetaModel.Root {
|
||||
override val version: ProtocolMetaModel.Version?
|
||||
get() = roots[0].version
|
||||
|
||||
override fun domains(): List<ProtocolMetaModel.Domain> {
|
||||
return ContainerUtil.concat(roots.map { it.domains() })
|
||||
}
|
||||
}
|
||||
val reader = JsonReaderEx(bytes.toString(Charsets.UTF_8))
|
||||
reader.isLenient = true
|
||||
Generator(outputDir, args[2], args[3], ProtocolSchemaReaderImpl().parseRoot(reader))
|
||||
Generator(outputDir, args[1], args[2], mergedRoot)
|
||||
}
|
||||
|
||||
private fun loadBytes(stream: InputStream): ByteArray {
|
||||
@@ -74,7 +86,7 @@ internal class Generator(outputDir: String, private val rootPackage: String, req
|
||||
val domainGeneratorMap = THashMap<String, DomainGenerator>()
|
||||
|
||||
for (domain in domainList) {
|
||||
if (isDomainSkipped(domain)) {
|
||||
if (!INCLUDED_DOMAINS.contains(domain.domain())) {
|
||||
System.out.println("Domain skipped: ${domain.domain()}")
|
||||
continue
|
||||
}
|
||||
@@ -218,14 +230,9 @@ internal class Generator(outputDir: String, private val rootPackage: String, req
|
||||
|
||||
val READER_INTERFACE_NAME = "ProtocolResponseReader"
|
||||
|
||||
private fun isDomainSkipped(domain: ProtocolMetaModel.Domain): Boolean {
|
||||
if (domain.domain() == "CSS" || domain.domain() == "Inspector" || domain.domain() == "Worker" || domain.domain() == "ServiceWorker") {
|
||||
return false
|
||||
}
|
||||
|
||||
// todo DOMDebugger
|
||||
return domain.hidden || domain.domain() == "DOMDebugger" || domain.domain() == "Timeline" || domain.domain() == "Input"
|
||||
}
|
||||
private val INCLUDED_DOMAINS = arrayOf("CSS", "Debugger", "DOM", "Inspector", "Log", "Network", "Page", "Runtime", "ServiceWorker",
|
||||
"Tracing", "Worker")
|
||||
|
||||
fun generateMethodNameSubstitute(originalName: String, out: TextOutput): String {
|
||||
if (originalName != "this") {
|
||||
|
||||
@@ -12,13 +12,17 @@ internal class TypeMap {
|
||||
|
||||
var domainGeneratorMap: Map<String, DomainGenerator>? = null
|
||||
|
||||
private val typesToGenerate = ArrayList<StandaloneTypeBinding>()
|
||||
private val typesToGenerate = ArrayDeque<StandaloneTypeBinding>()
|
||||
|
||||
fun resolve(domainName: String, typeName: String, direction: TypeData.Direction): BoxableType? {
|
||||
val domainGenerator = domainGeneratorMap!!.get(domainName)
|
||||
if (domainGenerator == null) {
|
||||
val qName = "$domainName.$typeName";
|
||||
if (qName == "IO.StreamHandle" || qName == "Security.SecurityState" || qName == "Emulation.ScreenOrientation") {
|
||||
if (qName == "IO.StreamHandle" ||
|
||||
qName == "Security.SecurityState" ||
|
||||
qName == "Security.CertificateId" ||
|
||||
qName == "Emulation.ScreenOrientation"
|
||||
) {
|
||||
return BoxableType.ANY_STRING // ignore
|
||||
}
|
||||
throw RuntimeException("Failed to find domain generator: $domainName for type $typeName")
|
||||
@@ -27,25 +31,17 @@ internal class TypeMap {
|
||||
}
|
||||
|
||||
fun addTypeToGenerate(binding: StandaloneTypeBinding) {
|
||||
typesToGenerate.add(binding)
|
||||
typesToGenerate.offer(binding)
|
||||
}
|
||||
|
||||
fun generateRequestedTypes() {
|
||||
// size may grow during iteration
|
||||
var list = typesToGenerate.toTypedArray()
|
||||
typesToGenerate.clear()
|
||||
while (true) {
|
||||
for (binding in list) {
|
||||
val createdTypes = HashSet<CharSequence>()
|
||||
while (typesToGenerate.isNotEmpty()) {
|
||||
val binding = typesToGenerate.poll()
|
||||
if (createdTypes.add(binding.getJavaType().fullText)) {
|
||||
binding.generate()
|
||||
}
|
||||
|
||||
if (typesToGenerate.isEmpty()) {
|
||||
break
|
||||
}
|
||||
else {
|
||||
list = typesToGenerate.toTypedArray()
|
||||
typesToGenerate.clear()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -71,6 +71,8 @@ interface ProtocolMetaModel {
|
||||
val description: String?
|
||||
|
||||
val hidden: Boolean
|
||||
|
||||
val experimental: Boolean
|
||||
}
|
||||
|
||||
interface Command {
|
||||
|
||||
Reference in New Issue
Block a user