Integrate beforerequest() into decidepolicy()
This commit is contained in:
		
							parent
							
								
									d542773e75
								
							
						
					
					
						commit
						76940a9ab5
					
				
							
								
								
									
										72
									
								
								surf.c
								
								
								
								
							
							
						
						
									
										72
									
								
								surf.c
								
								
								
								
							|  | @ -103,9 +103,6 @@ static int cookiepolicy; | |||
| static char *stylefile = NULL; | ||||
| 
 | ||||
| static void addaccelgroup(Client *c); | ||||
| static void beforerequest(WebKitWebView *w, WebKitWebFrame *f, | ||||
|                           WebKitWebResource *r, WebKitNetworkRequest *req, | ||||
|                           WebKitNetworkResponse *resp, Client *c); | ||||
| static char *buildfile(const char *path); | ||||
| static char *buildpath(const char *path); | ||||
| static gboolean buttonreleased(GtkWidget *w, GdkEventKey *e, Client *c); | ||||
|  | @ -140,7 +137,7 @@ static char *geturi(Client *c); | |||
| static const gchar *getstyle(const char *uri); | ||||
| static void setstyle(Client *c, const char *style); | ||||
| 
 | ||||
| static void handleplumb(Client *c, WebKitWebView *w, const gchar *uri); | ||||
| static void handleplumb(Client *c, const gchar *uri); | ||||
| 
 | ||||
| static void downloadstarted(WebKitWebContext *wc, WebKitDownload *d, | ||||
| 		Client *c); | ||||
|  | @ -213,35 +210,6 @@ addaccelgroup(Client *c) | |||
| 	gtk_window_add_accel_group(GTK_WINDOW(c->win), group); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| beforerequest(WebKitWebView *w, WebKitWebFrame *f, WebKitWebResource *r, | ||||
|               WebKitNetworkRequest *req, WebKitNetworkResponse *resp, | ||||
| 	      Client *c) | ||||
| { | ||||
| 	const gchar *uri = webkit_network_request_get_uri(req); | ||||
| 	int i, isascii = 1; | ||||
| 
 | ||||
| 	if (g_str_has_suffix(uri, "/favicon.ico")) | ||||
| 		webkit_network_request_set_uri(req, "about:blank"); | ||||
| 
 | ||||
| 	if (!g_str_has_prefix(uri, "http://") | ||||
| 	    && !g_str_has_prefix(uri, "https://") | ||||
| 	    && !g_str_has_prefix(uri, "about:") | ||||
| 	    && !g_str_has_prefix(uri, "file://") | ||||
| 	    && !g_str_has_prefix(uri, "data:") | ||||
| 	    && !g_str_has_prefix(uri, "blob:") | ||||
| 	    && strlen(uri) > 0) { | ||||
| 		for (i = 0; i < strlen(uri); i++) { | ||||
| 			if (!g_ascii_isprint(uri[i])) { | ||||
| 				isascii = 0; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		if (isascii) | ||||
| 			handleplumb(c, w, uri); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| char * | ||||
| buildfile(const char *path) | ||||
| { | ||||
|  | @ -539,13 +507,41 @@ decidenewwindow(WebKitPolicyDecision *d, Client *c) | |||
| void | ||||
| decideresource(WebKitPolicyDecision *d, Client *c) | ||||
| { | ||||
| 	const gchar *uri; | ||||
| 	int i, isascii = 1; | ||||
| 	WebKitResponsePolicyDecision *r = WEBKIT_RESPONSE_POLICY_DECISION(d); | ||||
| 	WebKitURIResponse *res; | ||||
| 
 | ||||
| 	res = webkit_response_policy_decision_get_response(r); | ||||
| 	uri = webkit_uri_response_get_uri(res); | ||||
| 
 | ||||
| 	if (g_str_has_suffix(uri, "/favicon.ico")) | ||||
| 		webkit_uri_request_set_uri( | ||||
| 		    webkit_response_policy_decision_get_request(r), | ||||
| 		    "about:blank"); | ||||
| 
 | ||||
| 	if (!g_str_has_prefix(uri, "http://") | ||||
| 	    && !g_str_has_prefix(uri, "https://") | ||||
| 	    && !g_str_has_prefix(uri, "about:") | ||||
| 	    && !g_str_has_prefix(uri, "file://") | ||||
| 	    && !g_str_has_prefix(uri, "data:") | ||||
| 	    && !g_str_has_prefix(uri, "blob:") | ||||
| 	    && strlen(uri) > 0) { | ||||
| 		for (i = 0; i < strlen(uri); i++) { | ||||
| 			if (!g_ascii_isprint(uri[i])) { | ||||
| 				isascii = 0; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		if (isascii) { | ||||
| 			handleplumb(c, uri); | ||||
| 			webkit_policy_decision_ignore(d); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if (webkit_response_policy_decision_is_mime_type_supported(r)) { | ||||
| 		webkit_policy_decision_use(d); | ||||
| 	} else { | ||||
| res = webkit_response_policy_decision_get_response(r); | ||||
| 		webkit_policy_decision_ignore(d); | ||||
| 		download(c, res); | ||||
| 	} | ||||
|  | @ -687,12 +683,11 @@ setstyle(Client *c, const char *style) | |||
| } | ||||
| 
 | ||||
| void | ||||
| handleplumb(Client *c, WebKitWebView *w, const gchar *uri) | ||||
| handleplumb(Client *c, const gchar *uri) | ||||
| { | ||||
| 	Arg arg; | ||||
| 
 | ||||
| 	webkit_web_view_stop_loading(w); | ||||
| 	arg = (Arg)PLUMB((char *)uri); | ||||
| 	arg = (Arg)PLUMB(uri); | ||||
| 	spawn(c, &arg); | ||||
| } | ||||
| 
 | ||||
|  | @ -1011,9 +1006,6 @@ newview(Client *c, WebKitWebView *rv) | |||
| 	g_signal_connect(G_OBJECT(v), | ||||
| 	                 "button-release-event", | ||||
| 			 G_CALLBACK(buttonreleased), c); | ||||
| 	g_signal_connect(G_OBJECT(v), | ||||
| 	                 "resource-request-starting", | ||||
| 			 G_CALLBACK(beforerequest), c); | ||||
| 	g_signal_connect(G_OBJECT(v), | ||||
| 	                 "should-show-delete-interface-for-element", | ||||
| 			 G_CALLBACK(deletion_interface), c); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue