diff options
Diffstat (limited to 'tests/auto/quick/qmltests')
12 files changed, 258 insertions, 59 deletions
diff --git a/tests/auto/quick/qmltests/data/alert.html b/tests/auto/quick/qmltests/data/alert.html index 39a853519..89715a727 100644 --- a/tests/auto/quick/qmltests/data/alert.html +++ b/tests/auto/quick/qmltests/data/alert.html @@ -1,8 +1,5 @@ -<!doctype html> <html> <head> <script> alert("Hello Qt"); </script> </head> -<body> -</body> </html> diff --git a/tests/auto/quick/qmltests/data/confirm.html b/tests/auto/quick/qmltests/data/confirm.html index d7256a883..a4fc5b532 100644 --- a/tests/auto/quick/qmltests/data/confirm.html +++ b/tests/auto/quick/qmltests/data/confirm.html @@ -1,19 +1,10 @@ -<!doctype html> <html> <head> <script> - document.title = ""; - function updateTitle(accepted) { - if (accepted) - document.title += " ACCEPTED"; - else - document.title += " REJECTED"; - } - - updateTitle(confirm("ACCEPT")); - updateTitle(confirm("REJECT")); + if (confirm("Confirm test")) + document.title += " ACCEPTED"; + else + document.title += " REJECTED"; </script> </head> -<body> -</body> </html> diff --git a/tests/auto/quick/qmltests/data/prompt.html b/tests/auto/quick/qmltests/data/prompt.html index ae5fbd07a..3293c0dcf 100644 --- a/tests/auto/quick/qmltests/data/prompt.html +++ b/tests/auto/quick/qmltests/data/prompt.html @@ -1,12 +1,7 @@ -<!doctype html> <html> <head> <script> document.title = prompt("Please, reverse the default value", "Hello Qt"); - if (prompt("REJECT") !== null) - document.title = "FAIL"; </script> </head> -<body> -</body> </html> diff --git a/tests/auto/quick/qmltests/data/tst_javaScriptDialogs.qml b/tests/auto/quick/qmltests/data/tst_javaScriptDialogs.qml index da04fbd92..d6c85ad86 100644 --- a/tests/auto/quick/qmltests/data/tst_javaScriptDialogs.qml +++ b/tests/auto/quick/qmltests/data/tst_javaScriptDialogs.qml @@ -42,68 +42,55 @@ import QtQuick 2.0 import QtTest 1.0 import QtWebEngine 1.0 -import QtWebEngine.testsupport 1.0 +import "../mock-delegates/TestParams" 1.0 TestWebEngineView { id: webEngineView - property string messageFromAlertDialog: "" - property int confirmCount: 0 - property int promptCount: 0 - - testSupport: WebEngineTestSupport { - onAlertDialog: { - webEngineView.messageFromAlertDialog = dialog.message - dialog.accept() - } - - onConfirmDialog: { - webEngineView.confirmCount += 1 - if (dialog.message == "ACCEPT") - dialog.accept() - else - dialog.reject() - } - - onPromptDialog: { - webEngineView.promptCount += 1 - if (dialog.message == "REJECT") - dialog.reject() - else { - var reversedDefaultValue = dialog.defaultValue.split("").reverse().join("") - dialog.accept(reversedDefaultValue) - } - } - } - TestCase { id: test name: "WebEngineViewJavaScriptDialogs" function init() { - webEngineView.messageFromAlertDialog = "" - webEngineView.confirmCount = 0 - webEngineView.promptCount = 0 + JSDialogParams.dialogMessage = ""; + JSDialogParams.dialogTitle = ""; + JSDialogParams.dialogCount = 0; + JSDialogParams.shouldAcceptDialog = true; } function test_alert() { webEngineView.url = Qt.resolvedUrl("alert.html") verify(webEngineView.waitForLoadSucceeded()) - compare(webEngineView.messageFromAlertDialog, "Hello Qt") + compare(JSDialogParams.dialogCount, 1) + compare(JSDialogParams.dialogMessage, "Hello Qt") + verify(JSDialogParams.dialogTitle.indexOf("Javascript Alert -") === 0) } function test_confirm() { webEngineView.url = Qt.resolvedUrl("confirm.html") verify(webEngineView.waitForLoadSucceeded()) - compare(webEngineView.confirmCount, 2) - compare(webEngineView.title, "ACCEPTED REJECTED") + compare(JSDialogParams.dialogMessage, "Confirm test") + compare(JSDialogParams.dialogCount, 1) + compare(webEngineView.title, "ACCEPTED") + JSDialogParams.shouldAcceptDialog = false + webEngineView.reload() + verify(webEngineView.waitForLoadSucceeded()) + compare(JSDialogParams.dialogCount, 2) + compare(webEngineView.title, "REJECTED") + } function test_prompt() { + JSDialogParams.inputForPrompt = "tQ olleH" webEngineView.url = Qt.resolvedUrl("prompt.html") verify(webEngineView.waitForLoadSucceeded()) - compare(webEngineView.promptCount, 2) + compare(JSDialogParams.dialogCount, 1) compare(webEngineView.title, "tQ olleH") + JSDialogParams.shouldAcceptDialog = false + webEngineView.reload() + verify(webEngineView.waitForLoadSucceeded()) + compare(JSDialogParams.dialogCount, 2) + compare(webEngineView.title, "prompt.html") } } } diff --git a/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/AlertDialog.qml b/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/AlertDialog.qml new file mode 100644 index 000000000..887962a5a --- /dev/null +++ b/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/AlertDialog.qml @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// Both dialogs are basically expected to behave in the same way from an API point of view +ConfirmDialog +{ +} diff --git a/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/ConfirmDialog.qml b/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/ConfirmDialog.qml new file mode 100644 index 000000000..192272e3d --- /dev/null +++ b/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/ConfirmDialog.qml @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.0 +import QtTest 1.0 +import "../../TestParams" 1.0 + +QtObject { + property string text; + property string title; + signal accepted(); + signal rejected(); + + function open() { + JSDialogParams.dialogTitle = title; + JSDialogParams.dialogMessage = text; + JSDialogParams.dialogCount++; + if (JSDialogParams.shouldAcceptDialog) + accepted() + else + rejected() + } +} + diff --git a/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/PromptDialog.qml b/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/PromptDialog.qml new file mode 100644 index 000000000..197987928 --- /dev/null +++ b/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/PromptDialog.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.0 +import QtTest 1.0 +import "../../TestParams" 1.0 + +QtObject { + property string text; + property string title; + signal accepted(); + signal rejected(); + signal input(string text); + signal closing(); + + function open() { + JSDialogParams.dialogTitle = title; + JSDialogParams.dialogMessage = text; + JSDialogParams.dialogCount++; + if (JSDialogParams.shouldAcceptDialog) { + input(JSDialogParams.inputForPrompt) + accepted() + } else { + rejected() + } + } +} diff --git a/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/qmldir b/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/qmldir new file mode 100644 index 000000000..1ebabd335 --- /dev/null +++ b/tests/auto/quick/qmltests/mock-delegates/QtWebEngine/UIDelegates/qmldir @@ -0,0 +1,4 @@ +module QtWebEngine.UIDelegates +AlertDialog 1.0 AlertDialog.qml +ConfirmDialog 1.0 ConfirmDialog.qml +PromptDialog 1.0 PromptDialog.qml diff --git a/tests/auto/quick/qmltests/mock-delegates/TestParams/JSDialogParams.qml b/tests/auto/quick/qmltests/mock-delegates/TestParams/JSDialogParams.qml new file mode 100644 index 000000000..e1370640b --- /dev/null +++ b/tests/auto/quick/qmltests/mock-delegates/TestParams/JSDialogParams.qml @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +pragma Singleton +import QtQml 2.0 + +QtObject { + property string dialogMessage: ""; + property string dialogTitle: ""; + property bool shouldAcceptDialog: true; + property string inputForPrompt; + property int dialogCount: 0 +} diff --git a/tests/auto/quick/qmltests/mock-delegates/TestParams/qmldir b/tests/auto/quick/qmltests/mock-delegates/TestParams/qmldir new file mode 100644 index 000000000..f2ed87a75 --- /dev/null +++ b/tests/auto/quick/qmltests/mock-delegates/TestParams/qmldir @@ -0,0 +1,4 @@ +# QML module so that the autotests can set testing parameters +module TestParams +singleton JSDialogParams 1.0 JSDialogParams.qml + diff --git a/tests/auto/quick/qmltests/qmltests.pro b/tests/auto/quick/qmltests/qmltests.pro index 4b6795ae1..c2e915c35 100644 --- a/tests/auto/quick/qmltests/qmltests.pro +++ b/tests/auto/quick/qmltests/qmltests.pro @@ -37,6 +37,12 @@ OTHER_FILES += \ $$PWD/data/tst_runJavaScript.qml \ $$PWD/data/tst_titleChanged.qml \ $$PWD/data/tst_keyboardModifierMapping.qml \ + $$PWD/mock-delegates/QtWebEngine/UIDelegates/AlertDialog.qml \ + $$PWD/mock-delegates/QtWebEngine/UIDelegates/ConfirmDialog.qml \ + $$PWD/mock-delegates/QtWebEngine/UIDelegates/PromptDialog.qml \ + $$PWD/mock-delegates/QtWebEngine/UIDelegates/qmldir \ + $$PWD/mock-delegates/TestParams/JSDialogParams.qml \ + $$PWD/mock-delegates/TestParams/qmldir \ load(qt_build_paths) diff --git a/tests/auto/quick/qmltests/tst_qmltests.cpp b/tests/auto/quick/qmltests/tst_qmltests.cpp index d9fc128df..43f481673 100644 --- a/tests/auto/quick/qmltests/tst_qmltests.cpp +++ b/tests/auto/quick/qmltests/tst_qmltests.cpp @@ -39,6 +39,19 @@ ** ****************************************************************************/ +#include <QtCore/QScopedPointer> #include <QtQuickTest/quicktest.h> #include "qt_webengine_quicktest.h" -QT_WEBENGINE_TEST_MAIN(qmltests); + +int main(int argc, char **argv) +{ + // Inject the mock ui delegates module + qputenv("QML2_IMPORT_PATH", QByteArray(TESTS_SOURCE_DIR "qmltests/mock-delegates")); + QScopedPointer<Application> app; + + if (!QCoreApplication::instance()) + app.reset(new Application(argc, argv)); + QtWebEngine::initialize(); + int i = quick_test_main(argc, argv, "qmltests", QUICK_TEST_SOURCE_DIR); + return i; +} |