[epiphany] ephy-embed-shell: add a ::web-view-created signal



commit 6da63a35ffe4254084c80d5abb568f9e9906be5a
Author: Xan Lopez <xan igalia com>
Date:   Sat Mar 9 21:18:28 2013 +0100

    ephy-embed-shell: add a ::web-view-created signal
    
    Emitted every time we create an EphyWebView anywhere. This will be
    useful in our tests.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=695300

 embed/ephy-embed-shell.c      |   19 +++++++++++++++++++
 embed/ephy-web-view.c         |    3 ++-
 tests/ephy-embed-shell-test.c |   32 ++++++++++++++++++++++++++++++++
 3 files changed, 53 insertions(+), 1 deletions(-)
---
diff --git a/embed/ephy-embed-shell.c b/embed/ephy-embed-shell.c
index fe2969e..19e5432 100644
--- a/embed/ephy-embed-shell.c
+++ b/embed/ephy-embed-shell.c
@@ -74,6 +74,7 @@ enum
   DOWNLOAD_REMOVED,
   PREPARE_CLOSE,
   RESTORED_WINDOW,
+  WEB_VIEW_CREATED,
   LAST_SIGNAL
 };
 
@@ -489,6 +490,24 @@ ephy_embed_shell_class_init (EphyEmbedShellClass *klass)
                   G_TYPE_NONE,
                   0);
 
+  /**
+   * EphyEmbedShell::web-view-created:
+   * @shell: the #EphyEmbedShell
+   * @view: the newly created #EphyWebView
+   *
+   * The ::web-view-created signal will be emitted every time a new
+   * #EphyWebView is created.
+   *
+   **/
+  signals[WEB_VIEW_CREATED] =
+    g_signal_new ("web-view-created",
+                  EPHY_TYPE_EMBED_SHELL,
+                  G_SIGNAL_RUN_LAST,
+                  0, NULL, NULL,
+                  g_cclosure_marshal_VOID__OBJECT,
+                  G_TYPE_NONE, 1,
+                  EPHY_TYPE_WEB_VIEW);
+
   g_type_class_add_private (object_class, sizeof (EphyEmbedShellPrivate));
 }
 
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index 67fc4c7..4f739f3 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -1284,10 +1284,11 @@ ephy_web_view_constructed (GObject *object)
    * have both enabled at the same time in WebKit now (although our
    * API does not reflect this atm). See r67274 in WebKit. */
 #ifndef HAVE_WEBKIT2
-
   /* This is the default behaviour in WebKit2 */
   webkit_web_view_set_full_content_zoom (WEBKIT_WEB_VIEW (object), TRUE);
 #endif
+
+  g_signal_emit_by_name (ephy_embed_shell_get_default (), "web-view-created", object);
 }
 
 static void
diff --git a/tests/ephy-embed-shell-test.c b/tests/ephy-embed-shell-test.c
index 27c1b9c..ef30b44 100644
--- a/tests/ephy-embed-shell-test.c
+++ b/tests/ephy-embed-shell-test.c
@@ -59,6 +59,31 @@ test_ephy_embed_shell_launch_handler (void)
     g_object_unref (file);
 }
 
+#if 0
+static void
+web_view_created_cb (EphyEmbedShell *shell, EphyWebView *view, gpointer user_data)
+{
+    gboolean *web_view_created = (gboolean*)user_data;
+    *web_view_created = TRUE;
+}
+
+static void
+test_ephy_embed_shell_web_view_created (void)
+{
+    EphyEmbedShell *embed_shell;
+    GtkWidget *view;
+    gboolean web_view_created = FALSE;
+
+    embed_shell = ephy_embed_shell_get_default ();
+    g_signal_connect (embed_shell, "web-view-created",
+                      G_CALLBACK (web_view_created_cb), &web_view_created);
+
+    view = ephy_web_view_new ();
+    g_assert (web_view_created);
+    gtk_widget_destroy (view);
+}
+#endif
+
 int
 main (int argc, char *argv[])
 {
@@ -82,6 +107,13 @@ main (int argc, char *argv[])
   g_test_add_func ("/embed/ephy-embed-shell/launch_handler",
                    test_ephy_embed_shell_launch_handler);
 
+/* FIXME: this won't run because of the XDG_DATA_{DIRS,HOME} stuff,
+ * see: https://bugzilla.gnome.org/show_bug.cgi?id=695620 */
+#if 0
+  g_test_add_func ("/embed/ephy-embed-shell/web-view-created",
+                   test_ephy_embed_shell_web_view_created);
+#endif
+
   ret = g_test_run ();
 
   g_object_unref (ephy_embed_shell_get_default ());


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