summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/api/qwebenginepage.cpp10
-rw-r--r--src/core/web_contents_adapter.cpp8
2 files changed, 16 insertions, 2 deletions
diff --git a/src/core/api/qwebenginepage.cpp b/src/core/api/qwebenginepage.cpp
index 475366c15..f725d437c 100644
--- a/src/core/api/qwebenginepage.cpp
+++ b/src/core/api/qwebenginepage.cpp
@@ -2031,7 +2031,10 @@ void QWebEnginePage::runJavaScript(const QString& scriptSource, const std::funct
return;
}
quint64 requestId = d->adapter->runJavaScriptCallbackResult(scriptSource, QWebEngineScript::MainWorld);
- d->m_variantCallbacks.insert(requestId, resultCallback);
+ if (requestId)
+ d->m_variantCallbacks.insert(requestId, resultCallback);
+ else if (resultCallback)
+ resultCallback(QVariant());
}
void QWebEnginePage::runJavaScript(const QString& scriptSource, quint32 worldId, const std::function<void(const QVariant &)> &resultCallback)
@@ -2046,7 +2049,10 @@ void QWebEnginePage::runJavaScript(const QString& scriptSource, quint32 worldId,
}
if (resultCallback) {
quint64 requestId = d->adapter->runJavaScriptCallbackResult(scriptSource, worldId);
- d->m_variantCallbacks.insert(requestId, resultCallback);
+ if (requestId)
+ d->m_variantCallbacks.insert(requestId, resultCallback);
+ else
+ resultCallback(QVariant());
} else {
d->adapter->runJavaScript(scriptSource, worldId);
}
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 997019b03..0875408ab 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -1044,6 +1044,10 @@ void WebContentsAdapter::runJavaScript(const QString &javaScript, quint32 worldI
CHECK_INITIALIZED();
content::RenderFrameHost *rfh = m_webContents->GetPrimaryMainFrame();
Q_ASSERT(rfh);
+ if (!static_cast<content::RenderFrameHostImpl*>(rfh)->GetAssociatedLocalFrame()) {
+ qWarning() << "Local frame is gone, not running script";
+ return;
+ }
if (worldId == 0)
rfh->ExecuteJavaScript(toString16(javaScript), base::NullCallback());
else
@@ -1055,6 +1059,10 @@ quint64 WebContentsAdapter::runJavaScriptCallbackResult(const QString &javaScrip
CHECK_INITIALIZED(0);
content::RenderFrameHost *rfh = m_webContents->GetPrimaryMainFrame();
Q_ASSERT(rfh);
+ if (!static_cast<content::RenderFrameHostImpl*>(rfh)->GetAssociatedLocalFrame()) {
+ qWarning() << "Local frame is gone, not running script";
+ return 0;
+ }
content::RenderFrameHost::JavaScriptResultCallback callback = base::BindOnce(&callbackOnEvaluateJS, m_adapterClient, m_nextRequestId);
if (worldId == 0)
rfh->ExecuteJavaScript(toString16(javaScript), std::move(callback));