diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-04-30 15:14:45 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-05-13 10:30:56 +0200 |
commit | 196ec015caf7634fd1924a9f9e532e230a9b342a (patch) | |
tree | b627b99bf4dda4809d07a39c1ba7b80775ff40f9 /tests/auto | |
parent | 44126b97f447294570a1d3a1f94a12ef565e467e (diff) |
Add NavigateOnDrop settings
Some applications want this to avoid users navigating away from their
app content.
[ChangeLog][Settings] NavigateOnDropEnabled added, enabled by default.
Change-Id: I2cc370f60ef42c708042cbc2503207f8254cf932
Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/quick/publicapi/tst_publicapi.cpp | 2 | ||||
-rw-r--r-- | tests/auto/widgets/qwebengineview/BLACKLIST | 3 | ||||
-rw-r--r-- | tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp | 36 |
3 files changed, 37 insertions, 4 deletions
diff --git a/tests/auto/quick/publicapi/tst_publicapi.cpp b/tests/auto/quick/publicapi/tst_publicapi.cpp index c22176265..edec675f6 100644 --- a/tests/auto/quick/publicapi/tst_publicapi.cpp +++ b/tests/auto/quick/publicapi/tst_publicapi.cpp @@ -426,6 +426,8 @@ static const QStringList expectedAPI = QStringList() << "QQuickWebEngineSettings.localContentCanAccessRemoteUrlsChanged() --> void" << "QQuickWebEngineSettings.localStorageEnabled --> bool" << "QQuickWebEngineSettings.localStorageEnabledChanged() --> void" + << "QQuickWebEngineSettings.navigateOnDropEnabled --> bool" + << "QQuickWebEngineSettings.navigateOnDropEnabledChanged() --> void" << "QQuickWebEngineSettings.pdfViewerEnabled --> bool" << "QQuickWebEngineSettings.pdfViewerEnabledChanged() --> void" << "QQuickWebEngineSettings.playbackRequiresUserGesture --> bool" diff --git a/tests/auto/widgets/qwebengineview/BLACKLIST b/tests/auto/widgets/qwebengineview/BLACKLIST index 4bc678d10..ebdf37ea4 100644 --- a/tests/auto/widgets/qwebengineview/BLACKLIST +++ b/tests/auto/widgets/qwebengineview/BLACKLIST @@ -15,3 +15,6 @@ b2qt arm [navigateOnDrop:file] windows + +[navigateOnDrop:file_no_navigate] +windows diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp index 74ac24deb..921b0c52f 100644 --- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp +++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp @@ -3519,16 +3519,21 @@ void tst_QWebEngineView::inspectElement() void tst_QWebEngineView::navigateOnDrop_data() { QTest::addColumn<QUrl>("url"); - QTest::newRow("file") << QUrl::fromLocalFile(QDir(QT_TESTCASE_SOURCEDIR).absoluteFilePath("resources/dummy.html")); - QTest::newRow("qrc") << QUrl("qrc:///resources/dummy.html"); + QTest::addColumn<bool>("navigateOnDrop"); + QTest::newRow("file") << QUrl::fromLocalFile(QDir(QT_TESTCASE_SOURCEDIR).absoluteFilePath("resources/dummy.html")) << true; + QTest::newRow("qrc") << QUrl("qrc:///resources/dummy.html") << true; + QTest::newRow("file_no_navigate") << QUrl::fromLocalFile(QDir(QT_TESTCASE_SOURCEDIR).absoluteFilePath("resources/dummy.html")) << false; + QTest::newRow("qrc_no_navigate") << QUrl("qrc:///resources/dummy.html") << false; } void tst_QWebEngineView::navigateOnDrop() { QFETCH(QUrl, url); + QFETCH(bool, navigateOnDrop); struct WebEngineView : QWebEngineView { QWebEngineView* createWindow(QWebEnginePage::WebWindowType /* type */) override { return this; } } view; + view.page()->settings()->setAttribute(QWebEngineSettings::NavigateOnDropEnabled, navigateOnDrop); view.resize(640, 480); view.show(); QVERIFY(QTest::qWaitForWindowExposed(&view)); @@ -3545,9 +3550,32 @@ void tst_QWebEngineView::navigateOnDrop() }; sendEvents(); + if (navigateOnDrop) { + QTRY_COMPARE(loadSpy.count(), 1); + QVERIFY(loadSpy.last().first().toBool()); + QCOMPARE(view.url(), url); + } else { + QTest::qWait(500); + QCOMPARE(loadSpy.size(), 0); + QVERIFY(view.url() != url); + } + + // Check dynamically changing the setting + loadSpy.clear(); + view.page()->settings()->setAttribute(QWebEngineSettings::NavigateOnDropEnabled, !navigateOnDrop); + view.setUrl(QUrl("about:blank")); QTRY_COMPARE(loadSpy.count(), 1); - QVERIFY(loadSpy.first().first().toBool()); - QCOMPARE(view.url(), url); + + sendEvents(); + if (!navigateOnDrop) { + QTRY_COMPARE(loadSpy.count(), 2); + QVERIFY(loadSpy.last().first().toBool()); + QCOMPARE(view.url(), url); + } else { + QTest::qWait(500); + QCOMPARE(loadSpy.size(), 1); + QVERIFY(view.url() != url); + } } QTEST_MAIN(tst_QWebEngineView) |