diff options
Diffstat (limited to 'src/webengine')
-rw-r--r-- | src/webengine/api/qquickwebenginetestsupport.cpp | 50 | ||||
-rw-r--r-- | src/webengine/api/qquickwebenginetestsupport_p.h | 25 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 6 | ||||
-rw-r--r-- | src/webengine/plugin/testsupport/plugin.cpp | 2 |
4 files changed, 83 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); } diff --git a/src/webengine/plugin/testsupport/plugin.cpp b/src/webengine/plugin/testsupport/plugin.cpp index 60e56062c..667ffffd6 100644 --- a/src/webengine/plugin/testsupport/plugin.cpp +++ b/src/webengine/plugin/testsupport/plugin.cpp @@ -55,6 +55,8 @@ public: qmlRegisterType<QQuickWebEngineTestSupport>(uri, 1, 0, "WebEngineTestSupport"); qmlRegisterUncreatableType<QQuickWebEngineErrorPage>(uri, 1, 0, "WebEngineErrorPage", QObject::tr("Cannot create a separate instance of WebEngineErrorPage")); + qmlRegisterUncreatableType<QQuickWebEngineJavaScriptDialog>(uri, 1, 0, "WebEngineJavaScriptDialog", + QObject::tr("Cannot create a separate instance of WebEngineJavaScriptDialog")); } }; |