summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSzabolcs David <davidsz@inf.u-szeged.hu>2021-06-11 16:25:20 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-07-01 09:53:14 +0000
commitc1b07a71bf594054a014f533153a8d112009c63e (patch)
tree54f9a314124dee669ee35f450beb4341402a8f56 /tests
parentcaf912cfa4bb5401c26ccd7b56a1126bd7d16d39 (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.cpp29
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;