diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-03-04 13:46:30 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2019-03-04 13:46:30 +0000 |
commit | 24eb36abbf1420e56238229645e1a5e36b3de145 (patch) | |
tree | 930107d884614204f6100bee0317a94b79491ddd /tests/auto | |
parent | 4d7c8f3455be2d275dca7e1ecd63fed175b0f3e1 (diff) | |
parent | 2b3f5b66af4f06a57216575a44f54c1d20fb12a0 (diff) |
Merge "Merge remote-tracking branch 'origin/5.12' into 5.13" into refs/staging/5.13
Diffstat (limited to 'tests/auto')
4 files changed, 143 insertions, 6 deletions
diff --git a/tests/auto/quick/publicapi/tst_publicapi.cpp b/tests/auto/quick/publicapi/tst_publicapi.cpp index 993caac9c..b89652625 100644 --- a/tests/auto/quick/publicapi/tst_publicapi.cpp +++ b/tests/auto/quick/publicapi/tst_publicapi.cpp @@ -152,8 +152,28 @@ static const QStringList expectedAPI = QStringList() << "QQuickWebEngineClientCertificateSelection.selectNone() --> void" << "QQuickWebEngineColorDialogRequest.accepted --> bool" << "QQuickWebEngineColorDialogRequest.color --> QColor" + << "QQuickWebEngineContextMenuRequest.CanUndo --> EditFlags" + << "QQuickWebEngineContextMenuRequest.CanRedo --> EditFlags" + << "QQuickWebEngineContextMenuRequest.CanCut --> EditFlags" + << "QQuickWebEngineContextMenuRequest.CanCopy --> EditFlags" + << "QQuickWebEngineContextMenuRequest.CanPaste --> EditFlags" + << "QQuickWebEngineContextMenuRequest.CanDelete --> EditFlags" + << "QQuickWebEngineContextMenuRequest.CanSelectAll --> EditFlags" + << "QQuickWebEngineContextMenuRequest.CanTranslate --> EditFlags" + << "QQuickWebEngineContextMenuRequest.CanEditRichly --> EditFlags" << "QQuickWebEngineColorDialogRequest.dialogAccept(QColor) --> void" << "QQuickWebEngineColorDialogRequest.dialogReject() --> void" + << "QQuickWebEngineContextMenuRequest.editFlags --> EditFlags" + << "QQuickWebEngineContextMenuRequest.MediaInError --> MediaFlags" + << "QQuickWebEngineContextMenuRequest.MediaPaused --> MediaFlags" + << "QQuickWebEngineContextMenuRequest.MediaMuted --> MediaFlags" + << "QQuickWebEngineContextMenuRequest.MediaLoop --> MediaFlags" + << "QQuickWebEngineContextMenuRequest.MediaCanSave --> MediaFlags" + << "QQuickWebEngineContextMenuRequest.MediaHasAudio --> MediaFlags" + << "QQuickWebEngineContextMenuRequest.MediaCanToggleControls --> MediaFlags" + << "QQuickWebEngineContextMenuRequest.MediaControls --> MediaFlags" + << "QQuickWebEngineContextMenuRequest.MediaCanPrint --> MediaFlags" + << "QQuickWebEngineContextMenuRequest.MediaCanRotate --> MediaFlags" << "QQuickWebEngineContextMenuRequest.MediaTypeAudio --> MediaType" << "QQuickWebEngineContextMenuRequest.MediaTypeCanvas --> MediaType" << "QQuickWebEngineContextMenuRequest.MediaTypeFile --> MediaType" @@ -165,6 +185,7 @@ static const QStringList expectedAPI = QStringList() << "QQuickWebEngineContextMenuRequest.isContentEditable --> bool" << "QQuickWebEngineContextMenuRequest.linkText --> QString" << "QQuickWebEngineContextMenuRequest.linkUrl --> QUrl" + << "QQuickWebEngineContextMenuRequest.mediaFlags --> MediaFlags" << "QQuickWebEngineContextMenuRequest.mediaType --> MediaType" << "QQuickWebEngineContextMenuRequest.mediaUrl --> QUrl" << "QQuickWebEngineContextMenuRequest.misspelledWord --> QString" @@ -236,6 +257,7 @@ static const QStringList expectedAPI = QStringList() << "QQuickWebEngineDownloadItem.totalBytesChanged() --> void" << "QQuickWebEngineDownloadItem.type --> DownloadType" << "QQuickWebEngineDownloadItem.typeChanged() --> void" + << "QQuickWebEngineDownloadItem.view --> QQuickWebEngineView*" << "QQuickWebEngineFileDialogRequest.FileModeOpen --> FileMode" << "QQuickWebEngineFileDialogRequest.FileModeOpenMultiple --> FileMode" << "QQuickWebEngineFileDialogRequest.FileModeSave --> FileMode" @@ -367,6 +389,8 @@ static const QStringList expectedAPI = QStringList() << "QQuickWebEngineSettings.autoLoadImagesChanged() --> void" << "QQuickWebEngineSettings.defaultTextEncoding --> QString" << "QQuickWebEngineSettings.defaultTextEncodingChanged() --> void" + << "QQuickWebEngineSettings.dnsPrefetchEnabled --> bool" + << "QQuickWebEngineSettings.dnsPrefetchEnabledChanged() --> void" << "QQuickWebEngineSettings.errorPageEnabled --> bool" << "QQuickWebEngineSettings.errorPageEnabledChanged() --> void" << "QQuickWebEngineSettings.focusOnNavigationEnabled --> bool" @@ -379,6 +403,8 @@ static const QStringList expectedAPI = QStringList() << "QQuickWebEngineSettings.javascriptCanAccessClipboardChanged() --> void" << "QQuickWebEngineSettings.javascriptCanOpenWindows --> bool" << "QQuickWebEngineSettings.javascriptCanOpenWindowsChanged() --> void" + << "QQuickWebEngineSettings.javascriptCanPaste --> bool" + << "QQuickWebEngineSettings.javascriptCanPasteChanged() --> void" << "QQuickWebEngineSettings.javascriptEnabled --> bool" << "QQuickWebEngineSettings.javascriptEnabledChanged() --> void" << "QQuickWebEngineSettings.linksIncludedInFocusChain --> bool" @@ -676,6 +702,7 @@ static const QStringList expectedAPI = QStringList() << "QQuickWebEngineView.navigationRequested(QQuickWebEngineNavigationRequest*) --> void" << "QQuickWebEngineView.newViewRequested(QQuickWebEngineNewViewRequest*) --> void" << "QQuickWebEngineView.pdfPrintingFinished(QString,bool) --> void" + << "QQuickWebEngineView.printRequested() --> void" << "QQuickWebEngineView.printToPdf(QJSValue) --> void" << "QQuickWebEngineView.printToPdf(QJSValue,PrintedPageSizeId) --> void" << "QQuickWebEngineView.printToPdf(QJSValue,PrintedPageSizeId,PrintedPageOrientation) --> void" @@ -702,8 +729,10 @@ static const QStringList expectedAPI = QStringList() << "QQuickWebEngineView.setActiveFocusOnPress(bool) --> void" << "QQuickWebEngineView.settings --> QQuickWebEngineSettings*" << "QQuickWebEngineView.stop() --> void" +#if QT_CONFIG(webengine_testsupport) << "QQuickWebEngineView.testSupport --> QQuickWebEngineTestSupport*" << "QQuickWebEngineView.testSupportChanged() --> void" +#endif << "QQuickWebEngineView.title --> QString" << "QQuickWebEngineView.titleChanged() --> void" << "QQuickWebEngineView.triggerWebAction(WebAction) --> void" @@ -833,18 +862,23 @@ void tst_publicapi::publicAPI() // for (const QString &actual : qAsConst(sortedAPI)) // printf(" << \"%s\"\n", qPrintable(actual)); + bool apiMatch = true; // Make sure that nothing slips in the public API unintentionally. for (const QString &actual : qAsConst(actualAPI)) { - if (!expectedAPI.contains(actual)) - QEXPECT_FAIL("", qPrintable("Expected list is not up-to-date: " + actual), Continue); - QVERIFY2(expectedAPI.contains(actual), qPrintable(actual)); + if (!expectedAPI.contains(actual)) { + QWARN(qPrintable("Expected list is not up-to-date: " + actual)); + apiMatch = false; + } } // Make sure that the expected list is up-to-date with intentionally added APIs. for (const QString &expected : expectedAPI) { - if (!actualAPI.contains(expected)) - QEXPECT_FAIL("", qPrintable("Not implemented: " + expected), Continue); - QVERIFY2(actualAPI.contains(expected), qPrintable(expected)); + if (!actualAPI.contains(expected)) { + apiMatch = false; + QWARN(qPrintable("Not implemented: " + expected)); + } } + + QVERIFY2(apiMatch, "Unexpected, missing or misspelled API!"); } QTEST_MAIN(tst_publicapi) diff --git a/tests/auto/quick/qmltests/data/tst_favicon.qml b/tests/auto/quick/qmltests/data/tst_favicon.qml index 563a87c83..50a412384 100644 --- a/tests/auto/quick/qmltests/data/tst_favicon.qml +++ b/tests/auto/quick/qmltests/data/tst_favicon.qml @@ -375,5 +375,38 @@ TestWebEngineView { faviconImage.destroy() } + + function test_touchIconWithSameURL() + { + WebEngine.settings.touchIconsEnabled = false; + + var icon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="; + + webEngineView.loadHtml( + "<html>" + + "<link rel='icon' type='image/png' href='" + icon + "'/>" + + "<link rel='apple-touch-icon' type='image/png' href='" + icon + "'/>" + + "</html>" + ); + verify(webEngineView.waitForLoadSucceeded()); + + // The default favicon has to be loaded even if its URL is also set as a touch icon while touch icons are disabled. + tryCompare(iconChangedSpy, "count", 1); + compare(webEngineView.icon.toString().replace(/^image:\/\/favicon\//, ''), icon); + + iconChangedSpy.clear(); + + webEngineView.loadHtml( + "<html>" + + "<link rel='apple-touch-icon' type='image/png' href='" + icon + "'/>" + + "</html>" + ); + verify(webEngineView.waitForLoadSucceeded()); + + // This page only has a touch icon. With disabled touch icons we don't expect any icon to be shown even if the same icon + // was loaded previously. + tryCompare(iconChangedSpy, "count", 1); + verify(!webEngineView.icon.toString().replace(/^image:\/\/favicon\//, '')); + } } } diff --git a/tests/auto/widgets/faviconmanager/tst_faviconmanager.cpp b/tests/auto/widgets/faviconmanager/tst_faviconmanager.cpp index 606d05d9e..540c8d505 100644 --- a/tests/auto/widgets/faviconmanager/tst_faviconmanager.cpp +++ b/tests/auto/widgets/faviconmanager/tst_faviconmanager.cpp @@ -62,6 +62,7 @@ private Q_SLOTS: void downloadTouchIconsEnabled_data(); void downloadTouchIconsEnabled(); void dynamicFavicon(); + void touchIconWithSameURL(); private: QWebEngineView *m_view; @@ -508,6 +509,43 @@ void tst_FaviconManager::dynamicFavicon() } } +void tst_FaviconManager::touchIconWithSameURL() +{ + m_page->settings()->setAttribute(QWebEngineSettings::TouchIconsEnabled, false); + + const QString icon("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="); + QSignalSpy loadFinishedSpy(m_page, SIGNAL(loadFinished(bool))); + QSignalSpy iconUrlChangedSpy(m_page, SIGNAL(iconUrlChanged(QUrl))); + QSignalSpy iconChangedSpy(m_page, SIGNAL(iconChanged(QIcon))); + + m_page->setHtml("<html>" + "<link rel='icon' type='image/png' href='" + icon + "'/>" + "<link rel='apple-touch-icon' type='image/png' href='" + icon + "'/>" + "</html>"); + QTRY_COMPARE(loadFinishedSpy.count(), 1); + + // The default favicon has to be loaded even if its URL is also set as a touch icon while touch icons are disabled. + QTRY_COMPARE(iconUrlChangedSpy.count(), 1); + QCOMPARE(m_page->iconUrl().toString(), icon); + QTRY_COMPARE(iconChangedSpy.count(), 1); + + loadFinishedSpy.clear(); + iconUrlChangedSpy.clear(); + iconChangedSpy.clear(); + + m_page->setHtml("<html>" + "<link rel='apple-touch-icon' type='image/png' href='" + icon + "'/>" + "</html>"); + QTRY_COMPARE(loadFinishedSpy.count(), 1); + + // This page only has a touch icon. With disabled touch icons we don't expect any icon to be shown even if the same icon + // was loaded previously. + QTRY_COMPARE(iconUrlChangedSpy.count(), 1); + QVERIFY(m_page->iconUrl().toString().isEmpty()); + QTRY_COMPARE(iconChangedSpy.count(), 1); + +} + QTEST_MAIN(tst_FaviconManager) #include "tst_faviconmanager.moc" diff --git a/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp b/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp index 32823d30d..ee1e6ee04 100644 --- a/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp +++ b/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp @@ -70,6 +70,7 @@ private Q_SLOTS: void downloadFileNot1(); void downloadFileNot2(); void downloadDeleted(); + void downloadDeletedByProfile(); void downloadUniqueFilename_data(); void downloadUniqueFilename(); void downloadUniqueFileNameWithTimeStamp(); @@ -821,6 +822,37 @@ void tst_QWebEngineDownloadItem::downloadDeleted() QTRY_COMPARE(finishedCount, 1); } +void tst_QWebEngineDownloadItem::downloadDeletedByProfile() +{ + m_server->setExpectError(true); + + QPointer<QWebEngineProfile> profile(new QWebEngineProfile); + profile->setHttpCacheType(QWebEngineProfile::NoCache); + profile->settings()->setAttribute(QWebEngineSettings::AutoLoadIconsForPage, false); + + bool downloadFinished = false; + QPointer<QWebEngineDownloadItem> downloadItem; + connect(profile, &QWebEngineProfile::downloadRequested, [&] (QWebEngineDownloadItem *item) { + connect(item, &QWebEngineDownloadItem::finished, [&] () { + downloadFinished = true; + }); + downloadItem = item; + item->accept(); + }); + + QPointer<QWebEnginePage> page(new QWebEnginePage(profile)); + page->download(m_server->url(QByteArrayLiteral("/file"))); + + QTRY_COMPARE(downloadItem.isNull(), false); + QVERIFY(downloadItem); + + page->deleteLater(); + profile->deleteLater(); + + QTRY_COMPARE(downloadFinished, true); + QTRY_COMPARE(downloadItem.isNull(), true); +} + void tst_QWebEngineDownloadItem::downloadUniqueFilename_data() { QTest::addColumn<QString>("baseName"); |