char *title, *linkhover;
const char *uri, *needle;
gint progress;
+ gboolean sslfailed;
struct Client *next;
gboolean zoomed;
} Client;
w = c->indicator;
width = c->progress * w->allocation.width / 100;
gc = gdk_gc_new(w->window);
- gdk_color_parse(strstr(uri, "https://") == uri ?
- progress_trust : progress, &fg);
+ if(strstr(uri, "https://") == uri)
+ gdk_color_parse(c->sslfailed ?
+ progress_untrust : progress_trust, &fg);
+ else
+ gdk_color_parse(progress, &fg);
gdk_gc_set_rgb_fg_color(gc, &fg);
gdk_draw_rectangle(w->window,
w->style->bg_gc[GTK_WIDGET_STATE(w)],
void
loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c) {
+ WebKitWebFrame *frame;
+ WebKitWebDataSource *src;
+ WebKitNetworkRequest *request;
+ SoupMessage *msg;
+ char *uri;
+
switch(webkit_web_view_get_load_status (c->view)) {
case WEBKIT_LOAD_COMMITTED:
- setatom(c, AtomUri, geturi(c));
+ uri = geturi(c);
+ if(strstr(uri, "https://") == uri) {
+ frame = webkit_web_view_get_main_frame(c->view);
+ src = webkit_web_frame_get_data_source(frame);
+ request = webkit_web_data_source_get_request(src);
+ msg = webkit_network_request_get_message(request);
+ c->sslfailed = soup_message_get_flags(msg)
+ ^ SOUP_MESSAGE_CERTIFICATE_TRUSTED;
+ }
+ setatom(c, AtomUri, uri);
break;
case WEBKIT_LOAD_FINISHED:
c->progress = 0;
* window class (WM_CLASS) is capped, while the resource is in
* lowercase. Both these values come as a pair.
*/
- gtk_window_set_wmclass(GTK_WINDOW(c->win), "surf", "surf");
+ gtk_window_set_wmclass(GTK_WINDOW(c->win), "surf", "Surf");
/* TA: 20091214: And set the role here as well -- so that
* sessions can pick this up.
g_object_set(G_OBJECT(settings), "auto-load-images", loadimage, NULL);
g_object_set(G_OBJECT(settings), "enable-plugins", plugin, NULL);
g_object_set(G_OBJECT(settings), "enable-scripts", script, NULL);
- g_object_set(G_OBJECT(settings), "enable-spatial-navigation", true, NULL);
+ g_object_set(G_OBJECT(settings), "enable-spatial-navigation", SPATIAL_BROWSING, NULL);
g_free(uri);
soup_session_remove_feature_by_type(s, soup_cookie_jar_get_type());
g_signal_connect_after(G_OBJECT(s), "request-started", G_CALLBACK(newrequest), NULL);
+ /* ssl */
+ g_object_set(G_OBJECT(s), "ssl-ca-file", cafile, NULL);
+ g_object_set(G_OBJECT(s), "ssl-strict", strictssl, NULL);
+
/* proxy */
if((proxy = getenv("http_proxy")) && strcmp(proxy, "")) {
new_proxy = g_strrstr(proxy, "http://") ? g_strdup(proxy) :
update(Client *c) {
char *t;
- if(c->progress != 100)
- t = g_strdup_printf("[%i%%] %s", c->progress, c->title);
- else if(c->linkhover)
+ if(c->linkhover)
t = g_strdup(c->linkhover);
+ else if(c->progress != 100)
+ t = g_strdup_printf("[%i%%] %s", c->progress, c->title);
else
t = g_strdup(c->title);
drawindicator(c);