[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 AtkAction interface,
containing the related code from WebKitAccessibleWrapperAtk.cpp.
* accessibility/gtk/WebKitAccessibleInterfaceAction.cpp: Added.
(core):
(webkitAccessibleActionInterfaceInit):
(webkitAccessibleActionDoAction):
(webkitAccessibleActionGetNActions):
(webkitAccessibleActionGetDescription):
(webkitAccessibleActionGetKeybinding):
(webkitAccessibleActionGetName):
* accessibility/gtk/WebKitAccessibleInterfaceAction.h: Added.
* accessibility/gtk/WebKitAccessibleWrapperAtk.cpp: Remove code
related to the implementation of the AtkAction interface.
Add new files to build files.
* GNUmakefile.list.am: Add WebKitAccessibleInterfaceAction.[h|cpp].
* WebCore.gypi: Ditto.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@105618 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 1478e30..cff6371 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,31 @@
+2012-01-23 Mario Sanchez Prada <msanchez@igalia.com>
+
+ [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 AtkAction interface,
+ containing the related code from WebKitAccessibleWrapperAtk.cpp.
+
+ * accessibility/gtk/WebKitAccessibleInterfaceAction.cpp: Added.
+ (core):
+ (webkitAccessibleActionInterfaceInit):
+ (webkitAccessibleActionDoAction):
+ (webkitAccessibleActionGetNActions):
+ (webkitAccessibleActionGetDescription):
+ (webkitAccessibleActionGetKeybinding):
+ (webkitAccessibleActionGetName):
+ * accessibility/gtk/WebKitAccessibleInterfaceAction.h: Added.
+
+ * accessibility/gtk/WebKitAccessibleWrapperAtk.cpp: Remove code
+ related to the implementation of the AtkAction interface.
+
+ Add new files to build files.
+
+ * GNUmakefile.list.am: Add WebKitAccessibleInterfaceAction.[h|cpp].
+ * WebCore.gypi: Ditto.
+
2012-01-23 Nikolas Zimmermann <nzimmermann@rim.com>
SVG animation repaint issue with image and dynamic clipPath
diff --git a/Source/WebCore/GNUmakefile.list.am b/Source/WebCore/GNUmakefile.list.am
index ec7be25..01f3a81 100644
--- a/Source/WebCore/GNUmakefile.list.am
+++ b/Source/WebCore/GNUmakefile.list.am
@@ -4424,6 +4424,8 @@
Source/WebCore/accessibility/gtk/AXObjectCacheAtk.cpp \
Source/WebCore/accessibility/gtk/WebKitAccessibleHyperlink.h \
Source/WebCore/accessibility/gtk/WebKitAccessibleHyperlink.cpp \
+ Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceAction.cpp \
+ Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceAction.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 bfb5c61..e21fbb4 100644
--- a/Source/WebCore/WebCore.gypi
+++ b/Source/WebCore/WebCore.gypi
@@ -1768,6 +1768,8 @@
'accessibility/gtk/AccessibilityObjectAtk.cpp',
'accessibility/gtk/WebKitAccessibleHyperlink.cpp',
'accessibility/gtk/WebKitAccessibleHyperlink.h',
+ 'accessibility/gtk/WebKitAccessibleInterfaceAction.cpp',
+ 'accessibility/gtk/WebKitAccessibleInterfaceAction.h',
'accessibility/gtk/WebKitAccessibleUtil.cpp',
'accessibility/gtk/WebKitAccessibleUtil.h',
'accessibility/gtk/WebKitAccessibleWrapperAtk.cpp',
diff --git a/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceAction.cpp b/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceAction.cpp
new file mode 100644
index 0000000..680f713
--- /dev/null
+++ b/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceAction.cpp
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2008 Nuanti Ltd.
+ * Copyright (C) 2009 Jan Alonzo
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * Portions from Mozilla a11y, copyright as follows:
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Sun Microsystems, Inc.
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * 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 "WebKitAccessibleInterfaceAction.h"
+
+#include "AccessibilityObject.h"
+#include "NotImplemented.h"
+#include "WebKitAccessibleUtil.h"
+#include "WebKitAccessibleWrapperAtk.h"
+
+using namespace WebCore;
+
+static AccessibilityObject* core(AtkAction* action)
+{
+ if (!WEBKIT_IS_ACCESSIBLE(action))
+ return 0;
+
+ return webkitAccessibleGetAccessibilityObject(WEBKIT_ACCESSIBLE(action));
+}
+
+void webkitAccessibleActionInterfaceInit(AtkActionIface* iface)
+{
+ iface->do_action = webkitAccessibleActionDoAction;
+ iface->get_n_actions = webkitAccessibleActionGetNActions;
+ iface->get_description = webkitAccessibleActionGetDescription;
+ iface->get_keybinding = webkitAccessibleActionGetKeybinding;
+ iface->get_name = webkitAccessibleActionGetName;
+}
+
+gboolean webkitAccessibleActionDoAction(AtkAction* action, gint index)
+{
+ g_return_val_if_fail(!index, FALSE);
+ return core(action)->performDefaultAction();
+}
+
+gint webkitAccessibleActionGetNActions(AtkAction*)
+{
+ return 1;
+}
+
+const gchar* webkitAccessibleActionGetDescription(AtkAction*, gint)
+{
+ // TODO: Need a way to provide/localize action descriptions.
+ notImplemented();
+ return "";
+}
+
+const gchar* webkitAccessibleActionGetKeybinding(AtkAction* action, gint index)
+{
+ g_return_val_if_fail(!index, 0);
+ // FIXME: Construct a proper keybinding string.
+ return returnString(core(action)->accessKey().string());
+}
+
+const gchar* webkitAccessibleActionGetName(AtkAction* action, gint index)
+{
+ g_return_val_if_fail(!index, 0);
+ return returnString(core(action)->actionVerb());
+}
diff --git a/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceAction.h b/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceAction.h
new file mode 100644
index 0000000..73ca570
--- /dev/null
+++ b/Source/WebCore/accessibility/gtk/WebKitAccessibleInterfaceAction.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 Nuanti Ltd.
+ * Copyright (C) 2009 Jan Alonzo
+ * Copyright (C) 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 WebKitAccessibleInterfaceAction_h
+#define WebKitAccessibleInterfaceAction_h
+
+#include <atk/atk.h>
+
+void webkitAccessibleActionInterfaceInit(AtkActionIface*);
+gboolean webkitAccessibleActionDoAction(AtkAction*, gint index);
+gint webkitAccessibleActionGetNActions(AtkAction*);
+const gchar* webkitAccessibleActionGetDescription(AtkAction*, gint index);
+const gchar* webkitAccessibleActionGetKeybinding(AtkAction*, gint index);
+const gchar* webkitAccessibleActionGetName(AtkAction*, gint index);
+
+#endif // WebKitAccessibleInterfaceAction_h
diff --git a/Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp b/Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp
index fbc426d..eb83a14 100644
--- a/Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp
+++ b/Source/WebCore/accessibility/gtk/WebKitAccessibleWrapperAtk.cpp
@@ -63,6 +63,7 @@
#include "TextEncoding.h"
#include "TextIterator.h"
#include "WebKitAccessibleHyperlink.h"
+#include "WebKitAccessibleInterfaceAction.h"
#include "WebKitAccessibleUtil.h"
#include "htmlediting.h"
#include "visible_units.h"
@@ -109,11 +110,6 @@
return core(WEBKIT_ACCESSIBLE(object));
}
-static AccessibilityObject* core(AtkAction* action)
-{
- return core(ATK_OBJECT(action));
-}
-
static AccessibilityObject* core(AtkSelection* selection)
{
return core(ATK_OBJECT(selection));
@@ -868,47 +864,6 @@
return type_volatile;
}
-static gboolean webkit_accessible_action_do_action(AtkAction* action, gint i)
-{
- g_return_val_if_fail(!i, FALSE);
- return core(action)->performDefaultAction();
-}
-
-static gint webkit_accessible_action_get_n_actions(AtkAction* action)
-{
- return 1;
-}
-
-static const gchar* webkit_accessible_action_get_description(AtkAction* action, gint i)
-{
- g_return_val_if_fail(!i, 0);
- // TODO: Need a way to provide/localize action descriptions.
- notImplemented();
- return "";
-}
-
-static const gchar* webkit_accessible_action_get_keybinding(AtkAction* action, gint i)
-{
- g_return_val_if_fail(!i, 0);
- // FIXME: Construct a proper keybinding string.
- return returnString(core(action)->accessKey().string());
-}
-
-static const gchar* webkit_accessible_action_get_name(AtkAction* action, gint i)
-{
- g_return_val_if_fail(!i, 0);
- return returnString(core(action)->actionVerb());
-}
-
-static void atk_action_interface_init(AtkActionIface* iface)
-{
- iface->do_action = webkit_accessible_action_do_action;
- iface->get_n_actions = webkit_accessible_action_get_n_actions;
- iface->get_description = webkit_accessible_action_get_description;
- iface->get_keybinding = webkit_accessible_action_get_keybinding;
- iface->get_name = webkit_accessible_action_get_name;
-}
-
// Selection (for controls)
static AccessibilityObject* listObjectForSelection(AtkSelection* selection)
@@ -2484,8 +2439,7 @@
}
static const GInterfaceInfo AtkInterfacesInitFunctions[] = {
- {(GInterfaceInitFunc)atk_action_interface_init,
- (GInterfaceFinalizeFunc) 0, 0},
+ {reinterpret_cast<GInterfaceInitFunc>(webkitAccessibleActionInterfaceInit), 0, 0},
{(GInterfaceInitFunc)atk_selection_interface_init,
(GInterfaceFinalizeFunc) 0, 0},
{(GInterfaceInitFunc)atk_editable_text_interface_init,