[epiphany/mcatanzaro/popups-manager: 13/13] Remove unused popup manager implementation



commit 0e8d9586d722da71960dd96cba3ef03aecbf27c2
Author: Michael Catanzaro <mcatanzaro gnome org>
Date:   Mon Dec 16 20:17:39 2019 -0600

    Remove unused popup manager implementation
    
    I haven't investigated, but I imagine that, long ago, we had a little
    status icon in the old status bar that web browsers used to have at the
    bottom of the window. It probably indicated the number of popups blocked
    on the current page and functioned to show or hide the popups. But it
    doesn't exist anymore. This code hasn't done anything for a long time.
    The show function is unimplemented, which indicates it probably never
    survived the port to WebKit2. Bye.
    
    Note: this new-window signal does not actually exist. The right signal
    would be "create".
    
    See also: #124

 embed/ephy-web-view.c | 288 --------------------------------------------------
 embed/ephy-web-view.h |   2 +-
 src/ephy-window.c     |  85 ---------------
 3 files changed, 1 insertion(+), 374 deletions(-)
---
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index 40b84344a..a74182e3d 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -62,8 +62,6 @@
  * it.
  */
 
-#define MAX_HIDDEN_POPUPS       5
-
 #define EPHY_PAGE_TEMPLATE_ERROR         "/org/gnome/epiphany/page-templates/error.html"
 #define EPHY_PAGE_TEMPLATE_ERROR_CSS     "/org/gnome/epiphany/page-templates/error.css"
 
@@ -101,9 +99,6 @@ struct _EphyWebView {
   /* Local file watch. */
   EphyFileMonitor *file_monitor;
 
-  GSList *hidden_popups;
-  GSList *shown_popups;
-
   GtkWidget *geolocation_info_bar;
   GtkWidget *notification_info_bar;
   GtkWidget *microphone_info_bar;
@@ -131,21 +126,13 @@ struct _EphyWebView {
   EphyWebViewErrorPage error_page;
 };
 
-typedef struct {
-  char *url;
-  char *name;
-  char *features;
-} PopupInfo;
-
 enum {
   PROP_0,
   PROP_ADDRESS,
   PROP_DOCUMENT_TYPE,
-  PROP_HIDDEN_POPUP_COUNT,
   PROP_ICON,
   PROP_LINK_MESSAGE,
   PROP_NAVIGATION,
-  PROP_POPUPS_ALLOWED,
   PROP_SECURITY,
   PROP_STATUS_MESSAGE,
   PROP_TYPED_ADDRESS,
@@ -159,143 +146,6 @@ static GParamSpec *obj_properties[LAST_PROP];
 
 G_DEFINE_TYPE (EphyWebView, ephy_web_view, WEBKIT_TYPE_WEB_VIEW)
 
-static guint
-popup_blocker_n_hidden (EphyWebView *view)
-{
-  return g_slist_length (view->hidden_popups);
-}
-
-static void
-popups_manager_free_info (PopupInfo *popup)
-{
-  g_free (popup->url);
-  g_free (popup->name);
-  g_free (popup->features);
-  g_free (popup);
-}
-
-static void
-popups_manager_show (PopupInfo   *popup,
-                     EphyWebView *view)
-{
-  /* Only show popup with non NULL url */
-  if (popup->url != NULL) {
-    /* FIXME: we need a way of opening windows in here. This used to
-     * be implemented in EphyEmbedSingle open_window method, but it's
-     * been a no-op for a while. */
-  }
-  popups_manager_free_info (popup);
-}
-
-static void
-popups_manager_show_all (EphyWebView *view)
-{
-  LOG ("popup_blocker_show_all: view %p", view);
-
-  g_slist_foreach (view->hidden_popups,
-                   (GFunc)popups_manager_show, view);
-  g_slist_free (view->hidden_popups);
-  view->hidden_popups = NULL;
-
-  g_object_notify_by_pspec (G_OBJECT (view), obj_properties[PROP_HIDDEN_POPUP_COUNT]);
-}
-
-static char *
-popups_manager_new_window_info (EphyEmbedContainer *container)
-{
-  EphyEmbed *embed;
-  GtkAllocation allocation;
-  gboolean is_popup;
-  char *features;
-
-  g_object_get (container, "is-popup", &is_popup, NULL);
-  g_assert (is_popup);
-
-  embed = ephy_embed_container_get_active_child (container);
-  g_assert (embed != NULL);
-
-  gtk_widget_get_allocation (GTK_WIDGET (embed), &allocation);
-
-  features = g_strdup_printf
-               ("width=%d,height=%d,toolbar=%d",
-               allocation.width,
-               allocation.height,
-               1);
-
-  return features;
-}
-
-static void
-popups_manager_add (EphyWebView *view,
-                    const char  *url,
-                    const char  *name,
-                    const char  *features)
-{
-  PopupInfo *popup;
-
-  LOG ("popups_manager_add: view %p, url %s, features %s",
-       view, url, features);
-
-  popup = g_new (PopupInfo, 1);
-
-  popup->url = g_strdup (url);
-  popup->name = g_strdup (name);
-  popup->features = g_strdup (features);
-
-  view->hidden_popups = g_slist_prepend (view->hidden_popups, popup);
-
-  if (popup_blocker_n_hidden (view) > MAX_HIDDEN_POPUPS) {/* bug #160863 */
-    /* Remove the oldest popup */
-    GSList *l = view->hidden_popups;
-
-    while (l->next->next != NULL) {
-      l = l->next;
-    }
-
-    popup = (PopupInfo *)l->next->data;
-    popups_manager_free_info (popup);
-
-    l->next = NULL;
-  } else {
-    g_object_notify_by_pspec (G_OBJECT (view), obj_properties[PROP_HIDDEN_POPUP_COUNT]);
-  }
-}
-
-static void
-popups_manager_hide (EphyEmbedContainer *container,
-                     EphyWebView        *parent_view)
-{
-  EphyEmbed *embed;
-  const char *location;
-  char *features;
-
-  embed = ephy_embed_container_get_active_child (container);
-  g_assert (EPHY_IS_EMBED (embed));
-
-  location = ephy_web_view_get_address (ephy_embed_get_web_view (embed));
-  if (location == NULL)
-    return;
-
-  features = popups_manager_new_window_info (container);
-
-  popups_manager_add (parent_view, location, "" /* FIXME? maybe _blank? */, features);
-
-  gtk_widget_destroy (GTK_WIDGET (container));
-
-  g_free (features);
-}
-
-static void
-popups_manager_hide_all (EphyWebView *view)
-{
-  LOG ("popup_blocker_hide_all: view %p", view);
-
-  g_slist_foreach (view->shown_popups,
-                   (GFunc)popups_manager_hide, view);
-  g_slist_free (view->shown_popups);
-  view->shown_popups = NULL;
-}
-
 static void
 open_response_cb (GtkFileChooser           *dialog,
                   gint                      response,
@@ -352,85 +202,6 @@ ephy_web_view_run_file_chooser (WebKitWebView            *web_view,
   return TRUE;
 }
 
-static void
-ephy_web_view_set_popups_allowed (EphyWebView *view,
-                                  gboolean     allowed)
-{
-  if (allowed) {
-    popups_manager_show_all (view);
-  } else {
-    popups_manager_hide_all (view);
-  }
-}
-
-static gboolean
-ephy_web_view_get_popups_allowed (EphyWebView *view)
-{
-  const char *location;
-  gboolean allow;
-
-  location = ephy_web_view_get_address (view);
-  if (location == NULL)
-    return FALSE; /* FALSE, TRUE… same thing */
-
-  allow = g_settings_get_boolean (EPHY_SETTINGS_WEB,
-                                  EPHY_PREFS_WEB_ENABLE_POPUPS);
-  return allow;
-}
-
-static gboolean
-popups_manager_remove_window (EphyWebView        *view,
-                              EphyEmbedContainer *container)
-{
-  view->shown_popups = g_slist_remove (view->shown_popups, container);
-
-  return FALSE;
-}
-
-static void
-popups_manager_add_window (EphyWebView        *view,
-                           EphyEmbedContainer *container)
-{
-  LOG ("popups_manager_add_window: view %p, container %p", view, container);
-
-  view->shown_popups = g_slist_prepend (view->shown_popups, container);
-
-  g_signal_connect_swapped (container, "destroy",
-                            G_CALLBACK (popups_manager_remove_window),
-                            view);
-}
-
-static void
-disconnect_popup (EphyEmbedContainer *container,
-                  EphyWebView        *view)
-{
-  g_signal_handlers_disconnect_by_func
-    (container, G_CALLBACK (popups_manager_remove_window), view);
-}
-
-/**
- * ephy_web_view_popups_manager_reset:
- * @view: an #EphyWebView
- *
- * Resets the state of the popups manager in @view.
- **/
-void
-ephy_web_view_popups_manager_reset (EphyWebView *view)
-{
-  g_slist_foreach (view->hidden_popups,
-                   (GFunc)popups_manager_free_info, NULL);
-  g_slist_free (view->hidden_popups);
-  view->hidden_popups = NULL;
-
-  g_slist_foreach (view->shown_popups,
-                   (GFunc)disconnect_popup, view);
-  g_slist_free (view->shown_popups);
-  view->shown_popups = NULL;
-
-  g_object_notify_by_pspec (G_OBJECT (view), obj_properties[PROP_HIDDEN_POPUP_COUNT]);
-  g_object_notify_by_pspec (G_OBJECT (view), obj_properties[PROP_POPUPS_ALLOWED]);
-}
-
 static void
 ephy_web_view_get_property (GObject    *object,
                             guint       prop_id,
@@ -449,10 +220,6 @@ ephy_web_view_get_property (GObject    *object,
     case PROP_DOCUMENT_TYPE:
       g_value_set_enum (value, view->document_type);
       break;
-    case PROP_HIDDEN_POPUP_COUNT:
-      g_value_set_int (value, popup_blocker_n_hidden
-                         (EPHY_WEB_VIEW (object)));
-      break;
     case PROP_ICON:
       g_value_set_object (value, view->icon);
       break;
@@ -462,10 +229,6 @@ ephy_web_view_get_property (GObject    *object,
     case PROP_NAVIGATION:
       g_value_set_flags (value, view->nav_flags);
       break;
-    case PROP_POPUPS_ALLOWED:
-      g_value_set_boolean (value, ephy_web_view_get_popups_allowed
-                             (EPHY_WEB_VIEW (object)));
-      break;
     case PROP_SECURITY:
       g_value_set_enum (value, view->security_level);
       break;
@@ -493,15 +256,11 @@ ephy_web_view_set_property (GObject      *object,
                             GParamSpec   *pspec)
 {
   switch (prop_id) {
-    case PROP_POPUPS_ALLOWED:
-      ephy_web_view_set_popups_allowed (EPHY_WEB_VIEW (object), g_value_get_boolean (value));
-      break;
     case PROP_TYPED_ADDRESS:
       ephy_web_view_set_typed_address (EPHY_WEB_VIEW (object), g_value_get_string (value));
       break;
     case PROP_ADDRESS:
     case PROP_DOCUMENT_TYPE:
-    case PROP_HIDDEN_POPUP_COUNT:
     case PROP_ICON:
     case PROP_LINK_MESSAGE:
     case PROP_NAVIGATION:
@@ -944,8 +703,6 @@ ephy_web_view_finalize (GObject *object)
 {
   EphyWebView *view = EPHY_WEB_VIEW (object);
 
-  ephy_web_view_popups_manager_reset (view);
-
   g_free (view->address);
   g_free (view->display_address);
   g_free (view->typed_address);
@@ -1295,32 +1052,6 @@ ephy_web_view_class_init (EphyWebViewClass *klass)
                          GDK_TYPE_PIXBUF,
                          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
 
-/**
- * EphyWebView:hidden-popup-count:
- *
- * Number of hidden (blocked) popup windows.
- **/
-  obj_properties[PROP_HIDDEN_POPUP_COUNT] =
-    g_param_spec_int ("hidden-popup-count",
-                      "Number of Blocked Popups",
-                      "The view's number of blocked popup windows",
-                      0,
-                      G_MAXINT,
-                      0,
-                      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-
-/**
- * EphyWebView:popups-allowed:
- *
- * If popup windows from this view are to be displayed.
- **/
-  obj_properties[PROP_POPUPS_ALLOWED] =
-    g_param_spec_boolean ("popups-allowed",
-                          "Popups Allowed",
-                          "Whether popup windows are to be displayed",
-                          FALSE,
-                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
 /**
  * EphyWebView:is-blank:
  *
@@ -1406,21 +1137,6 @@ ephy_web_view_class_init (EphyWebViewClass *klass)
                 0);
 }
 
-static void
-new_window_cb (EphyWebView *view,
-               EphyWebView *new_view,
-               gpointer     user_data)
-{
-  EphyEmbedContainer *container;
-
-  g_assert (new_view != NULL);
-
-  container = EPHY_EMBED_CONTAINER (gtk_widget_get_toplevel (GTK_WIDGET (new_view)));
-  g_assert (container != NULL || !gtk_widget_is_toplevel (GTK_WIDGET (container)));
-
-  popups_manager_add_window (view, container);
-}
-
 static gboolean
 decide_policy_cb (WebKitWebView            *web_view,
                   WebKitPolicyDecision     *decision,
@@ -3148,10 +2864,6 @@ ephy_web_view_init (EphyWebView *web_view)
                     G_CALLBACK (script_dialog_cb),
                     NULL);
 
-  g_signal_connect (web_view, "new-window",
-                    G_CALLBACK (new_window_cb),
-                    NULL);
-
   g_signal_connect (web_view, "authenticate",
                     G_CALLBACK (authenticate_cb),
                     NULL);
diff --git a/embed/ephy-web-view.h b/embed/ephy-web-view.h
index 3d66760be..340ad61dd 100644
--- a/embed/ephy-web-view.h
+++ b/embed/ephy-web-view.h
@@ -146,7 +146,7 @@ char                      *ephy_web_view_get_web_app_title_finish (EphyWebView
 void                       ephy_web_view_set_visit_type           (EphyWebView *view, 
                                                                    EphyHistoryPageVisitType visit_type);
 EphyHistoryPageVisitType   ephy_web_view_get_visit_type           (EphyWebView *view);
-void                       ephy_web_view_popups_manager_reset     (EphyWebView               *view);
+
 void                       ephy_web_view_save                     (EphyWebView               *view,
                                                                    const char                *uri);
 void                       ephy_web_view_load_homepage            (EphyWebView               *view);
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 494989f7f..8d0abd2fe 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -76,10 +76,6 @@
  * #EphyWindow is Epiphany's main widget.
  */
 
-static void ephy_window_change_allow_popup_windows_state (GSimpleAction *action,
-                                                          GVariant      *state,
-                                                          gpointer       user_data);
-
 const struct {
   const char *action_and_target;
   const char *accelerators[9];
@@ -119,7 +115,6 @@ const struct {
   /* Toggle actions */
   { "win.browse-with-caret", { "F7", NULL } },
   { "win.fullscreen", { "F11", NULL } },
-  { "win.allow-popup-windows", { NULL } },
 
   /* Navigation */
   { "toolbar.stop", { "Escape", "Stop", NULL } },
@@ -855,7 +850,6 @@ static const GActionEntry window_entries [] = {
   /* Toggle actions */
   { "browse-with-caret", NULL, NULL, "false", window_cmd_change_browse_with_caret_state },
   { "fullscreen", NULL, NULL, "false", window_cmd_change_fullscreen_state },
-  { "allow-popup-windows", NULL, NULL, "true", ephy_window_change_allow_popup_windows_state }
 };
 
 static const GActionEntry tab_entries [] = {
@@ -1238,27 +1232,6 @@ sync_tab_popup_windows (EphyWebView *view,
   /* FIXME: show popup count somehow */
 }
 
-static void
-sync_tab_popups_allowed (EphyWebView *view,
-                         GParamSpec  *pspec,
-                         EphyWindow  *window)
-{
-  GActionGroup *action_group;
-  GAction *action;
-  gboolean allow;
-
-  g_assert (EPHY_IS_WEB_VIEW (view));
-  g_assert (EPHY_IS_WINDOW (window));
-
-  action_group = gtk_widget_get_action_group (GTK_WIDGET (window), "win");
-  action = g_action_map_lookup_action (G_ACTION_MAP (action_group),
-                                       "allow-popup-windows");
-
-  g_object_get (view, "popups-allowed", &allow, NULL);
-
-  g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (allow));
-}
-
 static void
 sync_tab_title (EphyEmbed  *embed,
                 GParamSpec *pspec,
@@ -2338,7 +2311,6 @@ ephy_window_connect_active_embed (EphyWindow *window)
   sync_tab_bookmarked_status (view, NULL, window);
   sync_tab_address (view, NULL, window);
   sync_tab_popup_windows (view, NULL, window);
-  sync_tab_popups_allowed (view, NULL, window);
 
   sync_tab_zoom (web_view, NULL, window);
 
@@ -2365,12 +2337,6 @@ ephy_window_connect_active_embed (EphyWindow *window)
                            G_CALLBACK (decide_policy_cb),
                            window, 0);
 
-  g_signal_connect_object (view, "notify::hidden-popup-count",
-                           G_CALLBACK (sync_tab_popup_windows),
-                           window, 0);
-  g_signal_connect_object (view, "notify::popups-allowed",
-                           G_CALLBACK (sync_tab_popups_allowed),
-                           window, 0);
   g_signal_connect_object (embed, "notify::title",
                            G_CALLBACK (sync_tab_title),
                            window, 0);
@@ -2439,12 +2405,6 @@ ephy_window_disconnect_active_embed (EphyWindow *window)
   g_signal_handlers_disconnect_by_func (view,
                                         G_CALLBACK (decide_policy_cb),
                                         window);
-  g_signal_handlers_disconnect_by_func (view,
-                                        G_CALLBACK (sync_tab_popup_windows),
-                                        window);
-  g_signal_handlers_disconnect_by_func (view,
-                                        G_CALLBACK (sync_tab_popups_allowed),
-                                        window);
   g_signal_handlers_disconnect_by_func (view,
                                         G_CALLBACK (sync_tab_security),
                                         window);
@@ -3352,27 +3312,6 @@ ephy_window_finalize (GObject *object)
   LOG ("EphyWindow finalised %p", object);
 }
 
-static void
-allow_popups_notifier (GSettings  *settings,
-                       char       *key,
-                       EphyWindow *window)
-{
-  GList *tabs;
-  EphyEmbed *embed;
-
-  g_assert (EPHY_IS_WINDOW (window));
-
-  tabs = impl_get_children (EPHY_EMBED_CONTAINER (window));
-
-  for (; tabs; tabs = g_list_next (tabs)) {
-    embed = EPHY_EMBED (tabs->data);
-    g_assert (EPHY_IS_EMBED (embed));
-
-    g_object_notify (G_OBJECT (ephy_embed_get_web_view (embed)), "popups-allowed");
-  }
-  g_list_free (tabs);
-}
-
 static void
 sync_user_input_cb (EphyLocationController *action,
                     GParamSpec             *pspec,
@@ -3774,10 +3713,6 @@ ephy_window_constructed (GObject *object)
                                 NULL,
                                 action, NULL);
 
-  g_signal_connect (EPHY_SETTINGS_WEB,
-                    "changed::" EPHY_PREFS_WEB_ENABLE_POPUPS,
-                    G_CALLBACK (allow_popups_notifier), window);
-
   action_group = gtk_widget_get_action_group (GTK_WIDGET (window),
                                               "win");
 
@@ -4033,26 +3968,6 @@ ephy_window_set_zoom (EphyWindow *window,
     webkit_web_view_set_zoom_level (web_view, zoom);
 }
 
-static void
-ephy_window_change_allow_popup_windows_state (GSimpleAction *action,
-                                              GVariant      *state,
-                                              gpointer       user_data)
-{
-  EphyWindow *window = EPHY_WINDOW (user_data);
-  EphyEmbed *embed;
-  gboolean allow;
-
-  g_assert (EPHY_IS_WINDOW (window));
-
-  embed = window->active_embed;
-  g_assert (EPHY_IS_EMBED (embed));
-
-  allow = g_variant_get_boolean (state);
-
-  g_object_set (G_OBJECT (ephy_embed_get_web_view (embed)), "popups-allowed", allow, NULL);
-  g_simple_action_set_state (G_SIMPLE_ACTION (action), g_variant_new_boolean (allow));
-}
-
 /**
  * ephy_window_get_context_event:
  * @window: an #EphyWindow


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