diff options
author | Szabolcs David <davidsz@inf.u-szeged.hu> | 2021-06-11 16:25:20 +0200 |
---|---|---|
committer | Szabolcs David <davidsz@inf.u-szeged.hu> | 2021-06-15 02:56:55 +0000 |
commit | 46a2f0f3137dcb46f2752130bbee6438742c27ac (patch) | |
tree | 509836a22df29b142f9077db182dbacfecf482fb /tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp | |
parent | 712702757f105aa2390b00c8412950967aa1e881 (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
Pick-to: 6.2
Change-Id: Ib1624f80603c4042803303274ba45d864ecb371c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp')
-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 8aabf927e..b01bece34 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; |