[epiphany] web-view: Add helpers for allocating/freeing info bar structs



commit a47df8aa4d240e3cee63356fbd4541f02110158d
Author: Michael Catanzaro <mcatanzaro gnome org>
Date:   Sat Jan 14 15:00:19 2017 -0600

    web-view: Add helpers for allocating/freeing info bar structs

 embed/ephy-web-view.c |   62 +++++++++++++++++++++++++++++++++++++------------
 1 files changed, 47 insertions(+), 15 deletions(-)
---
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index 1273ee8..29a3de5 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -686,6 +686,26 @@ typedef struct {
   char *host;
 } FormAuthRequestData;
 
+static FormAuthRequestData *
+form_auth_request_data_new (EphyWebView *web_view,
+                            guint        request_id,
+                            const char  *host)
+{
+  FormAuthRequestData *data;
+  data = g_slice_new (FormAuthRequestData);
+  data->web_view = web_view;
+  data->request_id = request_id;
+  data->host = g_strdup (host);
+  return data;
+}
+
+static void
+form_auth_request_data_free (FormAuthRequestData *data)
+{
+  g_free (data->host);
+  g_slice_free (FormAuthRequestData, data);
+}
+
 static void
 form_auth_data_save_confirmation_response (GtkInfoBar          *info_bar,
                                            gint                 response_id,
@@ -709,8 +729,7 @@ form_auth_data_save_confirmation_response (GtkInfoBar          *info_bar,
                                                    EPHY_HOST_PERMISSION_DENY);
   }
 
-  g_free (data->host);
-  g_slice_free (FormAuthRequestData, data);
+  form_auth_request_data_free (data);
 }
 
 static void
@@ -735,10 +754,7 @@ form_auth_data_save_requested (EphyEmbedShell *shell,
   }
 
   info_bar = ephy_web_view_create_form_auth_save_confirmation_info_bar (web_view, hostname, username);
-  data = g_slice_new (FormAuthRequestData);
-  data->web_view = web_view;
-  data->request_id = request_id;
-  data->host = g_strdup (hostname);
+  data = form_auth_request_data_new (web_view, request_id, hostname);
   g_signal_connect (info_bar, "response",
                     G_CALLBACK (form_auth_data_save_confirmation_response),
                     data);
@@ -1272,6 +1288,28 @@ typedef struct {
   char *host;
 } PermissionRequestData;
 
+static PermissionRequestData *
+permission_request_data_new (EphyWebView             *web_view,
+                             WebKitPermissionRequest *request,
+                             const char              *host)
+{
+  PermissionRequestData *data;
+  data = g_new (PermissionRequestData, 1);
+  data->web_view = web_view;
+  /* Ref the decision to keep it alive while we decide */
+  data->request = g_object_ref (request);
+  data->host = g_strdup (host);
+  return data;
+}
+
+static void
+permission_request_data_free (PermissionRequestData *data)
+{
+  g_object_unref (data->request);
+  g_free (data->host);
+  g_slice_free (PermissionRequestData, data);
+}
+
 static void
 decide_on_permission_request (GtkWidget               *info_bar,
                               int                      response,
@@ -1319,9 +1357,7 @@ decide_on_permission_request (GtkWidget               *info_bar,
   }
 
   gtk_widget_destroy (info_bar);
-  g_object_unref (data->request);
-  g_free (data->host);
-  g_slice_free (PermissionRequestData, data);
+  permission_request_data_free (data);
 }
 
 static void
@@ -1385,15 +1421,11 @@ show_permission_request_info_bar (WebKitWebView           *web_view,
 
   gtk_widget_show_all (info_bar);
 
-  /* Ref the decision, to keep it alive while we decide */
-  data = g_new (PermissionRequestData, 1);
-  data->web_view = EPHY_WEB_VIEW (web_view);
-  data->request = g_object_ref (decision);
-  data->host = host;
-
+  data = permission_request_data_new (EPHY_WEB_VIEW (web_view), decision, host);
   g_signal_connect (info_bar, "response",
                     G_CALLBACK (decide_on_permission_request),
                     data);
+  g_free (host);
 
   switch (permission_type) {
   case EPHY_HOST_PERMISSION_TYPE_SHOW_NOTIFICATIONS:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]