summaryrefslogtreecommitdiffstats
path: root/src/webengine/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/webengine/api')
-rw-r--r--src/webengine/api/qquickwebenginetestsupport.cpp50
-rw-r--r--src/webengine/api/qquickwebenginetestsupport_p.h25
-rw-r--r--src/webengine/api/qquickwebengineview.cpp6
3 files changed, 81 insertions, 0 deletions
diff --git a/src/webengine/api/qquickwebenginetestsupport.cpp b/src/webengine/api/qquickwebenginetestsupport.cpp
index d85e56e59..0bb16ae14 100644
--- a/src/webengine/api/qquickwebenginetestsupport.cpp
+++ b/src/webengine/api/qquickwebenginetestsupport.cpp
@@ -39,6 +39,34 @@
#include "qquickwebengineloadrequest_p.h"
QT_BEGIN_NAMESPACE
+using namespace QtWebEngineCore;
+
+QQuickWebEngineJavaScriptDialog::QQuickWebEngineJavaScriptDialog(QSharedPointer<JavaScriptDialogController> controller)
+{
+ m_dialogController = controller;
+}
+
+QString QQuickWebEngineJavaScriptDialog::message() const
+{
+ return m_dialogController->message();
+}
+
+QString QQuickWebEngineJavaScriptDialog::defaultValue() const
+{
+ return m_dialogController->defaultPrompt();
+}
+
+void QQuickWebEngineJavaScriptDialog::reject()
+{
+ QMetaObject::invokeMethod(m_dialogController.data(), "reject");
+}
+
+void QQuickWebEngineJavaScriptDialog::accept(const QString &input)
+{
+ if (!input.isNull())
+ QMetaObject::invokeMethod(m_dialogController.data(), "textProvided", Q_ARG(QString, input));
+ QMetaObject::invokeMethod(m_dialogController.data(), "accept");
+}
QQuickWebEngineErrorPage::QQuickWebEngineErrorPage()
{
@@ -70,6 +98,28 @@ QQuickWebEngineErrorPage *QQuickWebEngineTestSupport::errorPage() const
return m_errorPage.data();
}
+void QQuickWebEngineTestSupport::testDialog(QSharedPointer<JavaScriptDialogController> dialogController)
+{
+ Q_ASSERT(!dialogController.isNull());
+
+ QQuickWebEngineJavaScriptDialog dialog(dialogController);
+ switch (dialogController->type()) {
+ case WebContentsAdapterClient::AlertDialog:
+ Q_EMIT alertDialog(&dialog);
+ break;
+ case WebContentsAdapterClient::ConfirmDialog:
+ Q_EMIT confirmDialog(&dialog);
+ break;
+ case WebContentsAdapterClient::PromptDialog:
+ Q_EMIT promptDialog(&dialog);
+ break;
+ case WebContentsAdapterClient::InternalAuthorizationDialog:
+ break;
+ default:
+ Q_UNREACHABLE();
+ }
+}
+
QT_END_NAMESPACE
#include "moc_qquickwebenginetestsupport_p.cpp"
diff --git a/src/webengine/api/qquickwebenginetestsupport_p.h b/src/webengine/api/qquickwebenginetestsupport_p.h
index 832ac2803..06950e416 100644
--- a/src/webengine/api/qquickwebenginetestsupport_p.h
+++ b/src/webengine/api/qquickwebenginetestsupport_p.h
@@ -39,6 +39,7 @@
#include <private/qtwebengineglobal_p.h>
+#include "javascript_dialog_controller.h"
#include <QObject>
#include <QUrl>
@@ -46,6 +47,24 @@ QT_BEGIN_NAMESPACE
class QQuickWebEngineLoadRequest;
+class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineJavaScriptDialog : public QObject {
+ Q_OBJECT
+ Q_PROPERTY(QString message READ message CONSTANT)
+ Q_PROPERTY(QString defaultValue READ defaultValue CONSTANT)
+
+public:
+ QQuickWebEngineJavaScriptDialog(QSharedPointer<QtWebEngineCore::JavaScriptDialogController>);
+ QString message() const;
+ QString defaultValue() const;
+
+public Q_SLOTS:
+ void reject();
+ void accept(const QString &input = QString());
+
+private:
+ QSharedPointer<QtWebEngineCore::JavaScriptDialogController> m_dialogController;
+};
+
class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineErrorPage : public QObject {
Q_OBJECT
@@ -66,6 +85,12 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineTestSupport : public QObject {
public:
QQuickWebEngineTestSupport();
QQuickWebEngineErrorPage *errorPage() const;
+ void testDialog(QSharedPointer<QtWebEngineCore::JavaScriptDialogController> dialog);
+
+Q_SIGNALS:
+ void alertDialog(QQuickWebEngineJavaScriptDialog *dialog);
+ void confirmDialog(QQuickWebEngineJavaScriptDialog *dialog);
+ void promptDialog(QQuickWebEngineJavaScriptDialog *dialog);
private:
QScopedPointer<QQuickWebEngineErrorPage> m_errorPage;
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index f10ddbb02..4bc6cd087 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -229,6 +229,12 @@ void QQuickWebEngineViewPrivate::navigationRequested(int navigationType, const Q
void QQuickWebEngineViewPrivate::javascriptDialog(QSharedPointer<JavaScriptDialogController> dialog)
{
+#ifdef ENABLE_QML_TESTSUPPORT_API
+ if (m_testSupport) {
+ m_testSupport->testDialog(dialog);
+ return;
+ }
+#endif
ui()->showDialog(dialog);
}