summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/api
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@theqtcompany.com>2015-06-25 15:07:49 +0200
committerJoerg Bornemann <joerg.bornemann@theqtcompany.com>2015-06-25 15:37:29 +0000
commitdd78b4c3d9673b12eb3006140b80056273d4a815 (patch)
treea13e50d824414a84ff5959468df21be2e5ea88de /src/webenginewidgets/api
parent47e1ba58ef33ae7a22f122d240aa935d8211046c (diff)
Fix cancellation of file dialogs.
When the user canceled a file dialog (e.g. provided by an input tag), then the renderer process would exit and the web page would turn blank. We must not pass empty strings or otherwise invalid file paths to RenderViewHost::FilesSelectedInChooser, because OnUpdateState will check for accessibility of those files and shutdown the renderer on failure. Task-number: QTBUG-46869 Change-Id: Ie01e56999c5e7acd42c5b3fd4993de7f3a5f2e73 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'src/webenginewidgets/api')
-rw-r--r--src/webenginewidgets/api/qwebenginepage.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index 1b5a243df..6207a2b30 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -1050,20 +1050,27 @@ QStringList QWebEnginePage::chooseFiles(FileSelectionMode mode, const QStringLis
// can work with) and mimetypes ranging from text/plain or images/* to application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Q_UNUSED(acceptedMimeTypes);
QStringList ret;
+ QString str;
switch (static_cast<WebContentsAdapterClient::FileChooserMode>(mode)) {
case WebContentsAdapterClient::OpenMultiple:
ret = QFileDialog::getOpenFileNames(view(), QString());
break;
// Chromium extension, not exposed as part of the public API for now.
case WebContentsAdapterClient::UploadFolder:
- ret << QFileDialog::getExistingDirectory(view(), tr("Select folder to upload")) + QLatin1Char('/');
+ str = QFileDialog::getExistingDirectory(view(), tr("Select folder to upload")) + QLatin1Char('/');
+ if (!str.isNull())
+ ret << str;
break;
case WebContentsAdapterClient::Save:
- ret << QFileDialog::getSaveFileName(view(), QString(), (QStandardPaths::writableLocation(QStandardPaths::DownloadLocation) + oldFiles.first()));
+ str = QFileDialog::getSaveFileName(view(), QString(), (QStandardPaths::writableLocation(QStandardPaths::DownloadLocation) + oldFiles.first()));
+ if (!str.isNull())
+ ret << str;
break;
default:
case WebContentsAdapterClient::Open:
- ret << QFileDialog::getOpenFileName(view(), QString(), oldFiles.first());
+ str = QFileDialog::getOpenFileName(view(), QString(), oldFiles.first());
+ if (!str.isNull())
+ ret << str;
break;
}
return ret;