summaryrefslogtreecommitdiff
path: root/Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp')
-rw-r--r--Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp b/Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp
index d106d1e53..5eb855673 100644
--- a/Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp
+++ b/Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp
@@ -24,10 +24,13 @@
#include "ResourceResponse.h"
#include "webkitglobalsprivate.h"
+#include "webkitnetworkresponseprivate.h"
#include <glib/gi18n-lib.h>
#include <wtf/gobject/GRefPtr.h>
#include <wtf/text/CString.h>
+using namespace WebKit;
+
/**
* SECTION:webkitnetworkresponse
* @short_description: the response given to a network request
@@ -43,6 +46,7 @@ G_DEFINE_TYPE(WebKitNetworkResponse, webkit_network_response, G_TYPE_OBJECT);
struct _WebKitNetworkResponsePrivate {
gchar* uri;
+ gchar* suggestedFilename;
SoupMessage* message;
};
@@ -53,6 +57,7 @@ enum {
PROP_URI,
PROP_MESSAGE,
+ PROP_SUGGESTED_FILENAME,
};
static void webkit_network_response_dispose(GObject* object)
@@ -74,6 +79,7 @@ static void webkit_network_response_finalize(GObject* object)
WebKitNetworkResponsePrivate* priv = response->priv;
g_free(priv->uri);
+ g_free(priv->suggestedFilename);
G_OBJECT_CLASS(webkit_network_response_parent_class)->finalize(object);
}
@@ -89,6 +95,9 @@ static void webkit_network_response_get_property(GObject* object, guint property
case PROP_MESSAGE:
g_value_set_object(value, webkit_network_response_get_message(response));
break;
+ case PROP_SUGGESTED_FILENAME:
+ g_value_set_string(value, webkit_network_response_get_suggested_filename(response));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec);
}
@@ -150,6 +159,20 @@ static void webkit_network_response_class_init(WebKitNetworkResponseClass* respo
SOUP_TYPE_MESSAGE,
(GParamFlags)(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)));
+ /**
+ * WebKitNetworkResponse:suggested-filename:
+ *
+ * The suggested filename for the response.
+ *
+ * Since: 1.10
+ */
+ g_object_class_install_property(objectClass, PROP_SUGGESTED_FILENAME,
+ g_param_spec_string("suggested-filename",
+ _("Suggested filename"),
+ _("The suggested filename for the response."),
+ 0,
+ WEBKIT_PARAM_READABLE));
+
g_type_class_add_private(responseClass, sizeof(WebKitNetworkResponsePrivate));
}
@@ -250,6 +273,32 @@ SoupMessage* webkit_network_response_get_message(WebKitNetworkResponse* response
return priv->message;
}
+/**
+ * webkit_network_response_get_suggested_filename:
+ * @response: a #WebKitNetworkResponse
+ *
+ * Obtains the suggested filename for the given network response. The
+ * suggested filename is taken from the 'Content-Disposition' HTTP
+ * header, but this is not always present, and this method will return
+ * %NULL in such case.
+ *
+ * Returns: (transfer none): the suggested filename or %NULL if not present
+ * Since: 1.10
+ **/
+const gchar* webkit_network_response_get_suggested_filename(WebKitNetworkResponse* response)
+{
+ g_return_val_if_fail(WEBKIT_IS_NETWORK_RESPONSE(response), 0);
+
+ WebKitNetworkResponsePrivate* priv = response->priv;
+
+ if (priv->suggestedFilename)
+ return priv->suggestedFilename;
+
+ WebCore::ResourceResponse coreResponse = core(response);
+ priv->suggestedFilename = g_strdup(coreResponse.suggestedFilename().utf8().data());
+ return priv->suggestedFilename;
+}
+
namespace WebKit {
WebCore::ResourceResponse core(WebKitNetworkResponse* response)