diff options
author | Tamas Zakor <ztamas@inf.u-szeged.hu> | 2019-03-12 15:59:09 +0100 |
---|---|---|
committer | Tamas Zakor <ztamas@inf.u-szeged.hu> | 2019-04-10 13:46:01 +0000 |
commit | 43eb77cb0d93020ce7db27fa2ac8dc7ef7738709 (patch) | |
tree | bd673ec533a10a4b79791437f2a7057bf8b6df1c /src/core/file_picker_controller.cpp | |
parent | 121e7452879db6a7c84b039cdb00a097ab4d6586 (diff) |
Fix qmltests::WebEngineViewSingleFileUpload auto tests
Add scheme checks for FilePickerController::accepted().
A file:// prefix to a file selected here causes chromium to terminate
the render process due to an illegal ipc message.
Extend auto tests with custom Dialog.
Also fix directory upload test.
Change-Id: I8d672e435129d62d268b48c3471b924c0161b44b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/file_picker_controller.cpp')
-rw-r--r-- | src/core/file_picker_controller.cpp | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/src/core/file_picker_controller.cpp b/src/core/file_picker_controller.cpp index 05aed8d2b..3e64afd20 100644 --- a/src/core/file_picker_controller.cpp +++ b/src/core/file_picker_controller.cpp @@ -63,24 +63,35 @@ FilePickerController::~FilePickerController() = default; void FilePickerController::accepted(const QStringList &files) { - FilePickerController::filesSelectedInChooser(files); + QStringList stringList; + + for (const QString &file : files) { + if (QDir(file).isAbsolute()) + stringList.append(file); + else + qWarning("Ignore invalid item in FilePickerController::accepted(QStringList): %s", qPrintable(file)); + } + + FilePickerController::filesSelectedInChooser(stringList); } void FilePickerController::accepted(const QVariant &files) { QStringList stringList; + QList<QUrl> urlList = QUrl::fromStringList(files.toStringList()); - if (files.canConvert(QVariant::StringList)) { - stringList = files.toStringList(); - } else if (files.canConvert<QList<QUrl> >()) { - const QList<QUrl> urls = files.value<QList<QUrl>>(); - for (const QUrl &url : urls) - stringList.append(url.toLocalFile()); + if (urlList.isEmpty()) { + FilePickerController::accepted(stringList); } else { - qWarning("An unhandled type '%s' was provided in FilePickerController::accepted(QVariant)", files.typeName()); + for (const QUrl &url : qAsConst(urlList)) { + if (url.isValid() && url.scheme() == "file" && !url.path().isEmpty()) + stringList.append(url.path()); + else + qWarning("Ignore invalid item in FilePickerController::accepted(QVariant): %s", qPrintable(url.toString())); + } + + FilePickerController::accepted(stringList); } - - FilePickerController::filesSelectedInChooser(stringList); } void FilePickerController::rejected() |