Ive got a strange bug in the call back function for this which I cant understand.

When the callback is called I check the requestd url to see if it is one that I want to permit, but on certain sites (Wikipedia search is a prim example) the url returned is null which then causes a segmentation fault when I try to access it. I dont understand why sometimes it comes back as null. the code is as follows:


     gchar *url=NULL;
     g_object_get (navigation_action,"original-uri", &url,NULL);
std::string requestedurl=std::string(url); //needs to be a C++ string so I can do a validation check later
     g_free(url);
     g_print("url is: ");
     g_print(requestedurl.c_str());
      .....carry on here to do validation

When run (on certain sites) it crashes with the following output:
url is:
Program received signal SIGSEGV, Segmentation fault.
0xf643e4c1 in ?? () from /lib/i686/cmov/libc.so.6


Ive tried various ways of accessing the url:

std::string requestedurl =std::string(webkit_network_request_get_uri(request)); std::string requestedurl =std::string(webkit_web_navigation_action_get_original_uri(navigation_action));
std::string requestedurl=std::string(webkit_web_frame_get_uri(frame));

But they all result in the same problem.

The prototype for the callback function is:
gboolean trapNavigationRequested(WebKitWebView *webView, WebKitWebFrame *frame,WebKitNetworkRequest *request,WebKitWebNavigationAction *navigation_action, WebKitWebPolicyDecision *policy_decision,gpointer user_data)

As I say its only clicking links on certain sites that cause this, other sites it works fine leaving me totally puzzled.

Any ideas?

Thanks
Andrew


On 07/09/11 21:44, Emmanuel Rodriguez wrote:
On Wed, Sep 7, 2011 at 18:12, Andrew Wood<[email protected]>  wrote:
How do I intercept a request to load a URL which has come from within
webkit, such as a user clicking a link on a page, a redirect (either via
HTTP or using the meta refresh tag), or a page which is using frames to load
URLs other than the one typed by the user?
The signal "navigation-policy-decision-requested" that's emitted by
the WebKitWebView can help you. With it you can detect users requests
for iframes and clicked links. You'll have to test how it handles
redirects.


_______________________________________________
webkit-gtk mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-gtk

Reply via email to