summaryrefslogtreecommitdiffstats
path: root/src/core/file_picker_controller.cpp
diff options
context:
space:
mode:
authorTamas Zakor <ztamas@inf.u-szeged.hu>2019-03-12 15:59:09 +0100
committerTamas Zakor <ztamas@inf.u-szeged.hu>2019-04-10 13:46:01 +0000
commit43eb77cb0d93020ce7db27fa2ac8dc7ef7738709 (patch)
treebd673ec533a10a4b79791437f2a7057bf8b6df1c /src/core/file_picker_controller.cpp
parent121e7452879db6a7c84b039cdb00a097ab4d6586 (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.cpp31
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()