diff options
author | Szabolcs David <davidsz@inf.u-szeged.hu> | 2021-06-11 16:25:20 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-07-01 09:53:14 +0000 |
commit | c1b07a71bf594054a014f533153a8d112009c63e (patch) | |
tree | 54f9a314124dee669ee35f450beb4341402a8f56 /tests | |
parent | caf912cfa4bb5401c26ccd7b56a1126bd7d16d39 (diff) |
Implement dialogs of File System Access API
Dialogs triggered by window.showOpenFilePicker() or
window.showDirectoryPicker() needed different implementation than
regular file picker dialogs. Since the end-users can't distinguish
between HTML file picker dialogs and these file system access dialogs,
we can just use the existing file picker WebEngine API and UI delegates.
Task-number: QTBUG-92519
Change-Id: Ib1624f80603c4042803303274ba45d864ecb371c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
(cherry picked from commit 46a2f0f3137dcb46f2752130bbee6438742c27ac)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp index 797aef335..2cb0843db 100644 --- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp +++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp @@ -240,6 +240,7 @@ private Q_SLOTS: void testChooseFilesParameters_data(); void testChooseFilesParameters(); + void fileSystemAccessDialog(); private: static QPoint elementCenter(QWebEnginePage *page, const QString &id); @@ -4728,6 +4729,34 @@ void tst_QWebEnginePage::testChooseFilesParameters() QTRY_COMPARE(page.chosenAcceptedMimeTypes, expectedMimeType); } +void tst_QWebEnginePage::fileSystemAccessDialog() +{ + FileSelectionTestPage page; + QSignalSpy spyFinished(&page, &QWebEnginePage::loadFinished); + + QWebEngineView view; + view.resize(500, 500); + view.setPage(&page); + view.show(); + QVERIFY(QTest::qWaitForWindowExposed(&view)); + + page.setHtml(QString("<html><body>" + "<button id='triggerDialog' value='trigger' " + "onclick='window.showDirectoryPicker()'>" + "</body></html>"), + QString("qrc:/")); + QVERIFY(spyFinished.wait()); + QTRY_COMPARE(spyFinished.count(), 1); + + evaluateJavaScriptSync(view.page(), "document.getElementById('triggerDialog').focus()"); + QTRY_COMPARE(evaluateJavaScriptSync(view.page(), "document.activeElement.id").toString(), + QStringLiteral("triggerDialog")); + QTest::keyClick(view.focusProxy(), Qt::Key_Enter); + + QTRY_COMPARE(page.chosenFileSelectionMode, QWebEnginePage::FileSelectUploadFolder); + QTRY_COMPARE(page.chosenAcceptedMimeTypes, QStringList()); +} + void tst_QWebEnginePage::backgroundColor() { QWebEngineProfile profile; |