views:

33

answers:

1

Let's say I want to use a WebKitWebView in GTK to display some static HTML pages. These pages use a custom URL scheme, let's call it custom://. This scheme represents a local file whose location is not known beforehand, at the time the HTML is generated. What I do is connect to the navigation-requested signal of the webview, and do this:

const gchar *uri = webkit_network_request_get_uri(request);
gchar *scheme = g_uri_parse_scheme(uri); 

if(strcmp(scheme, "custom") == 0) {
    /* DO FILE LOCATING MAGIC HERE */
    webkit_web_view_open(webview, real_location_of_file);
    return WEBKIT_NAVIGATION_RESPONSE_IGNORE;
}
/* etc. */

This seems to work fine, unless the scheme is used in an <img> tag, for example: <img src="custom://myfile.png">, apparently these don't go through the navigation-requested signal.

It seems to me there should be some way to register a handler for the custom URL scheme with Webkit. Is this possible?

+1  A: 

I'm more familiar with the Chromium port of WebKit, but I believe that you might need to use webkit_web_resource_get_uri (see webkitwebresource.h) to handle resources such as images.

Emerick Rogul
Thanks, this was the pointer in the right direction that I needed. For completeness, the answer is to connect to the `resource-request-starting` signal of the webview, and do the manipulation with `webkit_web_resource_get_uri()` from within that handler. (Note that this only works on webkit >= 1.1.14.)
ptomato