diff options
author | Pierre Rossi <pierre.rossi@digia.com> | 2013-11-25 15:38:24 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-15 18:26:51 +0100 |
commit | c34b72183e85e7c615ca65381d8591cdca23faf2 (patch) | |
tree | d5359c75cc8178e1f0e07c56aa52f88daba3fa23 /src/core/web_contents_delegate_qt.cpp | |
parent | 0b611c393e8208af717bd1c5e6c1aed1379d03ca (diff) |
[Widgets] wire the file pickers
Introduce a new version of chooseFiles in QWebEnginePage.
The existing API in WebKit1 seemed a bit dusty in any case (multiple
only supported via extensions).
Changes are:
* oldFile becomes oldFiles, so that we could at a later stage expose
the already selected files in the "multiple" case.
* a type is introduced, for now limited to multiple selection, but
over time, we might consider additions such as directory upload.
Change-Id: I14cfea64ce95e892a0a1877c8cb914c5a421409f
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'src/core/web_contents_delegate_qt.cpp')
-rw-r--r-- | src/core/web_contents_delegate_qt.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp index 5c5026f78..6dd8121dd 100644 --- a/src/core/web_contents_delegate_qt.cpp +++ b/src/core/web_contents_delegate_qt.cpp @@ -50,6 +50,7 @@ #include "content/public/browser/web_contents.h" #include "content/public/browser/invalidate_type.h" #include "content/public/common/favicon_url.h" +#include "content/public/common/file_chooser_params.h" WebContentsDelegateQt::WebContentsDelegateQt(content::WebContents *webContents, WebContentsAdapterClient *adapterClient) : m_viewClient(adapterClient) @@ -130,3 +131,17 @@ content::JavaScriptDialogManager *WebContentsDelegateQt::GetJavaScriptDialogMana { return JavaScriptDialogManagerQt::GetInstance(); } + +Q_STATIC_ASSERT_X(static_cast<int>(WebContentsAdapterClient::Open) == static_cast<int>(content::FileChooserParams::Open), "Enums out of sync"); +Q_STATIC_ASSERT_X(static_cast<int>(WebContentsAdapterClient::Save) == static_cast<int>(content::FileChooserParams::Save), "Enums out of sync"); + +void WebContentsDelegateQt::RunFileChooser(content::WebContents *web_contents, const content::FileChooserParams ¶ms) +{ + Q_UNUSED(web_contents) + QStringList acceptedMimeTypes; + acceptedMimeTypes.reserve(params.accept_types.size()); + for (std::vector<base::string16>::const_iterator it = params.accept_types.begin(); it < params.accept_types.end(); ++it) + acceptedMimeTypes.append(toQt(*it)); + + m_viewClient->runFileChooser(static_cast<WebContentsAdapterClient::FileChooserMode>(params.mode), toQt(params.default_file_name.value()), acceptedMimeTypes); +} |