From 08f056237a65d70c2eea2efb6c26ecb83a0ee584 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 28 Jan 2016 11:32:40 +0100 Subject: Use fictional schemes in URL scheme handler test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Avoid the usage of mailto. It might get forwarded to QDesktopServices. Change-Id: I2e8c889e8b0107b11c22c182a64685bc5ac16aae Reviewed-by: Michael Brüning --- .../widgets/qwebengineprofile/tst_qwebengineprofile.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'tests/auto/widgets/qwebengineprofile') diff --git a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp index 99182f155..d06fd5e9a 100644 --- a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp +++ b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp @@ -108,14 +108,14 @@ public: void tst_QWebEngineProfile::urlSchemeHandlers() { - RedirectingUrlSchemeHandler mailtoHandler; + RedirectingUrlSchemeHandler lettertoHandler; QWebEngineProfile profile(QStringLiteral("urlSchemeHandlers")); - profile.installUrlSchemeHandler("mailto", &mailtoHandler); + profile.installUrlSchemeHandler("letterto", &lettertoHandler); QWebEngineView view; QSignalSpy loadFinishedSpy(&view, SIGNAL(loadFinished(bool))); view.setPage(new QWebEnginePage(&profile, &view)); QString emailAddress = QStringLiteral("egon@olsen-banden.dk"); - view.load(QUrl(QStringLiteral("mailto:") + emailAddress)); + view.load(QUrl(QStringLiteral("letterto:") + emailAddress)); QVERIFY(loadFinishedSpy.wait()); QCOMPARE(toPlainTextSync(view.page()), emailAddress); @@ -127,14 +127,14 @@ void tst_QWebEngineProfile::urlSchemeHandlers() QVERIFY(loadFinishedSpy.wait()); QCOMPARE(toPlainTextSync(view.page()), url.toString()); - // Remove the mailto scheme, and check whether it is not handled anymore. - profile.removeUrlScheme("mailto"); + // Remove the letterto scheme, and check whether it is not handled anymore. + profile.removeUrlScheme("letterto"); emailAddress = QStringLiteral("kjeld@olsen-banden.dk"); - view.load(QUrl(QStringLiteral("mailto:") + emailAddress)); + view.load(QUrl(QStringLiteral("letterto:") + emailAddress)); QVERIFY(loadFinishedSpy.wait()); QVERIFY(toPlainTextSync(view.page()) != emailAddress); - // Check if gopher is still working after removing mailto. + // Check if gopher is still working after removing letterto. url = QUrl(QStringLiteral("gopher://olsen-banden.dk/yvonne")); view.load(url); QVERIFY(loadFinishedSpy.wait()); -- cgit v1.2.3 From af79ee493dea93737aa0e0d672f0182c403283fd Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 28 Jan 2016 14:48:23 +0100 Subject: Stabilize tst_QWebEngineProfile::urlSchemeHandlers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sometimes the emission of loadFinished wasn't caught. Use a QTRY_VERIFY-like function to synchronously load a page. Change-Id: Ib260a126c0cff7f254c97b1cd89f49b806010235 Reviewed-by: Michael Brüning --- .../qwebengineprofile/tst_qwebengineprofile.cpp | 34 +++++++++++++--------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'tests/auto/widgets/qwebengineprofile') diff --git a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp index d06fd5e9a..89e8da00d 100644 --- a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp +++ b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp @@ -106,52 +106,60 @@ public: } }; +static bool loadSync(QWebEngineView *view, const QUrl &url, int timeout = 5000) +{ + // Ripped off QTRY_VERIFY. + QSignalSpy loadFinishedSpy(view, SIGNAL(loadFinished(bool))); + view->load(url); + if (loadFinishedSpy.isEmpty()) + QTest::qWait(0); + for (int i = 0; i < timeout; i += 50) { + if (!loadFinishedSpy.isEmpty()) + return true; + QTest::qWait(50); + } + return false; +} + void tst_QWebEngineProfile::urlSchemeHandlers() { RedirectingUrlSchemeHandler lettertoHandler; QWebEngineProfile profile(QStringLiteral("urlSchemeHandlers")); profile.installUrlSchemeHandler("letterto", &lettertoHandler); QWebEngineView view; - QSignalSpy loadFinishedSpy(&view, SIGNAL(loadFinished(bool))); view.setPage(new QWebEnginePage(&profile, &view)); QString emailAddress = QStringLiteral("egon@olsen-banden.dk"); - view.load(QUrl(QStringLiteral("letterto:") + emailAddress)); - QVERIFY(loadFinishedSpy.wait()); + QVERIFY(loadSync(&view, QUrl(QStringLiteral("letterto:") + emailAddress))); QCOMPARE(toPlainTextSync(view.page()), emailAddress); // Install a gopher handler after the view has been fully initialized. ReplyingUrlSchemeHandler gopherHandler; profile.installUrlSchemeHandler("gopher", &gopherHandler); QUrl url = QUrl(QStringLiteral("gopher://olsen-banden.dk/benny")); - view.load(url); - QVERIFY(loadFinishedSpy.wait()); + QVERIFY(loadSync(&view, url)); QCOMPARE(toPlainTextSync(view.page()), url.toString()); // Remove the letterto scheme, and check whether it is not handled anymore. profile.removeUrlScheme("letterto"); emailAddress = QStringLiteral("kjeld@olsen-banden.dk"); - view.load(QUrl(QStringLiteral("letterto:") + emailAddress)); - QVERIFY(loadFinishedSpy.wait()); + QVERIFY(loadSync(&view, QUrl(QStringLiteral("letterto:") + emailAddress))); QVERIFY(toPlainTextSync(view.page()) != emailAddress); // Check if gopher is still working after removing letterto. url = QUrl(QStringLiteral("gopher://olsen-banden.dk/yvonne")); - view.load(url); - QVERIFY(loadFinishedSpy.wait()); + QVERIFY(loadSync(&view, url)); QCOMPARE(toPlainTextSync(view.page()), url.toString()); // Does removeAll work? profile.removeAllUrlSchemeHandlers(); url = QUrl(QStringLiteral("gopher://olsen-banden.dk/harry")); - view.load(url); - QVERIFY(loadFinishedSpy.wait()); + QVERIFY(loadSync(&view, url)); QVERIFY(toPlainTextSync(view.page()) != url.toString()); // Install a handler that is owned by the view. Make sure this doesn't crash on shutdown. profile.installUrlSchemeHandler("aviancarrier", new ReplyingUrlSchemeHandler(&view)); url = QUrl(QStringLiteral("aviancarrier:inspector.mortensen@politistyrke.dk")); - view.load(url); - QVERIFY(loadFinishedSpy.wait()); + QVERIFY(loadSync(&view, url)); QCOMPARE(toPlainTextSync(view.page()), url.toString()); } -- cgit v1.2.3 From 7d8baa7fc48fc667b13b2151837662a28afa5f79 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 28 Jan 2016 18:24:15 +0100 Subject: Stabilize tst_QWebEngineProfile::urlSchemeHandlers some more Work around QTBUG-50752 in URL scheme handler test. Triggering the failing load makes subsequent calls to toPlainTextSync unreliable. Change-Id: I370d59b935b186fa4e3be3097ee921802f951720 Task-number: QTBUG-50752 Reviewed-by: Allan Sandfeld Jensen --- tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tests/auto/widgets/qwebengineprofile') diff --git a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp index 89e8da00d..0702e530f 100644 --- a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp +++ b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp @@ -141,9 +141,11 @@ void tst_QWebEngineProfile::urlSchemeHandlers() // Remove the letterto scheme, and check whether it is not handled anymore. profile.removeUrlScheme("letterto"); +#if 0 // QTBUG-50752 emailAddress = QStringLiteral("kjeld@olsen-banden.dk"); QVERIFY(loadSync(&view, QUrl(QStringLiteral("letterto:") + emailAddress))); QVERIFY(toPlainTextSync(view.page()) != emailAddress); +#endif // Check if gopher is still working after removing letterto. url = QUrl(QStringLiteral("gopher://olsen-banden.dk/yvonne")); -- cgit v1.2.3 From 489c9d0f631f79057bb16994b6719395d97f80ab Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Fri, 5 Feb 2016 12:02:56 +0100 Subject: Stabilize failed load sub-test of urlSchemeHandler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a failed load is replaced by an error-page we currently get two loadFinished signals. So disable error-pages to make the test of failed load simpler. Change-Id: I3baaf0f5a06c5e755695d6540316287a860e0d5f Task-number: QTBUG-50752 Reviewed-by: Michael Brüning --- tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'tests/auto/widgets/qwebengineprofile') diff --git a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp index 0702e530f..9195a5190 100644 --- a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp +++ b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp @@ -39,8 +39,9 @@ #include #include #include +#include +#include #include -#include class tst_QWebEngineProfile : public QObject { @@ -128,6 +129,7 @@ void tst_QWebEngineProfile::urlSchemeHandlers() profile.installUrlSchemeHandler("letterto", &lettertoHandler); QWebEngineView view; view.setPage(new QWebEnginePage(&profile, &view)); + view.settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false); QString emailAddress = QStringLiteral("egon@olsen-banden.dk"); QVERIFY(loadSync(&view, QUrl(QStringLiteral("letterto:") + emailAddress))); QCOMPARE(toPlainTextSync(view.page()), emailAddress); @@ -141,11 +143,9 @@ void tst_QWebEngineProfile::urlSchemeHandlers() // Remove the letterto scheme, and check whether it is not handled anymore. profile.removeUrlScheme("letterto"); -#if 0 // QTBUG-50752 emailAddress = QStringLiteral("kjeld@olsen-banden.dk"); QVERIFY(loadSync(&view, QUrl(QStringLiteral("letterto:") + emailAddress))); QVERIFY(toPlainTextSync(view.page()) != emailAddress); -#endif // Check if gopher is still working after removing letterto. url = QUrl(QStringLiteral("gopher://olsen-banden.dk/yvonne")); -- cgit v1.2.3