18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Copyright (C) 2007, 2008 Holger Hans Peter Freyther 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Gustavo Noronha Silva 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "webkitnetworkrequest.h" 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 24cad810f21b803229eb11403f9209855525a25d57Steve Block#include "GRefPtr.h" 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "ResourceRequest.h" 26cad810f21b803229eb11403f9209855525a25d57Steve Block#include "webkitglobalsprivate.h" 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <glib/gi18n-lib.h> 28cad810f21b803229eb11403f9209855525a25d57Steve Block#include <wtf/text/CString.h> 290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 31635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * SECTION:webkitnetworkrequest 32635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @short_description: The target of a navigation request 33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * @see_also: #WebKitWebView::navigation-policy-decision-requested 34635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 35635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * This class represents the network related aspects of a navigation 36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * request. It is used whenever WebKit wants to provide information 37231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * about a request that will be sent, or has been sent. Inside it you 38231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * can find the URI of the request, and, for valid URIs, a 39231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * #SoupMessage object, which provides access to further information 40231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * such as headers. 41635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 42635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 43635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectG_DEFINE_TYPE(WebKitNetworkRequest, webkit_network_request, G_TYPE_OBJECT); 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstruct _WebKitNetworkRequestPrivate { 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gchar* uri; 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch SoupMessage* message; 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochenum { 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch PROP_0, 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch PROP_URI, 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch PROP_MESSAGE, 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 58231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void webkit_network_request_dispose(GObject* object) 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitNetworkRequestPrivate* priv = request->priv; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (priv->message) { 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_unref(priv->message); 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch priv->message = NULL; 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 68231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block G_OBJECT_CLASS(webkit_network_request_parent_class)->dispose(object); 69231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 70231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 71231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blockstatic void webkit_network_request_finalize(GObject* object) 72231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 73231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object); 74231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebKitNetworkRequestPrivate* priv = request->priv; 75231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 76231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_free(priv->uri); 77231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project G_OBJECT_CLASS(webkit_network_request_parent_class)->finalize(object); 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstatic void webkit_network_request_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* pspec) 820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object); 840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch switch(propertyID) { 860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case PROP_URI: 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_value_set_string(value, webkit_network_request_get_uri(request)); 880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case PROP_MESSAGE: 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_value_set_object(value, webkit_network_request_get_message(request)); 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch default: 930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec); 940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstatic void webkit_network_request_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* pspec) 980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object); 1000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitNetworkRequestPrivate* priv = request->priv; 1010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch switch(propertyID) { 1030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case PROP_URI: 1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch webkit_network_request_set_uri(request, g_value_get_string(value)); 1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch case PROP_MESSAGE: 1070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch priv->message = SOUP_MESSAGE(g_value_dup_object(value)); 1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch break; 1090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch default: 1100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec); 1110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_network_request_class_init(WebKitNetworkRequestClass* requestClass) 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch GObjectClass* objectClass = G_OBJECT_CLASS(requestClass); 1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 118231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block objectClass->dispose = webkit_network_request_dispose; 1190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch objectClass->finalize = webkit_network_request_finalize; 1200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch objectClass->get_property = webkit_network_request_get_property; 1210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch objectClass->set_property = webkit_network_request_set_property; 1220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 123cad810f21b803229eb11403f9209855525a25d57Steve Block webkitInit(); 1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /** 1260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * WebKitNetworkRequest:uri: 1270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * The URI to which the request will be made. 1290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Since: 1.1.10 1310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 1320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_class_install_property(objectClass, PROP_URI, 1330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_param_spec_string("uri", 1340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _("URI"), 1350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _("The URI to which the request will be made."), 1360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch NULL, 1370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (GParamFlags)(WEBKIT_PARAM_READWRITE))); 1380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /** 1400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * WebKitNetworkRequest:message: 1410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * The #SoupMessage that backs the request. 1430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Since: 1.1.10 1450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 1460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_class_install_property(objectClass, PROP_MESSAGE, 1470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_param_spec_object("message", 1480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _("Message"), 1490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _("The SoupMessage that backs the request."), 1500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch SOUP_TYPE_MESSAGE, 1510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch (GParamFlags)(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY))); 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_type_class_add_private(requestClass, sizeof(WebKitNetworkRequestPrivate)); 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_network_request_init(WebKitNetworkRequest* request) 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 158f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebKitNetworkRequestPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequestPrivate); 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project request->priv = priv; 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/** 1630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * webkit_network_request_new: 1640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * @uri: an URI 1650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Creates a new #WebKitNetworkRequest initialized with an URI. 1670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Returns: a new #WebKitNetworkRequest, or %NULL if the URI is 1690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * invalid. 1700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 1710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochWebKitNetworkRequest* webkit_network_request_new(const gchar* uri) 1720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_return_val_if_fail(uri, NULL); 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "uri", uri, NULL)); 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/** 1790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * webkit_network_request_set_uri: 1800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * @request: a #WebKitNetworkRequest 1810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * @uri: an URI 1820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Sets the URI held and used by the given request. When the request 1840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * has an associated #SoupMessage, its URI will also be set by this 1850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * call. 1860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid webkit_network_request_set_uri(WebKitNetworkRequest* request, const gchar* uri) 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_if_fail(WEBKIT_IS_NETWORK_REQUEST(request)); 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_if_fail(uri); 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitNetworkRequestPrivate* priv = request->priv; 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (priv->uri) 1960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_free(priv->uri); 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project priv->uri = g_strdup(uri); 1980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!priv->message) 2000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return; 2010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch SoupURI* soupURI = soup_uri_new(uri); 203231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g_return_if_fail(soupURI); 2040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch soup_message_set_uri(priv->message, soupURI); 2060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch soup_uri_free(soupURI); 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 209635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 210635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * webkit_network_request_get_uri: 211635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @request: a #WebKitNetworkRequest 212635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 213635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Returns: the uri of the #WebKitNetworkRequest 214635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 215635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Since: 1.0.0 216635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectG_CONST_RETURN gchar* webkit_network_request_get_uri(WebKitNetworkRequest* request) 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_NETWORK_REQUEST(request), NULL); 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitNetworkRequestPrivate* priv = request->priv; 2220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (priv->uri) 2240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return priv->uri; 2250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch SoupURI* soupURI = soup_message_get_uri(priv->message); 2270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch priv->uri = soup_uri_to_string(soupURI, FALSE); 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return priv->uri; 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/** 232bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * webkit_network_request_get_message: 2330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * @request: a #WebKitNetworkRequest 2340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 2350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Obtains the #SoupMessage held and used by the given request. Notice 2360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * that modification of the SoupMessage of a request by signal 2370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * handlers is only supported (as in, will only affect what is 2380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * actually sent to the server) where explicitly documented. 2390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 240bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen * Returns: (transfer none): the #SoupMessage 2410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Since: 1.1.9 2420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 2430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochSoupMessage* webkit_network_request_get_message(WebKitNetworkRequest* request) 2440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 2450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_return_val_if_fail(WEBKIT_IS_NETWORK_REQUEST(request), NULL); 2460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitNetworkRequestPrivate* priv = request->priv; 2480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return priv->message; 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 251f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 252f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochnamespace WebKit { 253f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 254f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochWebKitNetworkRequest* kitNew(const WebCore::ResourceRequest& resourceRequest) 255f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 256cad810f21b803229eb11403f9209855525a25d57Steve Block GRefPtr<SoupMessage> soupMessage(adoptGRef(resourceRequest.toSoupMessage())); 257f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (soupMessage) 258f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", soupMessage.get(), NULL)); 259f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 260f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "uri", resourceRequest.url().string().utf8().data(), NULL)); 261f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 262f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 263f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochWebCore::ResourceRequest core(WebKitNetworkRequest* request) 264f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 265f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch SoupMessage* soupMessage = webkit_network_request_get_message(request); 266f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (soupMessage) 267f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return WebCore::ResourceRequest(soupMessage); 268f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 269f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebCore::KURL url = WebCore::KURL(WebCore::KURL(), String::fromUTF8(webkit_network_request_get_uri(request))); 270f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return WebCore::ResourceRequest(url); 271f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 272f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 273f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 274