rendered paste bodyFrom 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