All pastes #1809258 Raw Edit

diego

public text v1 · immutable
#1809258 ·published 2010-02-25 08:01 UTC
rendered paste body
From 48a23fe44d9994bd9c3500fe0000b8c6a7033874 Mon Sep 17 00:00:00 2001From: Diego Escalante Urrelo <descalante@igalia.com>Date: Thu, 25 Feb 2010 02:58:43 -0500Subject: [PATCH] Implement non-form roles, rework of Joanmarie's patch--- ChangeLog                       |   12 ++ GNUmakefile.am                  |    6 + WebKit/gtk/ChangeLog            |   25 +++ WebKit/gtk/tests/testatkroles.c |  314 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 357 insertions(+), 0 deletions(-) create mode 100644 WebKit/gtk/tests/testatkroles.cdiff --git a/ChangeLog b/ChangeLogindex 2b167e7..73a9461 100644--- a/ChangeLog+++ b/ChangeLog@@ -1,3 +1,15 @@+2010-02-24  Diego Escalante Urrelo  <descalante@igalia.com>++        Reviewed by NOBODY (OOPS!).++        [Gtk] Evaluate and create tests for all the AtkRole's implemented by+        WebKitGtk+        https://bugs.webkit.org/show_bug.cgi?id=34449++        Build testatkroles test.++        * GNUmakefile.am:+ 2010-02-19  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>          Reviewed by Kenneth Rohde Christiansen.diff --git a/GNUmakefile.am b/GNUmakefile.amindex 854a1b0..07bc254 100644--- a/GNUmakefile.am+++ b/GNUmakefile.am@@ -578,6 +578,7 @@ TEST_PROGS += Programs/unittests/testhttpbackend \ 	Programs/unittests/testwindow \ 	Programs/unittests/testdownload \ 	Programs/unittests/testatk \+	Programs/unittests/testatkroles \ 	Programs/unittests/testhittestresult \ 	Programs/unittests/testwebsettings \ 	Programs/unittests/testwebresource \@@ -641,6 +642,11 @@ Programs_unittests_testatk_CFLAGS = $(webkit_tests_cflags) Programs_unittests_testatk_LDADD = $(webkit_tests_ldadd) Programs_unittests_testatk_LDFLAGS = $(webkit_tests_ldflags) +Programs_unittests_testatkroles_SOURCES = WebKit/gtk/tests/testatkroles.c+Programs_unittests_testatkroles_CFLAGS = $(webkit_tests_cflags)+Programs_unittests_testatkroles_LDADD = $(webkit_tests_ldadd)+Programs_unittests_testatkroles_LDFLAGS = $(webkit_tests_ldflags)+ Programs_unittests_testwebsettings_SOURCES = WebKit/gtk/tests/testwebsettings.c Programs_unittests_testwebsettings_CFLAGS = $(webkit_tests_cflags) Programs_unittests_testwebsettings_LDADD = $(webkit_tests_ldadd)diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLogindex 73599da..90ea9b8 100644--- a/WebKit/gtk/ChangeLog+++ b/WebKit/gtk/ChangeLog@@ -1,3 +1,28 @@+2010-02-24  Diego Escalante Urrelo  <descalante@igalia.com>++        Reviewed by NOBODY (OOPS!).++        [Gtk] Evaluate and create tests for all the AtkRole's implemented by+        WebKitGtk+        https://bugs.webkit.org/show_bug.cgi?id=34449++        Add a unit test for Atk roles, patch originally made by Joanmarie+        Diggs.++        * tests/testatkroles.c: Added.+        (finish_loading):+        (atk_roles_fixture_setup):+        (atk_roles_fixture_teardown):+        (test_webkit_atk_get_role_document_frame):+        (test_webkit_atk_get_role_heading):+        (test_webkit_atk_get_role_image):+        (test_webkit_atk_get_role_link):+        (test_webkit_atk_get_role_list_and_item):+        (test_webkit_atk_get_role_paragraph):+        (test_webkit_atk_get_role_section):+        (test_webkit_atk_get_role_table):+        (main):+ 2010-02-23  Leandro Pereira  <leandro@profusion.mobi>          Reviewed by Gustavo Noronha Silva.diff --git a/WebKit/gtk/tests/testatkroles.c b/WebKit/gtk/tests/testatkroles.cnew file mode 100644index 0000000..9fa5aef--- /dev/null+++ b/WebKit/gtk/tests/testatkroles.c@@ -0,0 +1,314 @@+/* vim: set sw=4 ts=4 sts=4 et: */+/*+ * Copyright © 2010 Joanmarie Diggs+ * Copyright © 2010 Igalia S.L.+ *+ * This library is free software; you can redistribute it and/or+ * modify it under the terms of the GNU Library General Public+ * License as published by the Free Software Foundation; either+ * version 2 of the License, or (at your option) any later version.+ *+ * This library 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+ * Library General Public License for more details.+ *+ * You should have received a copy of the GNU Library General Public License+ * along with this library; see the file COPYING.LIB.  If not, write to+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,+ * Boston, MA 02110-1301, USA.+ */++#include <errno.h>+#include <unistd.h>+#include <glib.h>+#include <glib/gstdio.h>+#include <gtk/gtk.h>+#include <webkit/webkit.h>++#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)++#define HTML_DOCUMENT_FRAME "<html><body>This is a test.</body></html>"+#define HTML_HEADING "<html><body><h1>1</h1><h2>2</h2><h3>3</h3><h4>4</h4><h5>5</h5><h6>6</h6></body></html>"+#define HTML_IMAGE "<html><body><img src='foobar.png' alt='This is a test.'/></body></html>"+#define HTML_LINK_TEXT "<html><body><a href='foobar.html'>This is a test.</a></body></html>"+#define HTML_LIST "<html><body><ul><li>1</li><li>2</li></ul><ol><li>1</li><li>2</li></ol></body></html>"+#define HTML_PARAGRAPH "<html><body><p>This is a test.</p></body></html>"+#define HTML_SECTION "<html><body><div>This is a test.</div></body></html>"+#define HTML_TABLE "<html><body><table border='1'><tr><td>This is</td><td>a test.</td></tr></table></body></html>"++typedef struct {+    GtkWidget* webView;+    GtkAllocation alloc = { 0, 0, 800, 600 };+    AtkObject* obj;+    AtkRole role;+    GMainLoop* loop;+} AtkRolesFixture;++static gboolean finish_loading(GMainLoop* loop)+{+    if (g_main_loop_is_running(loop))+        g_main_loop_quit(loop);++    return FALSE;+}++static void atk_roles_fixture_setup(AtkRolesFixture* fixture, const char* context)+{+    fixture->webView = webkit_web_view_new();+    g_object_ref_sink(fixture->webView);++    gtk_widget_size_allocate(fixture->webView, fixture->&alloc);++    fixture->loop = g_main_loop_new(NULL, TRUE);+    webkit_web_view_load_string(WEBKIT_WEB_VIEW (fixture->webView), context, NULL, NULL, NULL);++    g_timeout_add((GSourceFunc)finish_loading, fixture->loop);+    g_main_loop_run(fixture->loop);+}++static void atk_roles_fixture_teardown(AtkRolesFixture* fixture, gconstpointer data)+{+    g_object_unref(fixture->webView);+    g_main_loop_unref(fixture->loop);+}++static void test_webkit_atk_get_role_document_frame(void)+{+    fixture->obj = gtk_widget_get_accessible(fixture->webView);+    g_assert(fixture->obj);++    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_DOCUMENT_FRAME);+}++static void test_webkit_atk_get_role_heading(void)+{+    AtkObject* documentFrame;++    documentFrame = gtk_widget_get_accessible(webView);+    g_assert(documentFrame);++    fixture->obj = atk_object_ref_accessible_child(documentFrame, 0);+    g_assert(fixture->obj);++    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_HEADING);++    fixture->obj = atk_object_ref_accessible_child(documentFrame, 1);+    g_assert(fixture->obj);++    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_HEADING);++    fixture->obj = atk_object_ref_accessible_child(documentFrame, 2);+    g_assert(fixture->obj);++    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_HEADING);++    fixture->obj = atk_object_ref_accessible_child(documentFrame, 3);+    g_assert(fixture->obj);++    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_HEADING);++    fixture->obj = atk_object_ref_accessible_child(documentFrame, 4);+    g_assert(fixture->obj);++    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_HEADING);++    fixture->obj = atk_object_ref_accessible_child(documentFrame, 5);+    g_assert(fixture->obj);++    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_HEADING);++    g_object_unref(fixture->obj);+    g_object_unref(documentFrame);+}++static void test_webkit_atk_get_role_image(void)+{+    fixture->obj = gtk_widget_get_accessible(webView);+    g_assert(fixture->obj);++    // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.+    fixture->obj = atk_object_ref_accessible_child(fixture->obj, 0);+    g_assert(fixture->obj);++    fixture->obj = atk_object_ref_accessible_child(fixture->obj, 0);+    g_assert(fixture->obj);+    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_IMAGE);++    g_object_unref(fixture->obj);+}++static void test_webkit_atk_get_role_link(void)+{+    fixture->obj = gtk_widget_get_accessible(webView);+    g_assert(fixture->obj);++    // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.+    fixture->obj = atk_object_ref_accessible_child(fixture->obj, 0);+    g_assert(fixture->obj);++    fixture->obj = atk_object_ref_accessible_child(fixture->obj, 0);+    g_assert(fixture->obj);+    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_LINK);++    g_object_unref(fixture->obj);+}++static void test_webkit_atk_get_role_list_and_item(void)+{+    AtkObject* documentFrame;+    AtkObject* listObj;++    documentFrame = gtk_widget_get_accessible(webView);+    g_assert(documentFrame);++    listObj = atk_object_ref_accessible_child(documentFrame, 0);+    g_assert(listObj);+    fixture->role = atk_object_get_role(listObj);+    g_assert(fixture->role == ATK_ROLE_LIST);++    fixture->obj = atk_object_ref_accessible_child(listObj, 0);+    g_assert(fixture->obj);+    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_LIST_ITEM);++    fixture->obj = atk_object_ref_accessible_child(listObj, 1);+    g_assert(fixture->obj);+    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_LIST_ITEM);++    listObj = atk_object_ref_accessible_child(documentFrame, 1);+    g_assert(listObj);+    fixture->role = atk_object_get_role(listObj);+    g_assert(fixture->role == ATK_ROLE_LIST);++    fixture->obj = atk_object_ref_accessible_child(listObj, 0);+    g_assert(fixture->obj);+    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_LIST_ITEM);++    fixture->obj = atk_object_ref_accessible_child(listObj, 1);+    g_assert(fixture->obj);+    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_LIST_ITEM);++    g_object_unref(fixture->obj);+    g_object_unref(listObj);+    g_object_unref(documentFrame);+}++static void test_webkit_atk_get_role_paragraph(void)+{+    fixture->obj = gtk_widget_get_accessible(webView);+    g_assert(fixture->obj);+    fixture->obj = atk_object_ref_accessible_child(fixture->obj, 0);+    g_assert(fixture->obj);++    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_PARAGRAPH);++    g_object_unref(fixture->obj);+}++static void test_webkit_atk_get_role_section(void)+{+    fixture->obj = gtk_widget_get_accessible(webView);+    g_assert(fixture->obj);+    fixture->obj = atk_object_ref_accessible_child(fixture->obj, 0);+    g_assert(fixture->obj);++    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_SECTION);++    g_object_unref(fixture->obj);+}++// Does not yet test table cells because of bug 30895.+static void test_webkit_atk_get_role_table(void)+{+    fixture->obj = gtk_widget_get_accessible(webView);+    g_assert(fixture->obj);+    fixture->obj = atk_object_ref_accessible_child(fixture->obj, 0);+    g_assert(fixture->obj);++    fixture->role = atk_object_get_role(fixture->obj);+    g_assert(fixture->role == ATK_ROLE_TABLE);++    g_object_unref(fixture->obj);+}++int main(int argc, char** argv)+{+    g_thread_init(NULL);+    gtk_test_init(&argc, &argv, NULL);++    g_test_bug_base("https://bugs.webkit.org/");++    g_test_add("/webkit/atk/test_webkit_atk_get_role_document_frame",+               AtkRolesFixture, html_document_frame,+               atk_roles_fixture_setup,+               test_webkit_atk_get_role_document_frame,+               atk_roles_fixture_teardown);++    g_test_add("/webkit/atk/test_webkit_atk_get_role_heading",+               AtkRolesFixture, html_heading,+               atk_roles_fixture_setup,+               test_webkit_atk_get_role_heading+               atk_roles_fixture_teardown);++    g_test_add("/webkit/atk/test_webkit_atk_get_role_image",+               AtkRolesFixture, html_image,+               atk_roles_fixture_setup,+               test_webkit_atk_get_role_image+               atk_roles_fixture_teardown);++    g_test_add("/webkit/atk/test_webkit_atk_get_role_link",+               AtkRolesFixture, html_link_text,+               atk_roles_fixture_setup,+               test_webkit_atk_get_role_link+               atk_roles_fixture_teardown);++    g_test_add("/webkit/atk/test_webkit_atk_get_role_list_and_item",+               AtkRolesFixture, NULL,+               atk_roles_fixture_setup,+               test_webkit_atk_get_role_list_and_item+               atk_roles_fixture_teardown);++    g_test_add("/webkit/atk/test_webkit_atk_get_role_paragraph",+               AtkRolesFixture, html_paragraph,+               atk_roles_fixture_setup,+               test_webkit_atk_get_role_paragraph+               atk_roles_fixture_teardown);++    g_test_add("/webkit/atk/test_webkit_atk_get_role_section",+               AtkRolesFixture, NULL,+               atk_roles_fixture_setup,+               test_webkit_atk_get_role_section+               atk_roles_fixture_teardown);++    g_test_add("/webkit/atk/test_webkit_atk_get_role_table",+               AtkRolesFixture, NULL,+               atk_roles_fixture_setup,+               test_webkit_atk_get_role_table+               atk_roles_fixture_teardown);++    return g_test_run ();+}++#else+int main(int argc, char** argv)+{+    g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");+    return 0;+}++#endif-- 1.7.0