diff options
Diffstat (limited to 'Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp index 0855deea3..8b187a44e 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp @@ -21,14 +21,14 @@ #include "WebKitFileChooserRequest.h" #include "APIArray.h" +#include "APIOpenPanelParameters.h" #include "APIString.h" #include "WebKitFileChooserRequestPrivate.h" -#include "WebOpenPanelParameters.h" #include "WebOpenPanelResultListenerProxy.h" #include <WebCore/FileSystem.h> #include <glib/gi18n-lib.h> -#include <wtf/gobject/GRefPtr.h> -#include <wtf/gobject/GUniquePtr.h> +#include <wtf/glib/GRefPtr.h> +#include <wtf/glib/GUniquePtr.h> #include <wtf/text/CString.h> using namespace WebKit; @@ -59,7 +59,7 @@ using namespace WebCore; */ struct _WebKitFileChooserRequestPrivate { - RefPtr<WebOpenPanelParameters> parameters; + RefPtr<API::OpenPanelParameters> parameters; RefPtr<WebOpenPanelResultListenerProxy> listener; GRefPtr<GtkFileFilter> filter; GRefPtr<GPtrArray> mimeTypes; @@ -175,7 +175,7 @@ static void webkit_file_chooser_request_class_init(WebKitFileChooserRequestClass WEBKIT_PARAM_READABLE)); } -WebKitFileChooserRequest* webkitFileChooserRequestCreate(WebOpenPanelParameters* parameters, WebOpenPanelResultListenerProxy* listener) +WebKitFileChooserRequest* webkitFileChooserRequestCreate(API::OpenPanelParameters* parameters, WebOpenPanelResultListenerProxy* listener) { WebKitFileChooserRequest* request = WEBKIT_FILE_CHOOSER_REQUEST(g_object_new(WEBKIT_TYPE_FILE_CHOOSER_REQUEST, NULL)); request->priv->parameters = parameters; @@ -206,7 +206,7 @@ const gchar* const* webkit_file_chooser_request_get_mime_types(WebKitFileChooser if (request->priv->mimeTypes) return reinterpret_cast<gchar**>(request->priv->mimeTypes->pdata); - RefPtr<API::Array> mimeTypes = request->priv->parameters->acceptMIMETypes(); + Ref<API::Array> mimeTypes = request->priv->parameters->acceptMIMETypes(); size_t numOfMimeTypes = mimeTypes->size(); if (!numOfMimeTypes) return 0; @@ -247,7 +247,7 @@ GtkFileFilter* webkit_file_chooser_request_get_mime_types_filter(WebKitFileChoos if (request->priv->filter) return request->priv->filter.get(); - RefPtr<API::Array> mimeTypes = request->priv->parameters->acceptMIMETypes(); + Ref<API::Array> mimeTypes = request->priv->parameters->acceptMIMETypes(); size_t numOfMimeTypes = mimeTypes->size(); if (!numOfMimeTypes) return 0; @@ -299,23 +299,15 @@ void webkit_file_chooser_request_select_files(WebKitFileChooserRequest* request, g_return_if_fail(files); GRefPtr<GPtrArray> selectedFiles = adoptGRef(g_ptr_array_new_with_free_func(g_free)); - Vector<RefPtr<API::Object> > choosenFiles; + Vector<String> chosenFiles; for (int i = 0; files[i]; i++) { - GRefPtr<GFile> filename = adoptGRef(g_file_new_for_path(files[i])); - - // Make sure the file path is presented as an URI (escaped - // string, with the 'file://' prefix) to WebCore otherwise the - // FileChooser won't actually choose it. - GUniquePtr<char> uri(g_file_get_uri(filename.get())); - choosenFiles.append(API::URL::create(String::fromUTF8(uri.get()))); - - // Do not use the URI here because this won't reach WebCore. + chosenFiles.append(WebCore::decodeURLEscapeSequences(String::fromUTF8(files[i]))); g_ptr_array_add(selectedFiles.get(), g_strdup(files[i])); } - g_ptr_array_add(selectedFiles.get(), 0); + g_ptr_array_add(selectedFiles.get(), nullptr); // Select the files in WebCore and update local private attributes. - request->priv->listener->chooseFiles(API::Array::create(std::move(choosenFiles)).get()); + request->priv->listener->chooseFiles(chosenFiles); request->priv->selectedFiles = selectedFiles; request->priv->handledRequest = true; } @@ -354,7 +346,7 @@ const gchar* const* webkit_file_chooser_request_get_selected_files(WebKitFileCho request->priv->selectedFiles = adoptGRef(g_ptr_array_new_with_free_func(g_free)); for (size_t i = 0; i < numOfFiles; ++i) { API::String* webFileName = static_cast<API::String*>(selectedFileNames->at(i)); - if (webFileName->isEmpty()) + if (webFileName->stringView().isEmpty()) continue; CString filename = fileSystemRepresentation(webFileName->string()); g_ptr_array_add(request->priv->selectedFiles.get(), g_strdup(filename.data())); |