IJPL-190637 add jcef JavaScript verbose logs

GitOrigin-RevId: e281f3982b7a007b86d52d019248863e178a3a6c
This commit is contained in:
Vladimir Kharitonov
2025-10-08 12:03:50 +02:00
committed by intellij-monorepo-bot
parent dce366089e
commit 6c61dabd33
7 changed files with 21 additions and 12 deletions

View File

@@ -164,7 +164,7 @@ class JCefImageViewer(private val myFile: VirtualFile,
override fun getZoomModel(): ImageZoomModel = ZOOM_MODEL
override fun isGridVisible(): Boolean = myState.status == ViewerState.Status.OK && myState.gridEnabled
fun getZoom() = myState.zoom
private fun execute(@Language("javascript") script: String) = myBrowser.cefBrowser.executeJavaScript(script, myBrowser.cefBrowser.url, 0)
private fun execute(@Language("javascript") script: String) = myBrowser.runJavaScript(script, myBrowser.cefBrowser.url, 0)
private val ZOOM_MODEL: ImageZoomModel = object : ImageZoomModel {
override fun getZoomFactor(): Double = myState.zoom

View File

@@ -1,3 +1,6 @@
a:com.intellij.ui.jcef.JBCefBrowserBase
- runJavaScript(java.lang.String):V
- runJavaScript(java.lang.String,java.lang.String,I):V
com.intellij.ui.jcef.JBCefBrowserBase$ErrorPage
- sf:DEFAULT:com.intellij.ui.jcef.JBCefBrowserBase$ErrorPage
- a:create(org.cef.handler.CefLoadHandler$ErrorCode,java.lang.String,java.lang.String):java.lang.String

View File

@@ -35,6 +35,7 @@ import org.cef.misc.Utils;
import org.cef.network.CefCookieManager;
import org.cef.network.CefRequest;
import org.cef.security.CefSSLInfo;
import org.intellij.lang.annotations.Language;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -928,4 +929,15 @@ public abstract class JBCefBrowserBase implements JBCefDisposable {
return browser;
}
public void runJavaScript(@Language("JavaScript") String code) {
runJavaScript(code, null, 0);
}
public void runJavaScript(@Language("JavaScript") String code, String url, int line) {
if (Utils.getBoolean("ide.browser.jcef.log.extended", false)) {
CefLog.Debug("%s.runJavaScript(%s)", myCefBrowser.toString(), code);
}
myCefBrowser.executeJavaScript(code, url, line);
}
}

View File

@@ -1,7 +1,6 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.intellij.plugins.markdown.ui.preview.jcef
import com.intellij.ide.ui.UISettingsListener
import com.intellij.openapi.application.readAction
import com.intellij.openapi.components.service
import com.intellij.openapi.diagnostic.logger
@@ -248,13 +247,13 @@ class MarkdownJCEFHtmlPanel(private val project: Project?, private val virtualFi
@Suppress("OVERRIDE_DEPRECATION")
override fun scrollToMarkdownSrcOffset(offset: Int, smooth: Boolean) {
executeJavaScript("window.scrollController?.scrollTo($offset, $smooth)")
runJavaScript("window.scrollController?.scrollTo($offset, $smooth)")
}
override fun scrollBy(horizontalUnits: Int, verticalUnits: Int) {
val horizontal = JBCefApp.normalizeScaledSize(horizontalUnits)
val vertical = JBCefApp.normalizeScaledSize(verticalUnits)
executeJavaScript("window.scrollController?.scrollBy($horizontal, $vertical)")
runJavaScript("window.scrollController?.scrollBy($horizontal, $vertical)")
}
private val previewInnerComponent by lazy { super.getComponent() }
@@ -339,7 +338,7 @@ class MarkdownJCEFHtmlPanel(private val project: Project?, private val virtualFi
| styles.setProperty("${PreviewLAFThemeStyles.Variables.FontSize}", "${scaled}px");
|})();
""".trimMargin()
executeJavaScript(code)
runJavaScript(code)
}
private fun createFileSchemeResourcesProcessor(projectRoot: VirtualFile?): ResourceProvider? {

View File

@@ -67,7 +67,7 @@ internal suspend fun executeCancellableJsCall(browser: JBCefBrowser, @Language("
}
try {
val wrappedCode = wrapWithErrorHandling(code, resultQuery, errorQuery)
browser.executeJavaScript(wrappedCode)
browser.runJavaScript(wrappedCode)
} catch (exception: Exception) {
continuation.resumeWithException(exception)
}

View File

@@ -70,7 +70,7 @@ internal class JcefBrowserPipeImpl(
override fun send(type: String, data: String) {
val raw = jacksonObjectMapper().writeValueAsString(PackedMessage(type, data))
logger.debug("Sending message: $raw")
browser.cefBrowser.executeJavaScript(postToBrowserFunctionCall(raw), null, 0)
browser.runJavaScript(postToBrowserFunctionCall(raw), null, 0)
}
override fun dispose() {

View File

@@ -11,14 +11,9 @@ import org.cef.browser.CefFrame
import org.cef.handler.CefLoadHandler
import org.cef.handler.CefLoadHandlerAdapter
import org.cef.handler.CefRequestHandler
import org.intellij.lang.annotations.Language
import kotlin.coroutines.resume
import kotlin.coroutines.resumeWithException
internal fun JBCefBrowser.executeJavaScript(@Language("JavaScript") code: String) {
cefBrowser.executeJavaScript(code, null, 0)
}
internal fun JBCefClient.addRequestHandler(handler: CefRequestHandler, browser: CefBrowser, parentDisposable: Disposable) {
Disposer.register(parentDisposable) { removeRequestHandler(handler, browser) }
addRequestHandler(handler, browser)