From b04675452f7390476f8ef2d5ead47e5085d113e5 Mon Sep 17 00:00:00 2001 From: Viktor Engelmann Date: Mon, 25 Sep 2017 12:52:36 +0200 Subject: Fix version numbers for UnknownUrlSchemePolicy As 49c0ce8403e5caeb864f66553f122c68a7c975fb missed feature freeze for Qt 5.10, the version numbers must be corrected to Qt 5.11, REVISION 6 etc. Also the auto test was moved into its own source file, so we can blacklist it on Boot2Qt. Task-number: QTBUG-58627 Change-Id: I2381e2433ba1b903a62f59a6db58e5f25af77336 Reviewed-by: Allan Sandfeld Jensen --- tests/auto/widgets/qwebengineschemes/BLACKLIST | 0 .../qwebengineschemes/qwebengineschemes.pro | 3 + .../qwebengineschemes/tst_qwebengineschemes.cpp | 110 +++++++++++++++++++++ .../qwebenginesettings/tst_qwebenginesettings.cpp | 69 ------------- tests/auto/widgets/widgets.pro | 6 +- 5 files changed, 117 insertions(+), 71 deletions(-) create mode 100644 tests/auto/widgets/qwebengineschemes/BLACKLIST create mode 100644 tests/auto/widgets/qwebengineschemes/qwebengineschemes.pro create mode 100644 tests/auto/widgets/qwebengineschemes/tst_qwebengineschemes.cpp (limited to 'tests') diff --git a/tests/auto/widgets/qwebengineschemes/BLACKLIST b/tests/auto/widgets/qwebengineschemes/BLACKLIST new file mode 100644 index 000000000..e69de29bb diff --git a/tests/auto/widgets/qwebengineschemes/qwebengineschemes.pro b/tests/auto/widgets/qwebengineschemes/qwebengineschemes.pro new file mode 100644 index 000000000..e56bbe8f7 --- /dev/null +++ b/tests/auto/widgets/qwebengineschemes/qwebengineschemes.pro @@ -0,0 +1,3 @@ +include(../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc +QT *= core-private gui-private diff --git a/tests/auto/widgets/qwebengineschemes/tst_qwebengineschemes.cpp b/tests/auto/widgets/qwebengineschemes/tst_qwebengineschemes.cpp new file mode 100644 index 000000000..09d495ad5 --- /dev/null +++ b/tests/auto/widgets/qwebengineschemes/tst_qwebengineschemes.cpp @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** 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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include +#include +#include +#include + +class tst_QWebEngineSchemes : public QObject +{ + Q_OBJECT + +private Q_SLOTS: + void unknownUrlSchemePolicy(); +}; + +class AcceptNavigationRequestHandler : public QWebEnginePage +{ +public: + AcceptNavigationRequestHandler(QObject* parent = nullptr) + : QWebEnginePage(parent) + { + } + int acceptNavigationRequestCalls = 0; + bool acceptNavigationRequest(const QUrl &/*url*/, NavigationType /*type*/, bool /*isMainFrame*/) override + { + this->acceptNavigationRequestCalls++; + return false; + } +}; + +void tst_QWebEngineSchemes::unknownUrlSchemePolicy() +{ + QWebEngineView view; + AcceptNavigationRequestHandler page; + view.setPage(&page); + view.resize(400, 40); + view.show(); + QTest::qWaitForWindowExposed(&view); + QWebEngineSettings *settings = view.page()->profile()->settings(); + settings->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, true); + QSignalSpy loadFinishedSpy(&view, &QWebEngineView::loadFinished); + + QWebEngineSettings::UnknownUrlSchemePolicy policies[6] = {QWebEngineSettings::DisallowUnknownUrlSchemes, + QWebEngineSettings::DisallowUnknownUrlSchemes, + QWebEngineSettings::AllowUnknownUrlSchemesFromUserInteraction, + QWebEngineSettings::AllowUnknownUrlSchemesFromUserInteraction, + QWebEngineSettings::AllowAllUnknownUrlSchemes, + QWebEngineSettings::AllowAllUnknownUrlSchemes}; + // even iterations are for navigation-requests from javascript, + // odd iterations are for navigations-requests from user-interaction + for (int i = 0; i < 8; i++) { + if (i <= 5) + settings->setUnknownUrlSchemePolicy(policies[i]); + else + settings->resetUnknownUrlSchemePolicy(); + loadFinishedSpy.clear(); + page.acceptNavigationRequestCalls = 0; + bool shouldAccept; + + if (i % 2 == 0) { // navigation request coming from javascript + shouldAccept = (4 <= i && i <= 5); // only case AllowAllUnknownUrlSchemes + view.setHtml("testing..."); + } else { // navigation request coming from user interaction + shouldAccept = (2 <= i); // all cases except DisallowUnknownUrlSchemes + view.setHtml("nonexistentscheme://somewhere"); + QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 1, 30000); + // focus and trigger the link + view.page()->runJavaScript("document.getElementById('nonexlink').focus();", [&view](const QVariant &result) { + Q_UNUSED(result); + QTest::sendKeyEvent(QTest::Press, view.focusProxy(), Qt::Key_Return, QString("\r"), Qt::NoModifier); + QTest::sendKeyEvent(QTest::Release, view.focusProxy(), Qt::Key_Return, QString("\r"), Qt::NoModifier); + }); + } + + bool errorPageEnabled = settings->testAttribute(QWebEngineSettings::ErrorPageEnabled); + QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 2 + (errorPageEnabled ? 1 : 0), 30000); + QCOMPARE(page.acceptNavigationRequestCalls, shouldAccept ? 1 : 0); + } +} + +QTEST_MAIN(tst_QWebEngineSchemes) +#include "tst_qwebengineschemes.moc" diff --git a/tests/auto/widgets/qwebenginesettings/tst_qwebenginesettings.cpp b/tests/auto/widgets/qwebenginesettings/tst_qwebenginesettings.cpp index 09e1b73c9..5cbcf4ec0 100644 --- a/tests/auto/widgets/qwebenginesettings/tst_qwebenginesettings.cpp +++ b/tests/auto/widgets/qwebenginesettings/tst_qwebenginesettings.cpp @@ -19,8 +19,6 @@ #include -#include -#include #include #include @@ -31,7 +29,6 @@ private Q_SLOTS: void resetAttributes(); void defaultFontFamily_data(); void defaultFontFamily(); - void unknownUrlSchemePolicy(); }; void tst_QWebEngineSettings::resetAttributes() @@ -88,72 +85,6 @@ void tst_QWebEngineSettings::defaultFontFamily() QVERIFY(!settings->fontFamily(static_cast(fontFamily)).isEmpty()); } - -class AcceptNavigationRequestHandler : public QWebEnginePage -{ -public: - AcceptNavigationRequestHandler(QObject* parent = nullptr) - : QWebEnginePage(parent) - { - } - int acceptNavigationRequestCalls = 0; - bool acceptNavigationRequest(const QUrl &/*url*/, NavigationType /*type*/, bool /*isMainFrame*/) override - { - this->acceptNavigationRequestCalls++; - return false; - } -}; - -void tst_QWebEngineSettings::unknownUrlSchemePolicy() -{ - QWebEngineView view; - AcceptNavigationRequestHandler page; - view.setPage(&page); - view.resize(400, 40); - view.show(); - QTest::qWaitForWindowExposed(&view); - QWebEngineSettings *settings = view.page()->profile()->settings(); - settings->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, true); - QSignalSpy loadFinishedSpy(&view, &QWebEngineView::loadFinished); - - QWebEngineSettings::UnknownUrlSchemePolicy policies[6] = {QWebEngineSettings::DisallowUnknownUrlSchemes, - QWebEngineSettings::DisallowUnknownUrlSchemes, - QWebEngineSettings::AllowUnknownUrlSchemesFromUserInteraction, - QWebEngineSettings::AllowUnknownUrlSchemesFromUserInteraction, - QWebEngineSettings::AllowAllUnknownUrlSchemes, - QWebEngineSettings::AllowAllUnknownUrlSchemes}; - // even iterations are for navigation-requests from javascript, - // odd iterations are for navigations-requests from user-interaction - for (int i = 0; i < 8; i++) { - if (i <= 5) - settings->setUnknownUrlSchemePolicy(policies[i]); - else - settings->resetUnknownUrlSchemePolicy(); - loadFinishedSpy.clear(); - page.acceptNavigationRequestCalls = 0; - bool shouldAccept; - - if (i % 2 == 0) { // navigation request coming from javascript - shouldAccept = (4 <= i && i <= 5); // only case AllowAllUnknownUrlSchemes - view.setHtml("testing..."); - } else { // navigation request coming from user interaction - shouldAccept = (2 <= i); // all cases except DisallowUnknownUrlSchemes - view.setHtml("nonexistentscheme://somewhere"); - QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 1, 30000); - // focus and trigger the link - view.page()->runJavaScript("document.getElementById('nonexlink').focus();", [&view](const QVariant &result) { - Q_UNUSED(result); - QTest::sendKeyEvent(QTest::Press, view.focusProxy(), Qt::Key_Return, QString("\r"), Qt::NoModifier); - QTest::sendKeyEvent(QTest::Release, view.focusProxy(), Qt::Key_Return, QString("\r"), Qt::NoModifier); - }); - } - - bool errorPageEnabled = settings->testAttribute(QWebEngineSettings::ErrorPageEnabled); - QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 2 + (errorPageEnabled ? 1 : 0), 30000); - QCOMPARE(page.acceptNavigationRequestCalls, shouldAccept ? 1 : 0); - } -} - QTEST_MAIN(tst_QWebEngineSettings) #include "tst_qwebenginesettings.moc" diff --git a/tests/auto/widgets/widgets.pro b/tests/auto/widgets/widgets.pro index 60e5cc11f..e007df711 100644 --- a/tests/auto/widgets/widgets.pro +++ b/tests/auto/widgets/widgets.pro @@ -13,6 +13,7 @@ SUBDIRS += \ qwebenginehistoryinterface \ qwebengineinspector \ qwebengineprofile \ + qwebengineschemes \ qwebenginescript \ qwebenginesettings \ qwebengineview @@ -28,5 +29,6 @@ qtConfig(spellchecker):!cross_compile { # QTBUG-60268 boot2qt: SUBDIRS -= qwebengineaccessibility qwebenginedefaultsurfaceformat \ qwebenginefaviconmanager qwebenginepage qwebenginehistory \ - qwebengineprofile qwebenginescript qwebengineview \ - qwebenginedownloads + qwebengineprofile qwebengineschemes qwebenginescript \ + qwebengineview qwebenginedownloads + -- cgit v1.2.3