From: mario@webkit.org Date: Tue, 24 Jan 2012 16:22:57 +0000 (+0000) Subject: [GTK] Refactor GTK's accessibilitity code to be more modular X-Git-Tag: 070512121124~14684 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=980269e5cfc10ca159849bb15c59b2380fbf90eb;p=profile%2Fivi%2Fwebkit-efl.git [GTK] Refactor GTK's accessibilitity code to be more modular https://bugs.webkit.org/show_bug.cgi?id=76783 Reviewed by Martin Robinson. New files for the implementation of the AtkValue interface, containing the related code from WebKitAccessibleWrapperAtk.cpp. * accessibility/gtk/WebKitAccessibleInterfaceValue.cpp: Added. (core): (webkitAccessibleValueInterfaceInit): (webkitAccessibleValueGetCurrentValue): (webkitAccessibleValueGetMaximumValue): (webkitAccessibleValueGetMinimumValue): (webkitAccessibleValueSetCurrentValue): (webkitAccessibleValueGetMinimumIncrement): * accessibility/gtk/WebKitAccessibleInterfaceValue.h: Added. * accessibility/gtk/WebKitAccessibleWrapperAtk.cpp: Remove code related to the implementation of the AtkValue interface. Add new files to build files. * GNUmakefile.list.am: Add WebKitAccessibleInterfaceValue.[h|cpp]. * WebCore.gypi: Ditto. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@105740 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index 2b13e70..fb69b1f 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,30 @@ +2012-01-24 Mario Sanchez Prada + + [GTK] Refactor GTK's accessibilitity code to be more modular + https://bugs.webkit.org/show_bug.cgi?id=76783 + + Reviewed by Martin Robinson. + + New files for the implementation of the AtkValue interface, + containing the related code from WebKitAccessibleWrapperAtk.cpp. + + * accessibility/gtk/WebKitAccessibleInterfaceValue.cpp: Added. + (core): + (webkitAccessibleValueInterfaceInit): + (webkitAccessibleValueGetCurrentValue): + (webkitAccessibleValueGetMaximumValue): + (webkitAccessibleValueGetMinimumValue): + (webkitAccessibleValueSetCurrentValue): + (webkitAccessibleValueGetMinimumIncrement): + * accessibility/gtk/WebKitAccessibleInterfaceValue.h: Added. + * accessibility/gtk/WebKitAccessibleWrapperAtk.cpp: Remove code + related to the implementation of the AtkValue interface. + + Add new files to build files. + + * GNUmakefile.list.am: Add WebKitAccessibleInterfaceValue.[h|cpp]. + * WebCore.gypi: Ditto. + 2012-01-24 Antti Koivisto Reduce internal use of CSSStyleDeclaration base class diff --git a/Source/WebCore/GNUmakefile.list.am b/Source/WebCore/GNUmakefile.list.am index 60bf5c5..6e7a134 100644 --- a/Source/WebCore/GNUmakefile.list.am +++ b/Source/WebCore/GNUmakefile.list.am @@ -4437,6 +4437,8 @@ webcoregtk_sources += \ Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceImage.h \ Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceSelection.cpp \ Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceSelection.h \ + Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceValue.cpp \ + Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceValue.h \ Source/WebCore/accessibility/gtk/WebKitAccessibleUtil.cpp \ Source/WebCore/accessibility/gtk/WebKitAccessibleUtil.h \ Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp \ diff --git a/Source/WebCore/WebCore.gypi b/Source/WebCore/WebCore.gypi index 7745ac6..f939786 100644 --- a/Source/WebCore/WebCore.gypi +++ b/Source/WebCore/WebCore.gypi @@ -1361,6 +1361,8 @@ 'accessibility/gtk/WebKitAccessibleInterfaceImage.h', 'accessibility/gtk/WebKitAccessibleInterfaceSelection.cpp', 'accessibility/gtk/WebKitAccessibleInterfaceSelection.h', + 'accessibility/gtk/WebKitAccessibleInterfaceValue.cpp', + 'accessibility/gtk/WebKitAccessibleInterfaceValue.h', 'accessibility/gtk/WebKitAccessibleUtil.cpp', 'accessibility/gtk/WebKitAccessibleUtil.h', 'accessibility/gtk/WebKitAccessibleWrapperAtk.cpp', diff --git a/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceValue.cpp b/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceValue.cpp new file mode 100644 index 0000000..68e9916 --- /dev/null +++ b/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceValue.cpp @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2011, 2012 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 "config.h" +#include "WebKitAccessibleInterfaceValue.h" + +#include "AccessibilityObject.h" +#include "WebKitAccessibleWrapperAtk.h" + +using namespace WebCore; + +static AccessibilityObject* core(AtkValue* value) +{ + if (!WEBKIT_IS_ACCESSIBLE(value)) + return 0; + + return webkitAccessibleGetAccessibilityObject(WEBKIT_ACCESSIBLE(value)); +} + +void webkitAccessibleValueInterfaceInit(AtkValueIface* iface) +{ + iface->get_current_value = webkitAccessibleValueGetCurrentValue; + iface->get_maximum_value = webkitAccessibleValueGetMaximumValue; + iface->get_minimum_value = webkitAccessibleValueGetMinimumValue; + iface->set_current_value = webkitAccessibleValueSetCurrentValue; + iface->get_minimum_increment = webkitAccessibleValueGetMinimumIncrement; +} + +void webkitAccessibleValueGetCurrentValue(AtkValue* value, GValue* gValue) +{ + memset(gValue, 0, sizeof(GValue)); + g_value_init(gValue, G_TYPE_DOUBLE); + g_value_set_double(gValue, core(value)->valueForRange()); +} + +void webkitAccessibleValueGetMaximumValue(AtkValue* value, GValue* gValue) +{ + memset(gValue, 0, sizeof(GValue)); + g_value_init(gValue, G_TYPE_DOUBLE); + g_value_set_double(gValue, core(value)->maxValueForRange()); +} + +void webkitAccessibleValueGetMinimumValue(AtkValue* value, GValue* gValue) +{ + memset(gValue, 0, sizeof(GValue)); + g_value_init(gValue, G_TYPE_DOUBLE); + g_value_set_double(gValue, core(value)->minValueForRange()); +} + +gboolean webkitAccessibleValueSetCurrentValue(AtkValue* value, const GValue* gValue) +{ + if (!G_VALUE_HOLDS_DOUBLE(gValue) && !G_VALUE_HOLDS_INT(gValue)) + return FALSE; + + AccessibilityObject* coreObject = core(value); + if (!coreObject->canSetValueAttribute()) + return FALSE; + + if (G_VALUE_HOLDS_DOUBLE(gValue)) + coreObject->setValue(String::number(g_value_get_double(gValue))); + else + coreObject->setValue(String::number(g_value_get_int(gValue))); + + return TRUE; +} + +void webkitAccessibleValueGetMinimumIncrement(AtkValue* value, GValue* gValue) +{ + memset(gValue, 0, sizeof(GValue)); + g_value_init(gValue, G_TYPE_DOUBLE); + + // There's not such a thing in the WAI-ARIA specification, thus return zero. + g_value_set_double(gValue, 0.0); +} diff --git a/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceValue.h b/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceValue.h new file mode 100644 index 0000000..226c5bd --- /dev/null +++ b/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceValue.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2011, 2012 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. + */ + +#ifndef WebKitAccessibleInterfaceValue_h +#define WebKitAccessibleInterfaceValue_h + +#include + +void webkitAccessibleValueInterfaceInit(AtkValueIface*); +void webkitAccessibleValueGetCurrentValue(AtkValue*, GValue*); +void webkitAccessibleValueGetMaximumValue(AtkValue*, GValue*); +void webkitAccessibleValueGetMinimumValue(AtkValue*, GValue*); +gboolean webkitAccessibleValueSetCurrentValue(AtkValue*, const GValue*); +void webkitAccessibleValueGetMinimumIncrement(AtkValue*, GValue*); + +#endif // WebKitAccessibleInterfaceValue_h diff --git a/Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp b/Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp index 4c83455..fa4fedc 100644 --- a/Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp +++ b/Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp @@ -71,6 +71,7 @@ #include "WebKitAccessibleInterfaceHypertext.h" #include "WebKitAccessibleInterfaceImage.h" #include "WebKitAccessibleInterfaceSelection.h" +#include "WebKitAccessibleInterfaceValue.h" #include "WebKitAccessibleUtil.h" #include "htmlediting.h" #include "visible_units.h" @@ -125,11 +126,6 @@ static AccessibilityObject* core(AtkTable* table) return core(ATK_OBJECT(table)); } -static AccessibilityObject* core(AtkValue* value) -{ - return core(ATK_OBJECT(value)); -} - static gchar* webkit_accessible_text_get_text(AtkText*, gint startOffset, gint endOffset); static const gchar* webkit_accessible_get_name(AtkObject* object) @@ -1820,62 +1816,6 @@ static void atk_table_interface_init(AtkTableIface* iface) iface->get_row_description = webkit_accessible_table_get_row_description; } -static void webkitAccessibleValueGetCurrentValue(AtkValue* value, GValue* gValue) -{ - memset(gValue, 0, sizeof(GValue)); - g_value_init(gValue, G_TYPE_DOUBLE); - g_value_set_double(gValue, core(value)->valueForRange()); -} - -static void webkitAccessibleValueGetMaximumValue(AtkValue* value, GValue* gValue) -{ - memset(gValue, 0, sizeof(GValue)); - g_value_init(gValue, G_TYPE_DOUBLE); - g_value_set_double(gValue, core(value)->maxValueForRange()); -} - -static void webkitAccessibleValueGetMinimumValue(AtkValue* value, GValue* gValue) -{ - memset(gValue, 0, sizeof(GValue)); - g_value_init(gValue, G_TYPE_DOUBLE); - g_value_set_double(gValue, core(value)->minValueForRange()); -} - -static gboolean webkitAccessibleValueSetCurrentValue(AtkValue* value, const GValue* gValue) -{ - if (!G_VALUE_HOLDS_DOUBLE(gValue) && !G_VALUE_HOLDS_INT(gValue)) - return FALSE; - - AccessibilityObject* coreObject = core(value); - if (!coreObject->canSetValueAttribute()) - return FALSE; - - if (G_VALUE_HOLDS_DOUBLE(gValue)) - coreObject->setValue(String::number(g_value_get_double(gValue))); - else - coreObject->setValue(String::number(g_value_get_int(gValue))); - - return TRUE; -} - -static void webkitAccessibleValueGetMinimumIncrement(AtkValue* value, GValue* gValue) -{ - memset(gValue, 0, sizeof(GValue)); - g_value_init(gValue, G_TYPE_DOUBLE); - - // There's not such a thing in the WAI-ARIA specification, thus return zero. - g_value_set_double(gValue, 0.0); -} - -static void atkValueInterfaceInit(AtkValueIface* iface) -{ - iface->get_current_value = webkitAccessibleValueGetCurrentValue; - iface->get_maximum_value = webkitAccessibleValueGetMaximumValue; - iface->get_minimum_value = webkitAccessibleValueGetMinimumValue; - iface->set_current_value = webkitAccessibleValueSetCurrentValue; - iface->get_minimum_increment = webkitAccessibleValueGetMinimumIncrement; -} - static const GInterfaceInfo AtkInterfacesInitFunctions[] = { {reinterpret_cast(webkitAccessibleActionInterfaceInit), 0, 0}, {reinterpret_cast(webkitAccessibleSelectionInterfaceInit), 0, 0}, @@ -1889,8 +1829,7 @@ static const GInterfaceInfo AtkInterfacesInitFunctions[] = { {reinterpret_cast(webkitAccessibleHypertextInterfaceInit), 0, 0}, {reinterpret_cast(webkitAccessibleHyperlinkImplInterfaceInit), 0, 0}, {reinterpret_cast(webkitAccessibleDocumentInterfaceInit), 0, 0}, - {(GInterfaceInitFunc)atkValueInterfaceInit, - (GInterfaceFinalizeFunc) 0, 0} + {reinterpret_cast(webkitAccessibleValueInterfaceInit), 0, 0} }; enum WAIType {