summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshreeram.k <shreeram.k@samsung.com>2015-03-22 21:29:59 -0700
committerCommit bot <commit-bot@chromium.org>2015-03-23 04:30:29 +0000
commitbf7014cb8f24b69f601206e114edccbdda2f2f5f (patch)
treee9442bdbc27d6e8d0527ec27c0a5ee845c4c4817
parent496873f41543e6564ea0511d318cbbfbafde6f19 (diff)
downloadchromium_src-bf7014cb8f24b69f601206e114edccbdda2f2f5f.zip
chromium_src-bf7014cb8f24b69f601206e114edccbdda2f2f5f.tar.gz
chromium_src-bf7014cb8f24b69f601206e114edccbdda2f2f5f.tar.bz2
Implementing ATK state mapping for Chrome UI.
This CL includes implementation of ATK state mapping for chrome UI. Also, some roles has been added in this CL. BUG=463671 Review URL: https://codereview.chromium.org/1021933003 Cr-Commit-Position: refs/heads/master@{#321734}
-rw-r--r--ui/accessibility/platform/ax_platform_node_auralinux.cc55
-rw-r--r--ui/accessibility/platform/ax_platform_node_auralinux.h1
2 files changed, 54 insertions, 2 deletions
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.cc b/ui/accessibility/platform/ax_platform_node_auralinux.cc
index 3fed9e8..ad55def 100644
--- a/ui/accessibility/platform/ax_platform_node_auralinux.cc
+++ b/ui/accessibility/platform/ax_platform_node_auralinux.cc
@@ -45,6 +45,8 @@ struct _AXPlatformNodeAuraLinuxClass {
GType ax_platform_node_auralinux_get_type();
+static gpointer ax_platform_node_auralinux_parent_class = nullptr;
+
static ui::AXPlatformNodeAuraLinux* ToAXPlatformNodeAuraLinux(
AXPlatformNodeAuraLinuxObject* atk_object) {
if (!atk_object)
@@ -123,13 +125,28 @@ static AtkRole ax_platform_node_auralinux_get_role(AtkObject* atk_object) {
return obj->GetAtkRole();
}
+static AtkStateSet* ax_platform_node_auralinux_ref_state_set(
+ AtkObject* atk_object) {
+ ui::AXPlatformNodeAuraLinux* obj =
+ AtkObjectToAXPlatformNodeAuraLinux(atk_object);
+ AtkStateSet* state_set =
+ ATK_OBJECT_CLASS(ax_platform_node_auralinux_parent_class)->
+ ref_state_set(atk_object);
+
+ if (!obj) {
+ atk_state_set_add_state(state_set, ATK_STATE_DEFUNCT);
+ return state_set;
+ }
+ obj->GetAtkState(state_set);
+
+ return state_set;
+}
+
//
// The rest of the AXPlatformNodeAuraLinux code, not specific to one
// of the Atk* interfaces.
//
-static gpointer ax_platform_node_auralinux_parent_class = nullptr;
-
static void ax_platform_node_auralinux_init(AtkObject* atk_object,
gpointer data) {
if (ATK_OBJECT_CLASS(ax_platform_node_auralinux_parent_class)->initialize) {
@@ -157,6 +174,7 @@ static void ax_platform_node_auralinux_class_init(AtkObjectClass* klass) {
klass->get_n_children = ax_platform_node_auralinux_get_n_children;
klass->ref_child = ax_platform_node_auralinux_ref_child;
klass->get_role = ax_platform_node_auralinux_get_role;
+ klass->ref_state_set = ax_platform_node_auralinux_ref_state_set;
}
GType ax_platform_node_auralinux_get_type() {
@@ -241,10 +259,18 @@ AtkRole AXPlatformNodeAuraLinux::GetAtkRole() {
return ATK_ROLE_CHECK_BOX;
case ui::AX_ROLE_COMBO_BOX:
return ATK_ROLE_COMBO_BOX;
+ case ui::AX_ROLE_DIALOG:
+ return ATK_ROLE_DIALOG;
case ui::AX_ROLE_GROUP:
return ATK_ROLE_PANEL;
+ case ui::AX_ROLE_IMAGE:
+ return ATK_ROLE_IMAGE;
case ui::AX_ROLE_MENU_ITEM:
return ATK_ROLE_MENU_ITEM;
+ case ui::AX_ROLE_SCROLL_BAR:
+ return ATK_ROLE_SCROLL_BAR;
+ case ui::AX_ROLE_SLIDER:
+ return ATK_ROLE_SLIDER;
case ui::AX_ROLE_SPLITTER:
return ATK_ROLE_SEPARATOR;
case ui::AX_ROLE_STATIC_TEXT:
@@ -264,6 +290,31 @@ AtkRole AXPlatformNodeAuraLinux::GetAtkRole() {
}
}
+void AXPlatformNodeAuraLinux::GetAtkState(AtkStateSet* state_set) {
+ uint32 state = GetData().state;
+
+ if (state & (1 << ui::AX_STATE_CHECKED))
+ atk_state_set_add_state(state_set, ATK_STATE_CHECKED);
+ if (state & (1 << ui::AX_STATE_DEFAULT))
+ atk_state_set_add_state(state_set, ATK_STATE_DEFAULT);
+ if (state & (1 << ui::AX_STATE_EDITABLE))
+ atk_state_set_add_state(state_set, ATK_STATE_EDITABLE);
+ if (state & (1 << ui::AX_STATE_ENABLED))
+ atk_state_set_add_state(state_set, ATK_STATE_ENABLED);
+ if (state & (1 << ui::AX_STATE_EXPANDED))
+ atk_state_set_add_state(state_set, ATK_STATE_EXPANDED);
+ if (state & (1 << ui::AX_STATE_FOCUSABLE))
+ atk_state_set_add_state(state_set, ATK_STATE_FOCUSABLE);
+ if (state & (1 << ui::AX_STATE_FOCUSED))
+ atk_state_set_add_state(state_set, ATK_STATE_FOCUSED);
+ if (state & (1 << ui::AX_STATE_PRESSED))
+ atk_state_set_add_state(state_set, ATK_STATE_PRESSED);
+ if (state & (1 << ui::AX_STATE_SELECTABLE))
+ atk_state_set_add_state(state_set, ATK_STATE_SELECTABLE);
+ if (state & (1 << ui::AX_STATE_SELECTED))
+ atk_state_set_add_state(state_set, ATK_STATE_SELECTED);
+}
+
AXPlatformNodeAuraLinux::AXPlatformNodeAuraLinux()
: atk_object_(nullptr) {
}
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.h b/ui/accessibility/platform/ax_platform_node_auralinux.h
index eea1427..030a66a 100644
--- a/ui/accessibility/platform/ax_platform_node_auralinux.h
+++ b/ui/accessibility/platform/ax_platform_node_auralinux.h
@@ -23,6 +23,7 @@ class AXPlatformNodeAuraLinux : public AXPlatformNodeBase {
static AXPlatformNode* application() { return application_; }
AtkRole GetAtkRole();
+ void GetAtkState(AtkStateSet* state_set);
// AXPlatformNode overrides.
void Destroy() override;