summaryrefslogtreecommitdiffstats
path: root/src/core/web_contents_adapter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/web_contents_adapter.cpp')
-rw-r--r--src/core/web_contents_adapter.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 108506b06..56b56ce33 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -143,10 +143,9 @@ static QVariant fromJSValue(const base::Value *result)
return ret;
}
-static void callbackOnEvaluateJS(JSCallbackBase *callback, const base::Value *result)
+static void callbackOnEvaluateJS(WebContentsAdapterClient *adapterClient, quint64 requestId, const base::Value *result)
{
- callback->call(fromJSValue(result));
- delete callback;
+ adapterClient->didRunJavaScript(fromJSValue(result), requestId);
}
static QStringList listRecursively(const QDir& dir) {
@@ -169,11 +168,13 @@ public:
scoped_ptr<content::WebContents> webContents;
scoped_ptr<WebContentsDelegateQt> webContentsDelegate;
WebContentsAdapterClient *adapterClient;
+ quint64 lastRequestId;
};
WebContentsAdapterPrivate::WebContentsAdapterPrivate(WebContentsAdapterClient::RenderingMode renderingMode)
// This has to be the first thing we create, and the last we destroy.
: engineContext(WebEngineContext::currentOrCreate(renderingMode))
+ , lastRequestId(0)
{
}
@@ -372,17 +373,22 @@ void WebContentsAdapter::enableInspector(bool enable)
ContentBrowserClientQt::Get()->enableInspector(enable);
}
-void WebContentsAdapter::runJavaScript(const QString &javaScript, const QString &xPath, JSCallbackBase *func)
+void WebContentsAdapter::runJavaScript(const QString &javaScript, const QString &xPath)
{
Q_D(WebContentsAdapter);
content::RenderViewHost *rvh = d->webContents->GetRenderViewHost();
Q_ASSERT(rvh);
- if (!func)
- rvh->ExecuteJavascriptInWebFrame(toString16(xPath), toString16(javaScript));
- else {
- content::RenderViewHost::JavascriptResultCallback callback = base::Bind(&callbackOnEvaluateJS, func);
- rvh->ExecuteJavascriptInWebFrameCallbackResult(toString16(xPath), toString16(javaScript), callback);
- }
+ rvh->ExecuteJavascriptInWebFrame(toString16(xPath), toString16(javaScript));
+}
+
+quint64 WebContentsAdapter::runJavaScriptCallbackResult(const QString &javaScript, const QString &xPath)
+{
+ Q_D(WebContentsAdapter);
+ content::RenderViewHost *rvh = d->webContents->GetRenderViewHost();
+ Q_ASSERT(rvh);
+ content::RenderViewHost::JavascriptResultCallback callback = base::Bind(&callbackOnEvaluateJS, d->adapterClient, ++d->lastRequestId);
+ rvh->ExecuteJavascriptInWebFrameCallbackResult(toString16(xPath), toString16(javaScript), callback);
+ return d->lastRequestId;
}
void WebContentsAdapter::dpiScaleChanged()