aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--embed/ephy-embed-shell.c19
-rw-r--r--embed/ephy-web-view.c3
-rw-r--r--tests/ephy-embed-shell-test.c32
3 files changed, 53 insertions, 1 deletions
diff --git a/embed/ephy-embed-shell.c b/embed/ephy-embed-shell.c
index fe2969e9b..19e543216 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 67fc4c7c5..4f739f357 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 27c1b9c46..ef30b448b 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 ());