static void test_network_request_properties() { WebKitNetworkRequest* request; SoupMessage* message; gchar* soupURI; /* Test URI is set correctly when creating with URI */ request = webkit_network_request_new("http://debian.org/"); g_assert(WEBKIT_IS_NETWORK_REQUEST(request)); g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://debian.org/"); g_object_unref(request); /* Test URI is set correctly when creating with Message */ message = soup_message_new("GET", "http://debian.org/"); request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", message, NULL)); g_assert(WEBKIT_IS_NETWORK_REQUEST(request)); g_object_unref(message); message = webkit_network_request_get_message(request); soupURI = soup_uri_to_string(soup_message_get_uri(message), FALSE); g_assert_cmpstr(soupURI, ==, "http://debian.org/"); g_free(soupURI); g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://debian.org/"); g_object_unref(request); }
static void test_network_request_create_destroy() { WebKitNetworkRequest* request; SoupMessage* message; /* Test creation with URI */ request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "uri", "http://debian.org/", NULL)); g_assert(WEBKIT_IS_NETWORK_REQUEST(request)); message = webkit_network_request_get_message(request); g_assert(!message); g_object_unref(request); /* Test creation with SoupMessage */ message = soup_message_new("GET", "http://debian.org/"); request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", message, NULL)); g_assert(WEBKIT_IS_NETWORK_REQUEST(request)); g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 2); g_object_unref(request); g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1); g_object_unref(message); /* Test creation with both SoupMessage and URI */ message = soup_message_new("GET", "http://debian.org/"); request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", message, "uri", "http://gnome.org/", NULL)); g_assert(WEBKIT_IS_NETWORK_REQUEST(request)); g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 2); g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://gnome.org/"); g_object_unref(request); g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1); g_object_unref(message); }
/** * webkit_network_request_get_message: * @request: a #WebKitNetworkRequest * * Obtains the #SoupMessage held and used by the given request. Notice * that modification of the SoupMessage of a request by signal * handlers is only supported (as in, will only affect what is * actually sent to the server) where explicitly documented. * * Returns: (transfer none): the #SoupMessage * Since: 1.1.9 */ SoupMessage* webkit_network_request_get_message(WebKitNetworkRequest* request) { g_return_val_if_fail(WEBKIT_IS_NETWORK_REQUEST(request), NULL); WebKitNetworkRequestPrivate* priv = request->priv; return priv->message; }
/** * webkit_network_request_get_uri: * @request: a #WebKitNetworkRequest * * Returns: the URI of the #WebKitNetworkRequest * * Since: 1.0.0 */ const gchar* webkit_network_request_get_uri(WebKitNetworkRequest* request) { g_return_val_if_fail(WEBKIT_IS_NETWORK_REQUEST(request), NULL); WebKitNetworkRequestPrivate* priv = request->priv; if (priv->uri) return priv->uri; SoupURI* soupURI = soup_message_get_uri(priv->message); priv->uri = soup_uri_to_string(soupURI, FALSE); return priv->uri; }
/** * webkit_network_request_set_uri: * @request: a #WebKitNetworkRequest * @uri: an URI * * Sets the URI held and used by the given request. When the request * has an associated #SoupMessage, its URI will also be set by this * call. * */ void webkit_network_request_set_uri(WebKitNetworkRequest* request, const gchar* uri) { g_return_if_fail(WEBKIT_IS_NETWORK_REQUEST(request)); g_return_if_fail(uri); WebKitNetworkRequestPrivate* priv = request->priv; if (priv->uri) g_free(priv->uri); priv->uri = g_strdup(uri); if (!priv->message) return; SoupURI* soupURI = soup_uri_new(uri); g_return_if_fail(soupURI); soup_message_set_uri(priv->message, soupURI); soup_uri_free(soupURI); }
/** * A link has been clicked * * When a link has been clicked the link management is dispatched to Liferea * core in order to manage the different filetypes, remote URLs. */ static gboolean liferea_webkit_link_clicked (WebKitWebView *view, WebKitWebFrame *frame, WebKitNetworkRequest *request, WebKitWebNavigationAction *navigation_action, WebKitWebPolicyDecision *policy_decision) { const gchar *uri; WebKitWebNavigationReason reason; gboolean url_handled; g_return_val_if_fail (WEBKIT_IS_WEB_VIEW (view), FALSE); g_return_val_if_fail (WEBKIT_IS_NETWORK_REQUEST (request), FALSE); reason = webkit_web_navigation_action_get_reason (navigation_action); /* iframes in items return WEBKIT_WEB_NAVIGATION_REASON_OTHER and shouldn't be handled as clicks */ if (reason != WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED) return FALSE; uri = webkit_network_request_get_uri (request); if (webkit_web_navigation_action_get_button (navigation_action) == 2) { /* middle click */ browser_tabs_add_new (uri, uri, FALSE); webkit_web_policy_decision_ignore (policy_decision); return TRUE; } url_handled = liferea_htmlview_handle_URL (g_object_get_data (G_OBJECT (view), "htmlview"), uri); if (url_handled) webkit_web_policy_decision_ignore (policy_decision); return url_handled; }