Changeset 43319 in webkit


Ignore:
Timestamp:
May 6, 2009 12:38:53 PM (15 years ago)
Author:
kov@webkit.org
Message:

2009-05-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>

Reviewed by Xan Lopez.

https://bugs.webkit.org/show_bug.cgi?id=24786
WebKitDownload sometimes suggests peculiar filenames

When a download is requested by an ongoing request, use the already
provided response to set the suggested filename for the WebKitDownload
object, if available.

  • WebCoreSupport/FrameLoaderClientGtk.cpp: (WebKit::FrameLoaderClient::download):
  • webkit/webkitdownload.cpp: (_WebKitDownloadPrivate::webkit_download_set_property): (_WebKitDownloadPrivate::webkit_download_get_suggested_filename): (_WebKitDownloadPrivate::webkit_download_set_suggested_filename):
  • webkit/webkitprivate.h:
  • webkit/webkitwebview.cpp:
Location:
trunk/WebKit/gtk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/gtk/ChangeLog

    r43302 r43319  
     12009-05-06  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
     2
     3        Reviewed by Xan Lopez.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=24786
     6        WebKitDownload sometimes suggests peculiar filenames
     7
     8        When a download is requested by an ongoing request, use the already
     9        provided response to set the suggested filename for the WebKitDownload
     10        object, if available.
     11
     12        * WebCoreSupport/FrameLoaderClientGtk.cpp:
     13        (WebKit::FrameLoaderClient::download):
     14        * webkit/webkitdownload.cpp:
     15        (_WebKitDownloadPrivate::webkit_download_set_property):
     16        (_WebKitDownloadPrivate::webkit_download_get_suggested_filename):
     17        (_WebKitDownloadPrivate::webkit_download_set_suggested_filename):
     18        * webkit/webkitprivate.h:
     19        * webkit/webkitwebview.cpp:
     20
    1212009-05-06  Jan Michael Alonzo  <jmalonzo@webkit.org>
    222
  • trunk/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp

    r43256 r43319  
    910910}
    911911
    912 void FrameLoaderClient::download(ResourceHandle* handle, const ResourceRequest& request, const ResourceRequest&, const ResourceResponse&)
     912void FrameLoaderClient::download(ResourceHandle* handle, const ResourceRequest& request, const ResourceRequest&, const ResourceResponse& response)
    913913{
    914914    // FIXME: We could reuse the same handle here, but when I tried
     
    916916    // simplified this case for now.
    917917    handle->cancel();
    918     startDownload(request);
     918
     919    WebKitNetworkRequest* networkRequest = webkit_network_request_new(request.url().string().utf8().data());
     920    WebKitWebView* view = getViewFromFrame(m_frame);
     921
     922    webkit_web_view_request_download(view, networkRequest, response);
     923    g_object_unref(networkRequest);
    919924}
    920925
  • trunk/WebKit/gtk/webkit/webkitdownload.cpp

    r43302 r43319  
    185185    WebKitDownload* download = WEBKIT_DOWNLOAD(object);
    186186    WebKitDownloadPrivate* priv = download->priv;
    187     KURL url;
    188187
    189188    switch(prop_id) {
    190189    case PROP_NETWORK_REQUEST:
    191190        priv->networkRequest = WEBKIT_NETWORK_REQUEST(g_value_dup_object(value));
    192         // This is safe as network-request is a construct only property and
    193         // suggestedFilename is initially null.
    194         url = KURL(KURL(), webkit_network_request_get_uri(priv->networkRequest));
    195         url.setQuery(String());
    196         url.removeRef();
    197         priv->suggestedFilename = g_strdup(decodeURLEscapeSequences(url.lastPathComponent()).utf8().data());
    198191        break;
    199192    case PROP_DESTINATION_URI:
     
    533526
    534527    WebKitDownloadPrivate* priv = download->priv;
     528    if (priv->suggestedFilename)
     529        return priv->suggestedFilename;
     530
     531    KURL url = KURL(KURL(), webkit_network_request_get_uri(priv->networkRequest));
     532    url.setQuery(String());
     533    url.removeRef();
     534    priv->suggestedFilename = g_strdup(decodeURLEscapeSequences(url.lastPathComponent()).utf8().data());
    535535    return priv->suggestedFilename;
    536536}
     537
     538// for internal use only
     539void webkit_download_set_suggested_filename(WebKitDownload* download, const gchar* suggestedFilename)
     540{
     541    WebKitDownloadPrivate* priv = download->priv;
     542    g_free(priv->suggestedFilename);
     543    priv->suggestedFilename = g_strdup(suggestedFilename);
     544}
     545
    537546
    538547/**
  • trunk/WebKit/gtk/webkit/webkitprivate.h

    r43256 r43319  
    169169
    170170    void
    171     webkit_web_view_request_download(WebKitWebView* web_view, WebKitNetworkRequest* request);
     171    webkit_web_view_request_download(WebKitWebView* web_view, WebKitNetworkRequest* request, const WebCore::ResourceResponse& response = WebCore::ResourceResponse());
     172
     173    void
     174    webkit_download_set_suggested_filename(WebKitDownload* download, const gchar* suggestedFilename);
    172175
    173176    WebKitWebPolicyDecision*
  • trunk/WebKit/gtk/webkit/webkitwebview.cpp

    r43302 r43319  
    21442144}
    21452145
    2146 void webkit_web_view_request_download(WebKitWebView* webView, WebKitNetworkRequest* request)
     2146void webkit_web_view_request_download(WebKitWebView* webView, WebKitNetworkRequest* request, const ResourceResponse& response)
    21472147{
    21482148    g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
    21492149
    21502150    WebKitDownload* download = webkit_download_new(request);
     2151
     2152    if (!response.isNull() && !response.suggestedFilename().isEmpty())
     2153        webkit_download_set_suggested_filename(download, response.suggestedFilename().utf8().data());
    21512154
    21522155    gboolean handled;
Note: See TracChangeset for help on using the changeset viewer.