aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/Makefile.am4
-rw-r--r--tests/ephy-shell-test.c59
-rw-r--r--tests/ephy-test-utils.c30
-rw-r--r--tests/ephy-test-utils.h8
4 files changed, 76 insertions, 25 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 1c82995f5..6236ad3be 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -164,7 +164,9 @@ test_ephy_session_SOURCES = \
test_ephy_shell_SOURCES = \
$(top_builddir)/src/epiphany-resources.c \
$(top_builddir)/src/epiphany-resources.h \
- ephy-shell-test.c
+ ephy-shell-test.c \
+ ephy-test-utils.c \
+ ephy-test-utils.h
test_ephy_snapshot_service_SOURCES = \
ephy-snapshot-service-test.c
diff --git a/tests/ephy-shell-test.c b/tests/ephy-shell-test.c
index 2be285910..2525cac56 100644
--- a/tests/ephy-shell-test.c
+++ b/tests/ephy-shell-test.c
@@ -32,6 +32,7 @@
#include "ephy-file-helpers.h"
#include "ephy-private.h"
#include "ephy-shell.h"
+#include "ephy-test-utils.h"
#include "ephy-window.h"
#include <glib.h>
@@ -136,7 +137,6 @@ test_ephy_shell_parent_windows (void)
gtk_widget_destroy (window2);
}
-#ifndef HAVE_WEBKIT2
static void
test_ephy_shell_tab_load (void)
{
@@ -144,35 +144,44 @@ test_ephy_shell_tab_load (void)
GtkWidget *window;
EphyEmbed *embed;
EphyWebView *view;
+ GMainLoop *loop;
ephy_shell = ephy_shell_get_default ();
window = GTK_WIDGET (ephy_window_new ());
+ loop = ephy_test_utils_setup_ensure_web_views_are_loaded ();
+
/* homepage is "about:blank" for now, see embed/ephy-web-view.c */
embed = ephy_shell_new_tab
(ephy_shell, NULL, NULL, NULL,
EPHY_NEW_TAB_DONT_SHOW_WINDOW | EPHY_NEW_TAB_HOME_PAGE);
g_assert (EPHY_IS_EMBED (embed));
+
+ ephy_test_utils_ensure_web_views_are_loaded (loop);
+
view = ephy_embed_get_web_view (embed);
- g_assert_cmpstr (ephy_web_view_get_address (view), ==, "ephy-about:overview");
+ ephy_test_utils_check_ephy_web_view_address (view, "ephy-about:overview");
g_assert_cmpstr (ephy_web_view_get_typed_address (view), ==, NULL);
g_object_ref_sink (embed);
g_object_unref (embed);
+ loop = ephy_test_utils_setup_ensure_web_views_are_loaded ();
+
/* open-page "about:epiphany" for testing. */
embed = ephy_shell_new_tab
(ephy_shell, NULL, NULL, "about:epiphany",
EPHY_NEW_TAB_DONT_SHOW_WINDOW | EPHY_NEW_TAB_OPEN_PAGE);
g_assert (EPHY_IS_EMBED (embed));
- view = ephy_embed_get_web_view (embed);
- g_assert_cmpstr (ephy_web_view_get_address (view), ==, "ephy-about:epiphany");
+
+ ephy_test_utils_ensure_web_views_are_loaded (loop);
+
+ ephy_test_utils_check_ephy_embed_address (embed, "ephy-about:epiphany");
gtk_widget_destroy (window);
}
-#endif
static int
get_notebook_page_num (GtkWidget *notebook, EphyEmbed *embed)
@@ -230,13 +239,13 @@ test_ephy_shell_tab_append (void)
gtk_widget_destroy (window);
}
-#ifndef HAVE_WEBKIT2
static void
test_ephy_shell_tab_from_external (void)
{
EphyShell *ephy_shell;
GtkWidget *window;
GtkWidget *notebook;
+ GMainLoop *loop;
EphyEmbed *embed;
EphyEmbed *embed2;
@@ -245,6 +254,9 @@ test_ephy_shell_tab_from_external (void)
EphyEmbed *embed5;
ephy_shell = ephy_shell_get_default ();
+
+ loop = ephy_test_utils_setup_ensure_web_views_are_loaded ();
+
embed = ephy_shell_new_tab (ephy_shell, NULL, NULL, "about:epiphany",
EPHY_NEW_TAB_DONT_SHOW_WINDOW | EPHY_NEW_TAB_OPEN_PAGE);
window = gtk_widget_get_toplevel (GTK_WIDGET (embed));
@@ -261,41 +273,46 @@ test_ephy_shell_tab_from_external (void)
* loop, fake one so we get a working test. */
ephy_web_view_load_homepage (ephy_embed_get_web_view (embed2));
- while (g_main_context_pending (NULL))
- g_main_context_iteration (NULL, FALSE);
-
embed3 = ephy_shell_new_tab (ephy_shell, EPHY_WINDOW (window), NULL, "about:memory",
EPHY_NEW_TAB_DONT_SHOW_WINDOW | EPHY_NEW_TAB_OPEN_PAGE | EPHY_NEW_TAB_IN_EXISTING_WINDOW);
g_assert (gtk_widget_get_toplevel (GTK_WIDGET (embed3)) == window);
+ ephy_test_utils_ensure_web_views_are_loaded (loop);
+
/* This one should fail, because the active embed is not @embed2. */
- g_assert_cmpstr (ephy_web_view_get_address (ephy_embed_get_web_view (embed2)), ==, "ephy-about:overview");
+ ephy_test_utils_check_ephy_embed_address (embed2, "ephy-about:overview");
g_assert_cmpint (gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)), ==, 0);
+ loop = ephy_test_utils_setup_ensure_web_views_are_loaded ();
+
embed4 = ephy_shell_new_tab (ephy_shell, EPHY_WINDOW (window), NULL, "about:applications",
EPHY_NEW_TAB_DONT_SHOW_WINDOW | EPHY_NEW_TAB_IN_EXISTING_WINDOW | EPHY_NEW_TAB_OPEN_PAGE | EPHY_NEW_TAB_FROM_EXTERNAL);
g_assert (embed4 != embed2);
- g_assert_cmpstr (ephy_web_view_get_address (ephy_embed_get_web_view (embed2)), ==, "ephy-about:overview");
- g_assert_cmpstr (ephy_web_view_get_address (ephy_embed_get_web_view (embed4)), ==, "ephy-about:applications");
+
+ ephy_test_utils_ensure_web_views_are_loaded (loop);
+
+ ephy_test_utils_check_ephy_embed_address (embed2, "ephy-about:overview");
+ ephy_test_utils_check_ephy_embed_address (embed4, "ephy-about:applications");
gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 1);
/* This should work */
- g_assert_cmpstr (ephy_web_view_get_address (ephy_embed_get_web_view (embed2)), ==, "ephy-about:overview");
+ ephy_test_utils_check_ephy_embed_address (embed2, "ephy-about:overview");
g_assert_cmpint (gtk_notebook_get_current_page (GTK_NOTEBOOK (notebook)), ==, 1);
+ loop = ephy_test_utils_setup_wait_until_load_is_committed (ephy_embed_get_web_view (embed2));
+
embed5 = ephy_shell_new_tab (ephy_shell, EPHY_WINDOW (window), NULL, "about:applications",
EPHY_NEW_TAB_DONT_SHOW_WINDOW | EPHY_NEW_TAB_IN_EXISTING_WINDOW | EPHY_NEW_TAB_OPEN_PAGE | EPHY_NEW_TAB_FROM_EXTERNAL);
- while (g_main_context_pending (NULL))
- g_main_context_iteration (NULL, FALSE);
-
g_assert (embed5 == embed2);
- g_assert_cmpstr (ephy_web_view_get_address (ephy_embed_get_web_view (embed5)), ==, "ephy-about:applications");
+
+ ephy_test_utils_wait_until_load_is_committed (loop);
+
+ ephy_test_utils_check_ephy_embed_address (embed5, "ephy-about:applications");
gtk_widget_destroy (window);
}
-#endif
static void
test_ephy_shell_tab_no_history (void)
@@ -370,20 +387,14 @@ main (int argc, char *argv[])
g_test_add_func ("/src/ephy-shell/parent_windows",
test_ephy_shell_parent_windows);
-#ifndef HAVE_WEBKIT2
- /* FIXME: see https://bugzilla.gnome.org/show_bug.cgi?id=695646 */
g_test_add_func ("/src/ephy-shell/tab_load",
test_ephy_shell_tab_load);
-#endif
g_test_add_func ("/src/ephy-shell/tab_append",
test_ephy_shell_tab_append);
-#ifndef HAVE_WEBKIT2
- /* FIXME: see https://bugzilla.gnome.org/show_bug.cgi?id=695646 */
g_test_add_func ("/src/ephy-shell/tab_from_external",
test_ephy_shell_tab_from_external);
-#endif
g_test_add_func ("/src/ephy-shell/tab_no_history",
test_ephy_shell_tab_no_history);
diff --git a/tests/ephy-test-utils.c b/tests/ephy-test-utils.c
index 95a90ec2a..83272de44 100644
--- a/tests/ephy-test-utils.c
+++ b/tests/ephy-test-utils.c
@@ -41,6 +41,13 @@ ephy_test_utils_check_ephy_web_view_address (EphyWebView *view,
g_assert_cmpstr (ephy_web_view_get_address (view), ==, address);
}
+void
+ephy_test_utils_check_ephy_embed_address (EphyEmbed *embed,
+ const gchar *address)
+{
+ ephy_test_utils_check_ephy_web_view_address (ephy_embed_get_web_view (embed), address);
+}
+
static void
load_changed_cb (WebKitWebView *web_view,
#ifdef HAVE_WEBKIT2
@@ -105,3 +112,26 @@ ephy_test_utils_ensure_web_views_are_loaded (GMainLoop *loop)
g_assert_cmpint (web_view_ready_counter, ==, 0);
g_main_loop_unref (loop);
}
+
+GMainLoop*
+ephy_test_utils_setup_wait_until_load_is_committed (EphyWebView *view)
+{
+ GMainLoop *loop;
+
+ web_view_ready_counter = 1;
+
+ loop = g_main_loop_new (NULL, FALSE);
+ wait_until_load_is_committed (WEBKIT_WEB_VIEW (view), loop);
+
+ return loop;
+}
+
+void
+ephy_test_utils_wait_until_load_is_committed (GMainLoop *loop)
+{
+ if (web_view_ready_counter != 0)
+ g_main_loop_run (loop);
+
+ g_assert_cmpint (web_view_ready_counter, ==, 0);
+ g_main_loop_unref (loop);
+}
diff --git a/tests/ephy-test-utils.h b/tests/ephy-test-utils.h
index afd05f145..66a9f4450 100644
--- a/tests/ephy-test-utils.h
+++ b/tests/ephy-test-utils.h
@@ -24,6 +24,7 @@
#ifndef EPHY_TEST_UTILS_H
#define EPHY_TEST_UTILS_H
+#include "ephy-embed.h"
#include "ephy-web-view.h"
#include <glib.h>
@@ -35,10 +36,17 @@ guint ephy_test_utils_get_web_view_ready_counter (void);
void ephy_test_utils_check_ephy_web_view_address (EphyWebView *view,
const gchar *address);
+void ephy_test_utils_check_ephy_embed_address (EphyEmbed *embed,
+ const gchar *address);
+
GMainLoop* ephy_test_utils_setup_ensure_web_views_are_loaded (void);
void ephy_test_utils_ensure_web_views_are_loaded (GMainLoop *loop);
+GMainLoop* ephy_test_utils_setup_wait_until_load_is_committed (EphyWebView *view);
+
+void ephy_test_utils_wait_until_load_is_committed (GMainLoop *loop);
+
G_END_DECLS
#endif