Author: rjek
Date: Sun Aug 12 00:23:30 2007
New Revision: 3509
URL:
http://source.netsurf-browser.org?rev=3509&view=rev
Log:
Merged revisions 3507-3508 via svnmerge from
svn://svn.netsurf-browser.org/trunk/netsurf
........
r3507 | rjek | 2007-08-12 00:14:33 +0100 (Sun, 12 Aug 2007) | 1 line
Initial trivial (temp) implementation of nsgtk SSL cert window. Currently segfaults if
you accept, however.
........
r3508 | rjek | 2007-08-12 00:22:10 +0100 (Sun, 12 Aug 2007) | 1 line
fix nsgtk ssl cert verify window
........
Modified:
branches/1/netsurf/ (props changed)
branches/1/netsurf/gtk/gtk_gui.c
branches/1/netsurf/gtk/res/netsurf.glade
Propchange: branches/1/netsurf/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Sun Aug 12 00:23:30 2007
@@ -1,1 +1,1 @@
-/trunk/netsurf:1-3295,3299,3301-3337,3345-3382,3384-3404,3408-3419,3421-3426,3428-3431,3434,3437,3439-3440,3442-3447,3449-3476,3478,3480-3481,3483-3484,3486,3493-3495,3498
+/trunk/netsurf:1-3295,3299,3301-3337,3345-3382,3384-3404,3408-3419,3421-3426,3428-3431,3434,3437,3439-3440,3442-3447,3449-3476,3478,3480-3481,3483-3484,3486,3493-3495,3498,3507-3508
Modified: branches/1/netsurf/gtk/gtk_gui.c
URL:
http://source.netsurf-browser.org/branches/1/netsurf/gtk/gtk_gui.c?rev=35...
==============================================================================
--- branches/1/netsurf/gtk/gtk_gui.c (original)
+++ branches/1/netsurf/gtk/gtk_gui.c Sun Aug 12 00:23:30 2007
@@ -77,6 +77,12 @@
GtkLabel *labelTooltip;
GtkDialog *wndOpenFile;
+static void nsgtk_create_ssl_verify_window(struct browser_window *bw,
+ struct content *c, const struct ssl_cert_info *certs,
+ unsigned long num);
+static void nsgtk_ssl_accept(GtkButton *w, gpointer data);
+static void nsgtk_ssl_reject(GtkButton *w, gpointer data);
+
/**
* Locate a shared resource file by searching known places in order.
*
@@ -450,14 +456,61 @@
void gui_cert_verify(struct browser_window *bw, struct content *c,
const struct ssl_cert_info *certs, unsigned long num)
{
-
- /* TODO: we should open a window showing what the certificate
- * problem is and offer the user the choice to reject it. Until
- * we do this, we just always accept them.
- * */
-
- urldb_set_cert_permissions(c->url, true);
- browser_window_go(bw, c->url, 0, true);
+ nsgtk_create_ssl_verify_window(bw, c, certs, num);
+}
+
+static void nsgtk_create_ssl_verify_window(struct browser_window *bw,
+ struct content *c, const struct ssl_cert_info *certs,
+ unsigned long num)
+{
+ GladeXML *x = glade_xml_new(glade_file_location, NULL, NULL);
+ GtkWindow *wnd = GTK_WINDOW(glade_xml_get_widget(x, "wndSSLProblem"));
+ GtkButton *accept, *reject;
+ void **session = calloc(sizeof(void *), 4);
+
+ session[0] = bw;
+ session[1] = strdup(c->url);
+ session[2] = x;
+ session[3] = wnd;
+
+ accept = GTK_BUTTON(glade_xml_get_widget(x, "sslaccept"));
+ reject = GTK_BUTTON(glade_xml_get_widget(x, "sslreject"));
+
+ g_signal_connect(G_OBJECT(accept), "clicked",
+ G_CALLBACK(nsgtk_ssl_accept), (gpointer)session);
+ g_signal_connect(G_OBJECT(reject), "clicked",
+ G_CALLBACK(nsgtk_ssl_reject), (gpointer)session);
+
+ gtk_widget_show(GTK_WIDGET(wnd));
+}
+
+static void nsgtk_ssl_accept(GtkButton *w, gpointer data)
+{
+ void **session = data;
+ struct browser_window *bw = session[0];
+ char *url = session[1];
+ GladeXML *x = session[2];
+ GtkWindow *wnd = session[3];
+
+ urldb_set_cert_permissions(url, true);
+ browser_window_go(bw, url, 0, true);
+
+ gtk_widget_destroy(GTK_WIDGET(wnd));
+ g_object_unref(G_OBJECT(x));
+ free(url);
+ free(session);
+}
+
+static void nsgtk_ssl_reject(GtkButton *w, gpointer data)
+{
+ void **session = data;
+ GladeXML *x = session[2];
+ GtkWindow *wnd = session[3];
+
+ gtk_widget_destroy(GTK_WIDGET(wnd));
+ g_object_unref(G_OBJECT(x));
+ free(session[1]);
+ free(session);
}
utf8_convert_ret utf8_to_local_encoding(const char *string, size_t len,
Modified: branches/1/netsurf/gtk/res/netsurf.glade
URL:
http://source.netsurf-browser.org/branches/1/netsurf/gtk/res/netsurf.glad...
==============================================================================
--- branches/1/netsurf/gtk/res/netsurf.glade (original)
+++ branches/1/netsurf/gtk/res/netsurf.glade Sun Aug 12 00:23:30 2007
@@ -1474,7 +1474,7 @@
<property name="title" translatable="yes">SSL certificate
problem</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
- <property name="modal">False</property>
+ <property name="modal">True</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
@@ -1498,7 +1498,7 @@
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
- <widget class="GtkButton" id="cancelbutton3">
+ <widget class="GtkButton" id="sslreject">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
@@ -1573,7 +1573,7 @@
</child>
<child>
- <widget class="GtkButton" id="okbutton3">
+ <widget class="GtkButton" id="sslaccept">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
@@ -1755,7 +1755,7 @@
<property name="left_margin">0</property>
<property name="right_margin">0</property>
<property name="indent">0</property>
- <property name="text"
translatable="yes"></property>
+ <property name="text" translatable="yes">(not
implemented)</property>
</widget>
</child>
</widget>