static gboolean sendRequestCallback(WebKitWebPage*, WebKitURIRequest* request, WebKitURIResponse* redirectResponse, gpointer) { gboolean returnValue = FALSE; const char* requestURI = webkit_uri_request_get_uri(request); g_assert(requestURI); if (const char* suffix = g_strrstr(requestURI, "/remove-this/javascript.js")) { GUniquePtr<char> prefix(g_strndup(requestURI, strlen(requestURI) - strlen(suffix))); GUniquePtr<char> newURI(g_strdup_printf("%s/javascript.js", prefix.get())); webkit_uri_request_set_uri(request, newURI.get()); } else if (const char* suffix = g_strrstr(requestURI, "/remove-this/javascript-after-redirection.js")) { // Redirected from /redirected.js, redirectResponse should be nullptr. g_assert(WEBKIT_IS_URI_RESPONSE(redirectResponse)); g_assert(g_str_has_suffix(webkit_uri_response_get_uri(redirectResponse), "/redirected.js")); GUniquePtr<char> prefix(g_strndup(requestURI, strlen(requestURI) - strlen(suffix))); GUniquePtr<char> newURI(g_strdup_printf("%s/javascript-after-redirection.js", prefix.get())); webkit_uri_request_set_uri(request, newURI.get()); } else if (g_str_has_suffix(requestURI, "/redirected.js")) { // Original request, redirectResponse should be nullptr. g_assert(!redirectResponse); } else if (g_str_has_suffix(requestURI, "/add-do-not-track-header")) { SoupMessageHeaders* headers = webkit_uri_request_get_http_headers(request); g_assert(headers); soup_message_headers_append(headers, "DNT", "1"); } else if (g_str_has_suffix(requestURI, "/http-get-method")) { g_assert_cmpstr(webkit_uri_request_get_http_method(request), ==, "GET"); g_assert(webkit_uri_request_get_http_method(request) == SOUP_METHOD_GET); } else if (g_str_has_suffix(requestURI, "/http-post-method")) {
void changed_download_progress(GObject *obj, GParamSpec *pspec, gpointer data) { WebKitDownload *download = WEBKIT_DOWNLOAD(obj); WebKitURIResponse *resp; GtkToolItem *tb = GTK_TOOL_ITEM(data); gdouble p, size_mb; const gchar *uri; gchar *t, *filename, *base; p = webkit_download_get_estimated_progress(download) * 100; resp = webkit_download_get_response(download); size_mb = webkit_uri_response_get_content_length(resp) / 1e6; uri = webkit_download_get_destination(download); filename = g_filename_from_uri(uri, NULL, NULL); if (filename == NULL) { /* This really should not happen because WebKit uses that URI to * write to a file... */ fprintf(stderr, __NAME__": Could not construct file name from URI!\n"); t = g_strdup_printf("%s (%.0f%% of %.1f MB)", webkit_uri_response_get_uri(resp), p, size_mb); } else { base = g_path_get_basename(filename); t = g_strdup_printf("%s (%.0f%% of %.1f MB)", base, p, size_mb); g_free(filename); g_free(base); } gtk_tool_button_set_label(GTK_TOOL_BUTTON(tb), t); g_free(t); }