summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaloyan Chehlarski <kaloyan.chehlarski@qt.io>2025-11-04 10:32:53 +0100
committerKaloyan Chehlarski <kaloyan.chehlarski@qt.io>2025-11-26 20:58:00 +0100
commit578d9b0c2940a64b431b30460fb6654dbc290106 (patch)
tree18853d6158b3074ce570b8bb5a497e338be11494
parent5f45d1ecfbd2747747653d67397f8d8191dbafb7 (diff)
Quick: Add runJavaScript overload with std::function callback
This is to be used in QWebView, where the WebEngine backend is based on our Quick API. With the addition of a C++ WebView API, we need a way to call C++ callbacks, and the JavaScript-based callback mechanism that's currently there is insufficient. We can't expose an std::function parameter to QML, so this overload is there for internal use only. Change-Id: I22b17c2d2ba554078d0e1e39110147399e93102b Reviewed-by: Michal Klocek <michal.klocek@qt.io>
-rw-r--r--src/webenginequick/api/qquickwebengineview.cpp6
-rw-r--r--src/webenginequick/api/qquickwebengineview_p.h3
2 files changed, 9 insertions, 0 deletions
diff --git a/src/webenginequick/api/qquickwebengineview.cpp b/src/webenginequick/api/qquickwebengineview.cpp
index d06185380..f0d972448 100644
--- a/src/webenginequick/api/qquickwebengineview.cpp
+++ b/src/webenginequick/api/qquickwebengineview.cpp
@@ -1504,6 +1504,12 @@ bool QQuickWebEngineView::canGoForward() const
return d->adapter->canGoForward();
}
+void QQuickWebEngineView::runJavaScript(const QString &script, const std::function<void(const QVariant &)> &resultCallback)
+{
+ Q_D(QQuickWebEngineView);
+ d->runJavaScript(script, QWebEngineScript::MainWorld, WebContentsAdapter::kUseMainFrameId, resultCallback);
+}
+
void QQuickWebEngineView::runJavaScript(const QString &script, const QJSValue &callback)
{
runJavaScript(script, QWebEngineScript::MainWorld, callback);
diff --git a/src/webenginequick/api/qquickwebengineview_p.h b/src/webenginequick/api/qquickwebengineview_p.h
index e87e507a0..ddbcfe086 100644
--- a/src/webenginequick/api/qquickwebengineview_p.h
+++ b/src/webenginequick/api/qquickwebengineview_p.h
@@ -480,6 +480,9 @@ QT_WARNING_POP
QQuickWebEngineFrame mainFrame();
Q_REVISION(6, 8) Q_INVOKABLE QQuickWebEngineFrame findFrameByName(const QString &name);
+ // Used by QWebView. Not callable through QML
+ void runJavaScript(const QString &script, const std::function<void(const QVariant &)> &resultCallback);
+
public Q_SLOTS:
void runJavaScript(const QString&, const QJSValue & = QJSValue());
Q_REVISION(1,3) void runJavaScript(const QString&, quint32 worldId, const QJSValue & = QJSValue());