1 // Copyright (c) 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "content/browser/accessibility/browser_accessibility_auralinux.h"
7 #include "base/strings/utf_string_conversions.h"
8 #include "content/browser/accessibility/browser_accessibility_manager_auralinux.h"
9 #include "content/common/accessibility_messages.h"
13 static gpointer browser_accessibility_parent_class
= NULL
;
15 static BrowserAccessibilityAuraLinux
* ToBrowserAccessibilityAuraLinux(
16 BrowserAccessibilityAtk
* atk_object
) {
20 return atk_object
->m_object
;
24 // AtkAction interface.
27 static BrowserAccessibilityAuraLinux
* ToBrowserAccessibilityAuraLinux(
28 AtkAction
* atk_action
) {
29 if (!IS_BROWSER_ACCESSIBILITY(atk_action
))
32 return ToBrowserAccessibilityAuraLinux(BROWSER_ACCESSIBILITY(atk_action
));
35 static gboolean
browser_accessibility_do_action(AtkAction
* atk_action
,
37 g_return_val_if_fail(ATK_IS_ACTION(atk_action
), FALSE
);
38 g_return_val_if_fail(!index
, FALSE
);
40 BrowserAccessibilityAuraLinux
* obj
=
41 ToBrowserAccessibilityAuraLinux(atk_action
);
45 obj
->manager()->DoDefaultAction(*obj
);
50 static gint
browser_accessibility_get_n_actions(AtkAction
* atk_action
) {
51 g_return_val_if_fail(ATK_IS_ACTION(atk_action
), 0);
53 BrowserAccessibilityAuraLinux
* obj
=
54 ToBrowserAccessibilityAuraLinux(atk_action
);
61 static const gchar
* browser_accessibility_get_description(AtkAction
* atk_action
,
63 g_return_val_if_fail(ATK_IS_ACTION(atk_action
), 0);
64 BrowserAccessibilityAuraLinux
* obj
=
65 ToBrowserAccessibilityAuraLinux(atk_action
);
72 static const gchar
* browser_accessibility_get_name(AtkAction
* atk_action
,
74 g_return_val_if_fail(ATK_IS_ACTION(atk_action
), 0);
75 g_return_val_if_fail(!index
, 0);
76 BrowserAccessibilityAuraLinux
* obj
=
77 ToBrowserAccessibilityAuraLinux(atk_action
);
81 return obj
->GetStringAttribute(ui::AX_ATTR_ACTION
).c_str();
84 static const gchar
* browser_accessibility_get_keybinding(AtkAction
* atk_action
,
86 g_return_val_if_fail(ATK_IS_ACTION(atk_action
), 0);
87 g_return_val_if_fail(!index
, 0);
88 BrowserAccessibilityAuraLinux
* obj
=
89 ToBrowserAccessibilityAuraLinux(atk_action
);
93 return obj
->GetStringAttribute(ui::AX_ATTR_ACCESS_KEY
).c_str();
96 static void ActionInterfaceInit(AtkActionIface
* iface
) {
97 iface
->do_action
= browser_accessibility_do_action
;
98 iface
->get_n_actions
= browser_accessibility_get_n_actions
;
99 iface
->get_description
= browser_accessibility_get_description
;
100 iface
->get_name
= browser_accessibility_get_name
;
101 iface
->get_keybinding
= browser_accessibility_get_keybinding
;
104 static const GInterfaceInfo ActionInfo
= {
105 reinterpret_cast<GInterfaceInitFunc
>(ActionInterfaceInit
), 0, 0};
108 // AtkComponent interface.
111 static BrowserAccessibilityAuraLinux
* ToBrowserAccessibilityAuraLinux(
112 AtkComponent
* atk_component
) {
113 if (!IS_BROWSER_ACCESSIBILITY(atk_component
))
116 return ToBrowserAccessibilityAuraLinux(BROWSER_ACCESSIBILITY(atk_component
));
119 static AtkObject
* browser_accessibility_accessible_at_point(
120 AtkComponent
* atk_component
,
123 AtkCoordType coord_type
) {
124 g_return_val_if_fail(ATK_IS_COMPONENT(atk_component
), 0);
126 BrowserAccessibilityAuraLinux
* obj
=
127 ToBrowserAccessibilityAuraLinux(atk_component
);
131 gfx::Point
point(x
, y
);
132 if (!obj
->GetGlobalBoundsRect().Contains(point
))
135 BrowserAccessibility
* result
= obj
->BrowserAccessibilityForPoint(point
);
139 AtkObject
* atk_result
=
140 result
->ToBrowserAccessibilityAuraLinux()->GetAtkObject();
141 g_object_ref(atk_result
);
145 static void browser_accessibility_get_extents(AtkComponent
* atk_component
,
150 AtkCoordType coord_type
) {
151 g_return_if_fail(ATK_IS_COMPONENT(atk_component
));
153 BrowserAccessibilityAuraLinux
* obj
=
154 ToBrowserAccessibilityAuraLinux(atk_component
);
158 gfx::Rect bounds
= obj
->GetGlobalBoundsRect();
164 *width
= bounds
.width();
166 *height
= bounds
.height();
169 static gboolean
browser_accessibility_grab_focus(AtkComponent
* atk_component
) {
170 g_return_val_if_fail(ATK_IS_COMPONENT(atk_component
), FALSE
);
172 BrowserAccessibilityAuraLinux
* obj
=
173 ToBrowserAccessibilityAuraLinux(atk_component
);
177 obj
->manager()->SetFocus(obj
, true);
181 static void ComponentInterfaceInit(AtkComponentIface
* iface
) {
182 iface
->ref_accessible_at_point
= browser_accessibility_accessible_at_point
;
183 iface
->get_extents
= browser_accessibility_get_extents
;
184 iface
->grab_focus
= browser_accessibility_grab_focus
;
187 static const GInterfaceInfo ComponentInfo
= {
188 reinterpret_cast<GInterfaceInitFunc
>(ComponentInterfaceInit
),
193 // AtkDocument interface.
196 static BrowserAccessibilityAuraLinux
* ToBrowserAccessibilityAuraLinux(
197 AtkDocument
* atk_doc
) {
198 if (!IS_BROWSER_ACCESSIBILITY(atk_doc
))
201 return ToBrowserAccessibilityAuraLinux(BROWSER_ACCESSIBILITY(atk_doc
));
204 static const gchar
* GetDocumentAttributeValue(
205 BrowserAccessibilityAuraLinux
* obj
,
206 const gchar
* attribute
) {
207 if (!g_ascii_strcasecmp(attribute
, "DocType"))
208 return obj
->GetStringAttribute(ui::AX_ATTR_DOC_DOCTYPE
).c_str();
209 else if (!g_ascii_strcasecmp(attribute
, "MimeType"))
210 return obj
->GetStringAttribute(ui::AX_ATTR_DOC_MIMETYPE
).c_str();
211 else if (!g_ascii_strcasecmp(attribute
, "Title"))
212 return obj
->GetStringAttribute(ui::AX_ATTR_DOC_TITLE
).c_str();
213 else if (!g_ascii_strcasecmp(attribute
, "URI"))
214 return obj
->GetStringAttribute(ui::AX_ATTR_DOC_URL
).c_str();
219 AtkAttributeSet
* SetAtkAttributeSet(AtkAttributeSet
* attribute_set
,
222 AtkAttribute
* attribute
=
223 static_cast<AtkAttribute
*>(g_malloc(sizeof(AtkAttribute
)));
224 attribute
->name
= g_strdup(name
);
225 attribute
->value
= g_strdup(value
);
226 attribute_set
= g_slist_prepend(attribute_set
, attribute
);
227 return attribute_set
;
230 static const gchar
* browser_accessibility_get_attribute_value(
231 AtkDocument
* atk_doc
,
232 const gchar
* attribute
) {
233 g_return_val_if_fail(ATK_IS_DOCUMENT(atk_doc
), 0);
234 BrowserAccessibilityAuraLinux
* obj
= ToBrowserAccessibilityAuraLinux(atk_doc
);
238 return GetDocumentAttributeValue(obj
, attribute
);
241 static AtkAttributeSet
* browser_accessibility_get_attributes(
242 AtkDocument
* atk_doc
) {
243 g_return_val_if_fail(ATK_IS_DOCUMENT(atk_doc
), 0);
244 BrowserAccessibilityAuraLinux
* obj
= ToBrowserAccessibilityAuraLinux(atk_doc
);
248 AtkAttributeSet
* attribute_set
= 0;
249 const gchar
* doc_attributes
[] = {"DocType", "MimeType", "Title", "URI"};
250 const gchar
* value
= 0;
252 for (unsigned i
= 0; i
< G_N_ELEMENTS(doc_attributes
); i
++) {
253 value
= GetDocumentAttributeValue(obj
, doc_attributes
[i
]);
256 SetAtkAttributeSet(attribute_set
, doc_attributes
[i
], value
);
259 return attribute_set
;
262 static void DocumentInterfaceInit(AtkDocumentIface
* iface
) {
263 iface
->get_document_attribute_value
=
264 browser_accessibility_get_attribute_value
;
265 iface
->get_document_attributes
= browser_accessibility_get_attributes
;
268 static const GInterfaceInfo DocumentInfo
= {
269 reinterpret_cast<GInterfaceInitFunc
>(DocumentInterfaceInit
), 0, 0};
272 // AtkValue interface.
275 static BrowserAccessibilityAuraLinux
* ToBrowserAccessibilityAuraLinux(
276 AtkValue
* atk_object
) {
277 if (!IS_BROWSER_ACCESSIBILITY(atk_object
))
280 return ToBrowserAccessibilityAuraLinux(BROWSER_ACCESSIBILITY(atk_object
));
283 static float GetStepAttribute(BrowserAccessibilityAuraLinux
* obj
) {
284 // TODO(shreeram.k): Get Correct value of Step attribute.
288 static void browser_accessibility_get_current_value(AtkValue
* atk_value
,
290 g_return_if_fail(ATK_VALUE(atk_value
));
292 BrowserAccessibilityAuraLinux
* obj
=
293 ToBrowserAccessibilityAuraLinux(atk_value
);
298 if (obj
->GetFloatAttribute(ui::AX_ATTR_VALUE_FOR_RANGE
, &float_val
)) {
299 memset(value
, 0, sizeof(*value
));
300 g_value_init(value
, G_TYPE_FLOAT
);
301 g_value_set_float(value
, float_val
);
305 static void browser_accessibility_get_minimum_value(AtkValue
* atk_value
,
307 g_return_if_fail(ATK_VALUE(atk_value
));
309 BrowserAccessibilityAuraLinux
* obj
=
310 ToBrowserAccessibilityAuraLinux(atk_value
);
315 if (obj
->GetFloatAttribute(ui::AX_ATTR_MIN_VALUE_FOR_RANGE
, &float_val
)) {
316 memset(value
, 0, sizeof(*value
));
317 g_value_init(value
, G_TYPE_FLOAT
);
318 g_value_set_float(value
, float_val
);
322 static void browser_accessibility_get_maximum_value(AtkValue
* atk_value
,
324 g_return_if_fail(ATK_VALUE(atk_value
));
326 BrowserAccessibilityAuraLinux
* obj
=
327 ToBrowserAccessibilityAuraLinux(atk_value
);
332 if (obj
->GetFloatAttribute(ui::AX_ATTR_MAX_VALUE_FOR_RANGE
, &float_val
)) {
333 memset(value
, 0, sizeof(*value
));
334 g_value_init(value
, G_TYPE_FLOAT
);
335 g_value_set_float(value
, float_val
);
339 static void browser_accessibility_get_minimum_increment(AtkValue
* atk_value
,
341 g_return_if_fail(ATK_VALUE(atk_value
));
343 memset(gValue
, 0, sizeof(GValue
));
344 g_value_init(gValue
, G_TYPE_FLOAT
);
346 BrowserAccessibilityAuraLinux
* obj
=
347 ToBrowserAccessibilityAuraLinux(atk_value
);
351 g_value_set_float(gValue
, GetStepAttribute(obj
));
354 static void ValueInterfaceInit(AtkValueIface
* iface
) {
355 iface
->get_current_value
= browser_accessibility_get_current_value
;
356 iface
->get_minimum_value
= browser_accessibility_get_minimum_value
;
357 iface
->get_maximum_value
= browser_accessibility_get_maximum_value
;
358 iface
->get_minimum_increment
= browser_accessibility_get_minimum_increment
;
361 static const GInterfaceInfo ValueInfo
= {
362 reinterpret_cast<GInterfaceInitFunc
>(ValueInterfaceInit
),
367 // AtkObject interface
370 static BrowserAccessibilityAuraLinux
* ToBrowserAccessibilityAuraLinux(
371 AtkObject
* atk_object
) {
372 if (!IS_BROWSER_ACCESSIBILITY(atk_object
))
375 return ToBrowserAccessibilityAuraLinux(BROWSER_ACCESSIBILITY(atk_object
));
378 static const gchar
* browser_accessibility_get_name(AtkObject
* atk_object
) {
379 BrowserAccessibilityAuraLinux
* obj
=
380 ToBrowserAccessibilityAuraLinux(atk_object
);
384 return obj
->GetStringAttribute(ui::AX_ATTR_NAME
).c_str();
387 static const gchar
* browser_accessibility_get_description(
388 AtkObject
* atk_object
) {
389 BrowserAccessibilityAuraLinux
* obj
=
390 ToBrowserAccessibilityAuraLinux(atk_object
);
394 return obj
->GetStringAttribute(ui::AX_ATTR_DESCRIPTION
).c_str();
397 static AtkObject
* browser_accessibility_get_parent(AtkObject
* atk_object
) {
398 BrowserAccessibilityAuraLinux
* obj
=
399 ToBrowserAccessibilityAuraLinux(atk_object
);
402 if (obj
->GetParent())
403 return obj
->GetParent()->ToBrowserAccessibilityAuraLinux()->GetAtkObject();
405 BrowserAccessibilityManagerAuraLinux
* manager
=
406 static_cast<BrowserAccessibilityManagerAuraLinux
*>(obj
->manager());
407 return manager
->parent_object();
410 static gint
browser_accessibility_get_n_children(AtkObject
* atk_object
) {
411 BrowserAccessibilityAuraLinux
* obj
=
412 ToBrowserAccessibilityAuraLinux(atk_object
);
416 return obj
->PlatformChildCount();
419 static AtkObject
* browser_accessibility_ref_child(AtkObject
* atk_object
,
421 BrowserAccessibilityAuraLinux
* obj
=
422 ToBrowserAccessibilityAuraLinux(atk_object
);
426 if (index
< 0 || index
>= static_cast<gint
>(obj
->PlatformChildCount()))
429 AtkObject
* result
= obj
->InternalGetChild(index
)
430 ->ToBrowserAccessibilityAuraLinux()
432 g_object_ref(result
);
436 static gint
browser_accessibility_get_index_in_parent(AtkObject
* atk_object
) {
437 BrowserAccessibilityAuraLinux
* obj
=
438 ToBrowserAccessibilityAuraLinux(atk_object
);
441 return obj
->GetIndexInParent();
444 static AtkAttributeSet
* browser_accessibility_get_attributes(
445 AtkObject
* atk_object
) {
449 static AtkRole
browser_accessibility_get_role(AtkObject
* atk_object
) {
450 BrowserAccessibilityAuraLinux
* obj
=
451 ToBrowserAccessibilityAuraLinux(atk_object
);
453 return ATK_ROLE_INVALID
;
454 return obj
->atk_role();
457 static AtkStateSet
* browser_accessibility_ref_state_set(AtkObject
* atk_object
) {
458 BrowserAccessibilityAuraLinux
* obj
=
459 ToBrowserAccessibilityAuraLinux(atk_object
);
462 AtkStateSet
* state_set
= ATK_OBJECT_CLASS(browser_accessibility_parent_class
)
463 ->ref_state_set(atk_object
);
464 int32 state
= obj
->GetState();
466 if (state
& (1 << ui::AX_STATE_FOCUSABLE
))
467 atk_state_set_add_state(state_set
, ATK_STATE_FOCUSABLE
);
468 if (obj
->manager()->GetFocus(NULL
) == obj
)
469 atk_state_set_add_state(state_set
, ATK_STATE_FOCUSED
);
470 if (state
& (1 << ui::AX_STATE_ENABLED
))
471 atk_state_set_add_state(state_set
, ATK_STATE_ENABLED
);
476 static AtkRelationSet
* browser_accessibility_ref_relation_set(
477 AtkObject
* atk_object
) {
478 AtkRelationSet
* relation_set
=
479 ATK_OBJECT_CLASS(browser_accessibility_parent_class
)
480 ->ref_relation_set(atk_object
);
485 // The rest of the BrowserAccessibilityAuraLinux code, not specific to one
486 // of the Atk* interfaces.
489 static void browser_accessibility_init(AtkObject
* atk_object
, gpointer data
) {
490 if (ATK_OBJECT_CLASS(browser_accessibility_parent_class
)->initialize
) {
491 ATK_OBJECT_CLASS(browser_accessibility_parent_class
)
492 ->initialize(atk_object
, data
);
495 BROWSER_ACCESSIBILITY(atk_object
)->m_object
=
496 reinterpret_cast<BrowserAccessibilityAuraLinux
*>(data
);
499 static void browser_accessibility_finalize(GObject
* atk_object
) {
500 G_OBJECT_CLASS(browser_accessibility_parent_class
)->finalize(atk_object
);
503 static void browser_accessibility_class_init(AtkObjectClass
* klass
) {
504 GObjectClass
* gobject_class
= G_OBJECT_CLASS(klass
);
505 browser_accessibility_parent_class
= g_type_class_peek_parent(klass
);
507 gobject_class
->finalize
= browser_accessibility_finalize
;
508 klass
->initialize
= browser_accessibility_init
;
509 klass
->get_name
= browser_accessibility_get_name
;
510 klass
->get_description
= browser_accessibility_get_description
;
511 klass
->get_parent
= browser_accessibility_get_parent
;
512 klass
->get_n_children
= browser_accessibility_get_n_children
;
513 klass
->ref_child
= browser_accessibility_ref_child
;
514 klass
->get_role
= browser_accessibility_get_role
;
515 klass
->ref_state_set
= browser_accessibility_ref_state_set
;
516 klass
->get_index_in_parent
= browser_accessibility_get_index_in_parent
;
517 klass
->get_attributes
= browser_accessibility_get_attributes
;
518 klass
->ref_relation_set
= browser_accessibility_ref_relation_set
;
521 GType
browser_accessibility_get_type() {
522 static volatile gsize type_volatile
= 0;
524 #if !GLIB_CHECK_VERSION(2, 36, 0)
528 if (g_once_init_enter(&type_volatile
)) {
529 static const GTypeInfo tinfo
= {
530 sizeof(BrowserAccessibilityAtkClass
),
532 (GBaseFinalizeFunc
)0,
533 (GClassInitFunc
)browser_accessibility_class_init
,
534 (GClassFinalizeFunc
)0,
536 sizeof(BrowserAccessibilityAtk
), /* instance size */
537 0, /* nb preallocs */
538 (GInstanceInitFunc
)0,
542 GType type
= g_type_register_static(ATK_TYPE_OBJECT
, "BrowserAccessibility",
543 &tinfo
, GTypeFlags(0));
544 g_once_init_leave(&type_volatile
, type
);
547 return type_volatile
;
550 static const char* GetUniqueAccessibilityTypeName(int interface_mask
) {
551 // 20 characters is enough for "Chrome%x" with any integer value.
552 static char name
[20];
553 snprintf(name
, sizeof(name
), "Chrome%x", interface_mask
);
558 ATK_ACTION_INTERFACE
,
559 ATK_COMPONENT_INTERFACE
,
560 ATK_DOCUMENT_INTERFACE
,
561 ATK_EDITABLE_TEXT_INTERFACE
,
562 ATK_HYPERLINK_INTERFACE
,
563 ATK_HYPERTEXT_INTERFACE
,
565 ATK_SELECTION_INTERFACE
,
571 static int GetInterfaceMaskFromObject(BrowserAccessibilityAuraLinux
* obj
) {
572 int interface_mask
= 0;
574 // Component interface is always supported.
575 interface_mask
|= 1 << ATK_COMPONENT_INTERFACE
;
577 // Action interface is basic one. It just relays on executing default action
579 interface_mask
|= 1 << ATK_ACTION_INTERFACE
;
582 int role
= obj
->GetRole();
583 if (role
== ui::AX_ROLE_PROGRESS_INDICATOR
||
584 role
== ui::AX_ROLE_SCROLL_BAR
|| role
== ui::AX_ROLE_SLIDER
) {
585 interface_mask
|= 1 << ATK_VALUE_INTERFACE
;
588 // Document Interface
589 if (role
== ui::AX_ROLE_DOCUMENT
|| role
== ui::AX_ROLE_ROOT_WEB_AREA
||
590 role
== ui::AX_ROLE_WEB_AREA
)
591 interface_mask
|= 1 << ATK_DOCUMENT_INTERFACE
;
593 return interface_mask
;
596 static GType
GetAccessibilityTypeFromObject(
597 BrowserAccessibilityAuraLinux
* obj
) {
598 static const GTypeInfo type_info
= {
599 sizeof(BrowserAccessibilityAtkClass
),
601 (GBaseFinalizeFunc
)0,
603 (GClassFinalizeFunc
)0,
605 sizeof(BrowserAccessibilityAtk
), /* instance size */
606 0, /* nb preallocs */
607 (GInstanceInitFunc
)0,
611 int interface_mask
= GetInterfaceMaskFromObject(obj
);
612 const char* atk_type_name
= GetUniqueAccessibilityTypeName(interface_mask
);
613 GType type
= g_type_from_name(atk_type_name
);
617 type
= g_type_register_static(BROWSER_ACCESSIBILITY_TYPE
, atk_type_name
,
618 &type_info
, GTypeFlags(0));
619 if (interface_mask
& (1 << ATK_ACTION_INTERFACE
))
620 g_type_add_interface_static(type
, ATK_TYPE_ACTION
, &ActionInfo
);
621 if (interface_mask
& (1 << ATK_COMPONENT_INTERFACE
))
622 g_type_add_interface_static(type
, ATK_TYPE_COMPONENT
, &ComponentInfo
);
623 if (interface_mask
& (1 << ATK_DOCUMENT_INTERFACE
))
624 g_type_add_interface_static(type
, ATK_TYPE_DOCUMENT
, &DocumentInfo
);
625 if (interface_mask
& (1 << ATK_VALUE_INTERFACE
))
626 g_type_add_interface_static(type
, ATK_TYPE_VALUE
, &ValueInfo
);
631 BrowserAccessibilityAtk
* browser_accessibility_new(
632 BrowserAccessibilityAuraLinux
* obj
) {
633 GType type
= GetAccessibilityTypeFromObject(obj
);
634 AtkObject
* atk_object
= static_cast<AtkObject
*>(g_object_new(type
, 0));
636 atk_object_initialize(atk_object
, obj
);
638 return BROWSER_ACCESSIBILITY(atk_object
);
641 void browser_accessibility_detach(BrowserAccessibilityAtk
* atk_object
) {
642 atk_object
->m_object
= NULL
;
646 BrowserAccessibility
* BrowserAccessibility::Create() {
647 return new BrowserAccessibilityAuraLinux();
650 BrowserAccessibilityAuraLinux
*
651 BrowserAccessibility::ToBrowserAccessibilityAuraLinux() {
652 return static_cast<BrowserAccessibilityAuraLinux
*>(this);
655 BrowserAccessibilityAuraLinux::BrowserAccessibilityAuraLinux()
656 : atk_object_(NULL
) {
659 BrowserAccessibilityAuraLinux::~BrowserAccessibilityAuraLinux() {
660 browser_accessibility_detach(BROWSER_ACCESSIBILITY(atk_object_
));
662 g_object_unref(atk_object_
);
665 AtkObject
* BrowserAccessibilityAuraLinux::GetAtkObject() const {
666 if (!G_IS_OBJECT(atk_object_
))
671 void BrowserAccessibilityAuraLinux::OnDataChanged() {
672 BrowserAccessibility::OnDataChanged();
676 // If the object's role changes and that causes its
677 // interface mask to change, we need to create a new
679 int interface_mask
= GetInterfaceMaskFromObject(this);
680 if (interface_mask
!= interface_mask_
) {
681 g_object_unref(atk_object_
);
687 interface_mask_
= GetInterfaceMaskFromObject(this);
688 atk_object_
= ATK_OBJECT(browser_accessibility_new(this));
689 if (this->GetParent()) {
690 atk_object_set_parent(
692 this->GetParent()->ToBrowserAccessibilityAuraLinux()->GetAtkObject());
697 bool BrowserAccessibilityAuraLinux::IsNative() const {
701 void BrowserAccessibilityAuraLinux::InitRoleAndState() {
703 case ui::AX_ROLE_DOCUMENT
:
704 case ui::AX_ROLE_ROOT_WEB_AREA
:
705 case ui::AX_ROLE_WEB_AREA
:
706 atk_role_
= ATK_ROLE_DOCUMENT_WEB
;
708 case ui::AX_ROLE_ALERT
:
709 case ui::AX_ROLE_ALERT_DIALOG
:
710 atk_role_
= ATK_ROLE_ALERT
;
712 case ui::AX_ROLE_APPLICATION
:
713 atk_role_
= ATK_ROLE_APPLICATION
;
715 case ui::AX_ROLE_BUTTON
:
716 atk_role_
= ATK_ROLE_PUSH_BUTTON
;
718 case ui::AX_ROLE_CANVAS
:
719 atk_role_
= ATK_ROLE_CANVAS
;
721 case ui::AX_ROLE_CAPTION
:
722 atk_role_
= ATK_ROLE_CAPTION
;
724 case ui::AX_ROLE_CHECK_BOX
:
725 atk_role_
= ATK_ROLE_CHECK_BOX
;
727 case ui::AX_ROLE_COLOR_WELL
:
728 atk_role_
= ATK_ROLE_COLOR_CHOOSER
;
730 case ui::AX_ROLE_COLUMN_HEADER
:
731 atk_role_
= ATK_ROLE_COLUMN_HEADER
;
733 case ui::AX_ROLE_COMBO_BOX
:
734 atk_role_
= ATK_ROLE_COMBO_BOX
;
736 case ui::AX_ROLE_DATE
:
737 case ui::AX_ROLE_DATE_TIME
:
738 atk_role_
= ATK_ROLE_DATE_EDITOR
;
740 case ui::AX_ROLE_DIALOG
:
741 atk_role_
= ATK_ROLE_DIALOG
;
743 case ui::AX_ROLE_DIV
:
744 case ui::AX_ROLE_GROUP
:
745 atk_role_
= ATK_ROLE_SECTION
;
747 case ui::AX_ROLE_FORM
:
748 atk_role_
= ATK_ROLE_FORM
;
750 case ui::AX_ROLE_IMAGE
:
751 atk_role_
= ATK_ROLE_IMAGE
;
753 case ui::AX_ROLE_IMAGE_MAP
:
754 atk_role_
= ATK_ROLE_IMAGE_MAP
;
756 case ui::AX_ROLE_LABEL_TEXT
:
757 atk_role_
= ATK_ROLE_LABEL
;
759 case ui::AX_ROLE_LINK
:
760 atk_role_
= ATK_ROLE_LINK
;
762 case ui::AX_ROLE_LIST
:
763 atk_role_
= ATK_ROLE_LIST
;
765 case ui::AX_ROLE_LIST_BOX
:
766 atk_role_
= ATK_ROLE_LIST_BOX
;
768 case ui::AX_ROLE_LIST_ITEM
:
769 atk_role_
= ATK_ROLE_LIST_ITEM
;
771 case ui::AX_ROLE_MENU
:
772 atk_role_
= ATK_ROLE_MENU
;
774 case ui::AX_ROLE_MENU_BAR
:
775 atk_role_
= ATK_ROLE_MENU_BAR
;
777 case ui::AX_ROLE_MENU_ITEM
:
778 atk_role_
= ATK_ROLE_MENU_ITEM
;
780 case ui::AX_ROLE_MENU_ITEM_CHECK_BOX
:
781 atk_role_
= ATK_ROLE_CHECK_MENU_ITEM
;
783 case ui::AX_ROLE_MENU_ITEM_RADIO
:
784 atk_role_
= ATK_ROLE_RADIO_MENU_ITEM
;
786 case ui::AX_ROLE_METER
:
787 atk_role_
= ATK_ROLE_PROGRESS_BAR
;
789 case ui::AX_ROLE_PARAGRAPH
:
790 atk_role_
= ATK_ROLE_PARAGRAPH
;
792 case ui::AX_ROLE_RADIO_BUTTON
:
793 atk_role_
= ATK_ROLE_RADIO_BUTTON
;
795 case ui::AX_ROLE_ROW_HEADER
:
796 atk_role_
= ATK_ROLE_ROW_HEADER
;
798 case ui::AX_ROLE_SCROLL_BAR
:
799 atk_role_
= ATK_ROLE_SCROLL_BAR
;
801 case ui::AX_ROLE_SLIDER
:
802 atk_role_
= ATK_ROLE_SLIDER
;
804 case ui::AX_ROLE_SPIN_BUTTON
:
805 atk_role_
= ATK_ROLE_SPIN_BUTTON
;
807 case ui::AX_ROLE_SPLITTER
:
808 atk_role_
= ATK_ROLE_SEPARATOR
;
810 case ui::AX_ROLE_STATIC_TEXT
:
811 atk_role_
= ATK_ROLE_TEXT
;
813 case ui::AX_ROLE_STATUS
:
814 atk_role_
= ATK_ROLE_STATUSBAR
;
816 case ui::AX_ROLE_TAB
:
817 atk_role_
= ATK_ROLE_PAGE_TAB
;
819 case ui::AX_ROLE_TABLE
:
820 atk_role_
= ATK_ROLE_TABLE
;
822 case ui::AX_ROLE_TAB_LIST
:
823 atk_role_
= ATK_ROLE_PAGE_TAB_LIST
;
825 case ui::AX_ROLE_TOGGLE_BUTTON
:
826 atk_role_
= ATK_ROLE_TOGGLE_BUTTON
;
828 case ui::AX_ROLE_TOOLBAR
:
829 atk_role_
= ATK_ROLE_TOOL_BAR
;
831 case ui::AX_ROLE_TOOLTIP
:
832 atk_role_
= ATK_ROLE_TOOL_TIP
;
834 case ui::AX_ROLE_TEXT_FIELD
:
835 atk_role_
= ATK_ROLE_ENTRY
;
837 case ui::AX_ROLE_TREE
:
838 atk_role_
= ATK_ROLE_TREE
;
840 case ui::AX_ROLE_TREE_ITEM
:
841 atk_role_
= ATK_ROLE_TREE_ITEM
;
844 atk_role_
= ATK_ROLE_UNKNOWN
;
849 } // namespace content