in remote-fixtures/src/main/kotlin/com/intellij/remoterobot/fixtures/TextEditorFixture.kt [66:100]
fun getIcons(): List<GutterIcon> {
val icons = callJs<ArrayList<String>>(
"""
const iconsArray = new ArrayList()
const method = component.getClass().getDeclaredMethod('processGutterRenderers')
method.setAccessible(true)
try {
const iteratable = method.invoke(component)
const iterator = iteratable.iterator()
while(iterator.hasNext()) {
let lineInfo = iterator.next()
let renderers = lineInfo.getValue()
for (let i = 0; i < renderers.size(); i++) {
let icon = {
point: {}
}
let renderer = renderers.get(i)
let point = component.getCenterPoint(renderer)
if (point) {
icon.description = new String(renderer.getIcon().toString())
icon.point.x = point.x
icon.point.y = point.y
icon.lineNumber = parseInt(lineInfo.getKey() + 1)
iconsArray.add(JSON.stringify(icon))
}
}
}
} finally {
method.setAccessible(false)
}
iconsArray
""", true
)
return icons.map { Gson().fromJson(it, GutterIconInfo::class.java) }.map { GutterIcon(this, it) }
}