GTK: Initial page-info display.

This commit is contained in:
Michael Drake 2020-02-24 20:46:11 +00:00 committed by Vincent Sanders
parent 72ff12b3ae
commit f59c415ef7
1 changed files with 15 additions and 44 deletions

View File

@ -29,7 +29,7 @@
#include "netsurf/keypress.h"
#include "netsurf/plotters.h"
#include "netsurf/browser_window.h"
#include "desktop/sslcert_viewer.h"
#include "desktop/page-info.h"
#include "gtk/plotters.h"
#include "gtk/scaffolding.h"
@ -48,8 +48,8 @@ struct nsgtk_pi_window {
GtkBuilder *builder;
/** GTK dialog window being shown */
GtkDialog *dlg;
/** SSL certificate viewer context data */
struct sslcert_session_data *ssl_data;
/** Core page-info window */
struct page_info *pi;
};
@ -60,13 +60,12 @@ static nserror nsgtk_pi_destroy(struct nsgtk_pi_window *pi_win)
{
nserror res;
res = sslcert_viewer_fini(pi_win->ssl_data);
if (res == NSERROR_OK) {
res = nsgtk_corewindow_fini(&pi_win->core);
gtk_widget_destroy(GTK_WIDGET(pi_win->dlg));
g_object_unref(G_OBJECT(pi_win->builder));
free(pi_win);
}
page_info_destroy(pi_win->pi);
res = nsgtk_corewindow_fini(&pi_win->core);
gtk_widget_destroy(GTK_WIDGET(pi_win->dlg));
g_object_unref(G_OBJECT(pi_win->builder));
free(pi_win);
return res;
}
@ -76,8 +75,6 @@ nsgtk_pi_accept(GtkButton *w, gpointer data)
struct nsgtk_pi_window *pi_win;
pi_win = (struct nsgtk_pi_window *)data;
sslcert_viewer_accept(pi_win->ssl_data);
nsgtk_pi_destroy(pi_win);
}
@ -87,8 +84,6 @@ nsgtk_pi_reject(GtkWidget *w, gpointer data)
struct nsgtk_pi_window *pi_win;
pi_win = (struct nsgtk_pi_window *)data;
sslcert_viewer_reject(pi_win->ssl_data);
nsgtk_pi_destroy(pi_win);
}
@ -117,7 +112,7 @@ nsgtk_pi_mouse(struct nsgtk_corewindow *nsgtk_cw,
/* technically degenerate container of */
pi_win = (struct nsgtk_pi_window *)nsgtk_cw;
sslcert_viewer_mouse_action(pi_win->ssl_data, mouse_state, x, y);
page_info_mouse_action(pi_win->pi, mouse_state, x, y);
return NSERROR_OK;
}
@ -137,7 +132,7 @@ nsgtk_pi_key(struct nsgtk_corewindow *nsgtk_cw, uint32_t nskey)
/* technically degenerate container of */
pi_win = (struct nsgtk_pi_window *)nsgtk_cw;
if (sslcert_viewer_keypress(pi_win->ssl_data, nskey)) {
if (page_info_keypress(pi_win->pi, nskey)) {
return NSERROR_OK;
}
return NSERROR_NOT_IMPLEMENTED;
@ -163,32 +158,17 @@ nsgtk_pi_draw(struct nsgtk_corewindow *nsgtk_cw, struct rect *r)
/* technically degenerate container of */
pi_win = (struct nsgtk_pi_window *)nsgtk_cw;
sslcert_viewer_redraw(pi_win->ssl_data, 0, 0, r, &ctx);
page_info_redraw(pi_win->pi, 0, 0, r, &ctx);
return NSERROR_OK;
}
static nserror dummy_cb(bool proceed, void *pw)
{
return NSERROR_OK;
}
/* exported interface documented in gtk/page_info.h */
nserror nsgtk_page_info(struct browser_window *bw)
{
struct nsgtk_pi_window *ncwin;
nserror res;
struct cert_chain *chain;
struct nsurl *url;
res = browser_window_get_ssl_chain(bw, &chain);
if (res != NSERROR_OK) {
NSLOG(netsurf, WARNING, "Unable to get certificate chain");
return NSERROR_INVALID;
}
url = browser_window_access_url(bw);
ncwin = malloc(sizeof(struct nsgtk_pi_window));
if (ncwin == NULL) {
return NSERROR_NOMEM;
@ -248,18 +228,9 @@ nserror nsgtk_page_info(struct browser_window *bw)
return res;
}
/* initialise certificate viewing interface */
res = sslcert_viewer_create_session_data(
url, dummy_cb, NULL, chain, &ncwin->ssl_data);
if (res != NSERROR_OK) {
g_object_unref(G_OBJECT(ncwin->dlg));
free(ncwin);
return res;
}
res = sslcert_viewer_init(ncwin->core.cb_table,
(struct core_window *)ncwin,
ncwin->ssl_data);
res = page_info_create(ncwin->core.cb_table,
(struct core_window *)ncwin,
bw, &ncwin->pi);
if (res != NSERROR_OK) {
g_object_unref(G_OBJECT(ncwin->dlg));
free(ncwin);