[epiphany] Move methods related to view load from ephy-session-test to ephy-test-utils



commit 207ed7842e6f7d9be1bed66c3e630aa4bcaf7df8
Author: Manuel Rego Casasnovas <rego igalia com>
Date:   Tue Mar 12 13:50:44 2013 +0100

    Move methods related to view load from ephy-session-test to ephy-test-utils
    
    In ephy-session-tests we added some methods in order to know if the EphyWebViews
    have been loaded or not before checking their addresses. These methods are going
    to be needed in more tests so they are moved to a utilities file.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=695646

 tests/Makefile.am         |    2 +
 tests/ephy-session-test.c |  111 ++++++++-------------------------------------
 tests/ephy-test-utils.c   |  107 +++++++++++++++++++++++++++++++++++++++++++
 tests/ephy-test-utils.h   |   44 ++++++++++++++++++
 4 files changed, 173 insertions(+), 91 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index aaaf6c1..1c82995 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -156,6 +156,8 @@ test_ephy_migration_SOURCES = \
 
 test_ephy_session_SOURCES = \
        ephy-session-test.c \
+       ephy-test-utils.c \
+       ephy-test-utils.h \
        $(top_builddir)/src/epiphany-resources.c \
        $(top_builddir)/src/epiphany-resources.h
 
diff --git a/tests/ephy-session-test.c b/tests/ephy-session-test.c
index 2397ba4..f93a276 100644
--- a/tests/ephy-session-test.c
+++ b/tests/ephy-session-test.c
@@ -29,6 +29,7 @@
 #include "ephy-settings.h"
 #include "ephy-shell.h"
 #include "ephy-session.h"
+#include "ephy-test-utils.h"
 
 #include <glib.h>
 #include <glib/gstdio.h>
@@ -89,78 +90,6 @@ disable_delayed_loading (void)
                           FALSE);
 }
 
-static guint web_view_ready_counter = 0;
-
-static void
-load_changed_cb (WebKitWebView *web_view,
-#ifdef HAVE_WEBKIT2
-                 WebKitLoadEvent status,
-#else
-                 GParamSpec *pspec,
-#endif
-                 GMainLoop *loop)
-{
-#ifndef HAVE_WEBKIT2
-  WebKitLoadStatus status = webkit_web_view_get_load_status (web_view);
-#endif
-
-  if (status == WEBKIT_LOAD_COMMITTED) {
-    web_view_ready_counter--;
-    g_signal_handlers_disconnect_by_func (web_view, load_changed_cb, loop);
-
-    if (web_view_ready_counter == 0)
-      g_main_loop_quit (loop);
-  }
-
-}
-
-static void
-wait_until_load_is_committed (WebKitWebView *web_view, GMainLoop *loop)
-{
-#ifdef HAVE_WEBKIT2
-  g_signal_connect (web_view, "load-changed", G_CALLBACK (load_changed_cb), loop);
-#else
-  g_signal_connect (web_view, "notify::load-status", G_CALLBACK (load_changed_cb), loop);
-#endif
-}
-
-static void
-check_ephy_web_view_address (EphyWebView *view,
-                             const gchar *address)
-{
-  g_assert_cmpstr (ephy_web_view_get_address (view), ==, address);
-}
-
-static void
-web_view_created_cb (EphyEmbedShell *shell, EphyWebView *view, GMainLoop *loop)
-{
-  web_view_ready_counter++;
-  wait_until_load_is_committed (WEBKIT_WEB_VIEW (view), loop);
-}
-
-static GMainLoop* setup_ensure_web_views_are_loaded (void)
-{
-  GMainLoop *loop;
-
-  web_view_ready_counter = 0;
-
-  loop = g_main_loop_new (NULL, FALSE);
-  g_signal_connect (ephy_embed_shell_get_default (), "web-view-created",
-                    G_CALLBACK (web_view_created_cb), loop);
-
-  return loop;
-}
-
-static void ensure_web_views_are_loaded (GMainLoop *loop)
-{
-  if (web_view_ready_counter != 0)
-    g_main_loop_run (loop);
-
-  g_signal_handlers_disconnect_by_func (ephy_embed_shell_get_default (), G_CALLBACK (web_view_created_cb), 
loop);
-  g_assert_cmpint (web_view_ready_counter, ==, 0);
-  g_main_loop_unref (loop);
-}
-
 static void
 test_ephy_session_load (void)
 {
@@ -176,12 +105,12 @@ test_ephy_session_load (void)
     session = ephy_shell_get_session (ephy_shell_get_default ());
     g_assert (session);
 
-    loop = setup_ensure_web_views_are_loaded ();
+    loop = ephy_test_utils_setup_ensure_web_views_are_loaded ();
 
     ret = load_session_from_string (session, session_data);
     g_assert (ret);
 
-    ensure_web_views_are_loaded (loop);
+    ephy_test_utils_ensure_web_views_are_loaded (loop);
 
     l = gtk_application_get_windows (GTK_APPLICATION (ephy_shell_get_default ()));
     g_assert (l);
@@ -191,7 +120,7 @@ test_ephy_session_load (void)
     g_assert (embed);
     view = ephy_embed_get_web_view (embed);
     g_assert (view);
-    check_ephy_web_view_address (view, "ephy-about:memory");
+    ephy_test_utils_check_ephy_web_view_address (view, "ephy-about:memory");
 
     ephy_session_clear (session);
 
@@ -234,11 +163,11 @@ test_ephy_session_clear (void)
 
   session = EPHY_SESSION (ephy_shell_get_session (ephy_shell_get_default ()));
 
-  loop = setup_ensure_web_views_are_loaded ();
+  loop = ephy_test_utils_setup_ensure_web_views_are_loaded ();
 
   load_session_from_string (session, session_data_many_windows);
 
-  ensure_web_views_are_loaded (loop);
+  ephy_test_utils_ensure_web_views_are_loaded (loop);
 
   l = gtk_application_get_windows (GTK_APPLICATION (ephy_shell_get_default ()));
   gtk_widget_destroy (GTK_WIDGET (l->data));
@@ -267,7 +196,7 @@ test_ephy_session_load_empty_session (void)
     session = ephy_shell_get_session (ephy_shell_get_default ());
     g_assert (session);
 
-    loop = setup_ensure_web_views_are_loaded ();
+    loop = ephy_test_utils_setup_ensure_web_views_are_loaded ();
 
     ret = load_session_from_string (session, session_data_empty);
     g_assert (ret == FALSE);
@@ -276,7 +205,7 @@ test_ephy_session_load_empty_session (void)
      * the default empty window. Got to spin the mainloop though,
      * since the fallback is done by queueing another session
      * command. */
-    ensure_web_views_are_loaded (loop);
+    ephy_test_utils_ensure_web_views_are_loaded (loop);
 
     l = gtk_application_get_windows (GTK_APPLICATION (ephy_shell_get_default ()));
     g_assert (l);
@@ -286,7 +215,7 @@ test_ephy_session_load_empty_session (void)
     g_assert (embed);
     view = ephy_embed_get_web_view (embed);
     g_assert (view);
-    check_ephy_web_view_address (view, "ephy-about:overview");
+    ephy_test_utils_check_ephy_web_view_address (view, "ephy-about:overview");
 
     enable_delayed_loading ();
     ephy_session_clear (session);
@@ -307,14 +236,14 @@ test_ephy_session_load_many_windows (void)
     session = ephy_shell_get_session (ephy_shell_get_default ());
     g_assert (session);
 
-    loop = setup_ensure_web_views_are_loaded ();
+    loop = ephy_test_utils_setup_ensure_web_views_are_loaded ();
 
     ret = load_session_from_string (session, session_data_many_windows);
     g_assert (ret);
-    g_assert_cmpint (web_view_ready_counter, >=, 0);
-    g_assert_cmpint (web_view_ready_counter, <=, 2);
+    g_assert_cmpint (ephy_test_utils_get_web_view_ready_counter (), >=, 0);
+    g_assert_cmpint (ephy_test_utils_get_web_view_ready_counter (), <=, 2);
 
-    ensure_web_views_are_loaded (loop);
+    ephy_test_utils_ensure_web_views_are_loaded (loop);
 
     l = gtk_application_get_windows (GTK_APPLICATION (ephy_shell_get_default ()));
     g_assert (l);
@@ -327,7 +256,7 @@ test_ephy_session_load_many_windows (void)
       g_assert (view);
 #ifndef HAVE_WEBKIT2
       /* FIXME: This #ifndef should be removed once bug #695437 is fixed. */
-      check_ephy_web_view_address (view, "ephy-about:epiphany");
+      ephy_test_utils_check_ephy_web_view_address (view, "ephy-about:epiphany");
 #endif
     }
 
@@ -351,16 +280,16 @@ open_uris_after_loading_session (const char** uris, int final_num_windows)
     session = ephy_shell_get_session (ephy_shell_get_default ());
     g_assert (session);
 
-    loop = setup_ensure_web_views_are_loaded ();
+    loop = ephy_test_utils_setup_ensure_web_views_are_loaded ();
 
     user_time = gdk_x11_display_get_user_time (gdk_display_get_default ());
 
     ret = load_session_from_string (session, session_data_many_windows);
     g_assert (ret);
-    g_assert_cmpint (web_view_ready_counter, >=, 0);
-    g_assert_cmpint (web_view_ready_counter, <=, 2);
+    g_assert_cmpint (ephy_test_utils_get_web_view_ready_counter (), >=, 0);
+    g_assert_cmpint (ephy_test_utils_get_web_view_ready_counter (), <=, 2);
 
-    ensure_web_views_are_loaded (loop);
+    ephy_test_utils_ensure_web_views_are_loaded (loop);
 
     l = gtk_application_get_windows (GTK_APPLICATION (ephy_shell_get_default ()));
 
@@ -374,7 +303,7 @@ open_uris_after_loading_session (const char** uris, int final_num_windows)
       g_assert (view);
 #ifndef HAVE_WEBKIT2
       /* FIXME: This #ifndef should be removed once bug #695437 is fixed. */
-      check_ephy_web_view_address (view, "ephy-about:epiphany");
+      ephy_test_utils_check_ephy_web_view_address (view, "ephy-about:epiphany");
 #endif
     }
 
@@ -472,7 +401,7 @@ test_ephy_session_restore_tabs (void)
   /* The active child should now be pointing to the restored tab,
      whose address is the one we copied previously. */
   embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (l->data));
-  check_ephy_web_view_address (ephy_embed_get_web_view (embed), url);
+  ephy_test_utils_check_ephy_web_view_address (ephy_embed_get_web_view (embed), url);
   g_free (url);
 
   ephy_session_clear (session);
diff --git a/tests/ephy-test-utils.c b/tests/ephy-test-utils.c
new file mode 100644
index 0000000..95a90ec
--- /dev/null
+++ b/tests/ephy-test-utils.c
@@ -0,0 +1,107 @@
+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set sw=2 ts=2 sts=2 et: */
+/*
+ *  Copyright © 2013 Igalia S.L.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "config.h"
+#include "ephy-test-utils.h"
+
+#include "ephy-embed-shell.h"
+
+#include <glib.h>
+
+static guint web_view_ready_counter = 0;
+
+guint
+ephy_test_utils_get_web_view_ready_counter (void)
+{
+  return web_view_ready_counter;
+}
+
+void
+ephy_test_utils_check_ephy_web_view_address (EphyWebView *view,
+                                             const gchar *address)
+{
+  g_assert_cmpstr (ephy_web_view_get_address (view), ==, address);
+}
+
+static void
+load_changed_cb (WebKitWebView *web_view,
+#ifdef HAVE_WEBKIT2
+                 WebKitLoadEvent status,
+#else
+                 GParamSpec *pspec,
+#endif
+                 GMainLoop *loop)
+{
+#ifndef HAVE_WEBKIT2
+  WebKitLoadStatus status = webkit_web_view_get_load_status (web_view);
+#endif
+
+  if (status == WEBKIT_LOAD_COMMITTED) {
+    web_view_ready_counter--;
+    g_signal_handlers_disconnect_by_func (web_view, load_changed_cb, loop);
+
+    if (web_view_ready_counter == 0)
+      g_main_loop_quit (loop);
+  }
+
+}
+
+static void
+wait_until_load_is_committed (WebKitWebView *web_view, GMainLoop *loop)
+{
+#ifdef HAVE_WEBKIT2
+  g_signal_connect (web_view, "load-changed", G_CALLBACK (load_changed_cb), loop);
+#else
+  g_signal_connect (web_view, "notify::load-status", G_CALLBACK (load_changed_cb), loop);
+#endif
+}
+
+static void
+web_view_created_cb (EphyEmbedShell *shell, EphyWebView *view, GMainLoop *loop)
+{
+  web_view_ready_counter++;
+  wait_until_load_is_committed (WEBKIT_WEB_VIEW (view), loop);
+}
+
+GMainLoop*
+ephy_test_utils_setup_ensure_web_views_are_loaded (void)
+{
+  GMainLoop *loop;
+
+  web_view_ready_counter = 0;
+
+  loop = g_main_loop_new (NULL, FALSE);
+  g_signal_connect (ephy_embed_shell_get_default (), "web-view-created",
+                    G_CALLBACK (web_view_created_cb), loop);
+
+  return loop;
+}
+
+void
+ephy_test_utils_ensure_web_views_are_loaded (GMainLoop *loop)
+{
+  if (web_view_ready_counter != 0)
+    g_main_loop_run (loop);
+
+  g_signal_handlers_disconnect_by_func (ephy_embed_shell_get_default (), G_CALLBACK (web_view_created_cb), 
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
new file mode 100644
index 0000000..afd05f1
--- /dev/null
+++ b/tests/ephy-test-utils.h
@@ -0,0 +1,44 @@
+/*
+ *  Copyright © 2013 Igalia S.L.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#if !defined (__EPHY_EPIPHANY_H_INSIDE__) && !defined (EPIPHANY_COMPILATION)
+#error "Only <epiphany/epiphany.h> can be included directly."
+#endif
+
+#ifndef EPHY_TEST_UTILS_H
+#define EPHY_TEST_UTILS_H
+
+#include "ephy-web-view.h"
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+guint ephy_test_utils_get_web_view_ready_counter (void);
+
+void ephy_test_utils_check_ephy_web_view_address (EphyWebView *view,
+                                                  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);
+
+G_END_DECLS
+
+#endif


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