OLD | NEW |
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/accessibility/browser_accessibility_auralinux.h" | 5 #include "content/browser/accessibility/browser_accessibility_auralinux.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
11 #include "content/browser/accessibility/browser_accessibility_manager_auralinux.
h" | 11 #include "content/browser/accessibility/browser_accessibility_manager_auralinux.
h" |
12 #include "content/common/accessibility_messages.h" | 12 #include "content/common/accessibility_messages.h" |
13 | 13 |
14 namespace content { | 14 namespace content { |
15 | 15 |
16 static gpointer browser_accessibility_parent_class = NULL; | 16 static gpointer browser_accessibility_parent_class = NULL; |
17 | 17 |
18 static BrowserAccessibilityAuraLinux* ToBrowserAccessibilityAuraLinux( | 18 static BrowserAccessibilityAuraLinux* ToBrowserAccessibilityAuraLinux( |
19 BrowserAccessibilityAtk* atk_object) { | 19 BrowserAccessibilityAtk* atk_object) { |
20 if (!atk_object) | 20 if (!atk_object) |
21 return NULL; | 21 return NULL; |
22 | 22 |
23 return atk_object->m_object; | 23 return atk_object->m_object; |
24 } | 24 } |
25 | 25 |
| 26 const BrowserAccessibilityAuraLinux* ToBrowserAccessibilityAuraLinux( |
| 27 const BrowserAccessibility* obj) { |
| 28 DCHECK(!obj || obj->IsNative()); |
| 29 return static_cast<const BrowserAccessibilityAuraLinux*>(obj); |
| 30 } |
| 31 |
| 32 BrowserAccessibilityAuraLinux* ToBrowserAccessibilityAuraLinux( |
| 33 BrowserAccessibility* obj) { |
| 34 DCHECK(!obj || obj->IsNative()); |
| 35 return static_cast<BrowserAccessibilityAuraLinux*>(obj); |
| 36 } |
| 37 |
26 // | 38 // |
27 // AtkAction interface. | 39 // AtkAction interface. |
28 // | 40 // |
29 | 41 |
30 static BrowserAccessibilityAuraLinux* ToBrowserAccessibilityAuraLinux( | 42 static BrowserAccessibilityAuraLinux* ToBrowserAccessibilityAuraLinux( |
31 AtkAction* atk_action) { | 43 AtkAction* atk_action) { |
32 if (!IS_BROWSER_ACCESSIBILITY(atk_action)) | 44 if (!IS_BROWSER_ACCESSIBILITY(atk_action)) |
33 return NULL; | 45 return NULL; |
34 | 46 |
35 return ToBrowserAccessibilityAuraLinux(BROWSER_ACCESSIBILITY(atk_action)); | 47 return ToBrowserAccessibilityAuraLinux(BROWSER_ACCESSIBILITY(atk_action)); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 | 145 |
134 gfx::Point point(x, y); | 146 gfx::Point point(x, y); |
135 if (!obj->GetGlobalBoundsRect().Contains(point)) | 147 if (!obj->GetGlobalBoundsRect().Contains(point)) |
136 return NULL; | 148 return NULL; |
137 | 149 |
138 BrowserAccessibility* result = obj->BrowserAccessibilityForPoint(point); | 150 BrowserAccessibility* result = obj->BrowserAccessibilityForPoint(point); |
139 if (!result) | 151 if (!result) |
140 return NULL; | 152 return NULL; |
141 | 153 |
142 AtkObject* atk_result = | 154 AtkObject* atk_result = |
143 result->ToBrowserAccessibilityAuraLinux()->GetAtkObject(); | 155 ToBrowserAccessibilityAuraLinux(result)->GetAtkObject(); |
144 g_object_ref(atk_result); | 156 g_object_ref(atk_result); |
145 return atk_result; | 157 return atk_result; |
146 } | 158 } |
147 | 159 |
148 static void browser_accessibility_get_extents(AtkComponent* atk_component, | 160 static void browser_accessibility_get_extents(AtkComponent* atk_component, |
149 gint* x, | 161 gint* x, |
150 gint* y, | 162 gint* y, |
151 gint* width, | 163 gint* width, |
152 gint* height, | 164 gint* height, |
153 AtkCoordType coord_type) { | 165 AtkCoordType coord_type) { |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 | 479 |
468 return obj->GetStringAttribute(ui::AX_ATTR_DESCRIPTION).c_str(); | 480 return obj->GetStringAttribute(ui::AX_ATTR_DESCRIPTION).c_str(); |
469 } | 481 } |
470 | 482 |
471 static AtkObject* browser_accessibility_get_parent(AtkObject* atk_object) { | 483 static AtkObject* browser_accessibility_get_parent(AtkObject* atk_object) { |
472 BrowserAccessibilityAuraLinux* obj = | 484 BrowserAccessibilityAuraLinux* obj = |
473 ToBrowserAccessibilityAuraLinux(atk_object); | 485 ToBrowserAccessibilityAuraLinux(atk_object); |
474 if (!obj) | 486 if (!obj) |
475 return NULL; | 487 return NULL; |
476 if (obj->GetParent()) | 488 if (obj->GetParent()) |
477 return obj->GetParent()->ToBrowserAccessibilityAuraLinux()->GetAtkObject(); | 489 return ToBrowserAccessibilityAuraLinux(obj->GetParent())->GetAtkObject(); |
478 | 490 |
479 BrowserAccessibilityManagerAuraLinux* manager = | 491 BrowserAccessibilityManagerAuraLinux* manager = |
480 static_cast<BrowserAccessibilityManagerAuraLinux*>(obj->manager()); | 492 static_cast<BrowserAccessibilityManagerAuraLinux*>(obj->manager()); |
481 return manager->parent_object(); | 493 return manager->parent_object(); |
482 } | 494 } |
483 | 495 |
484 static gint browser_accessibility_get_n_children(AtkObject* atk_object) { | 496 static gint browser_accessibility_get_n_children(AtkObject* atk_object) { |
485 BrowserAccessibilityAuraLinux* obj = | 497 BrowserAccessibilityAuraLinux* obj = |
486 ToBrowserAccessibilityAuraLinux(atk_object); | 498 ToBrowserAccessibilityAuraLinux(atk_object); |
487 if (!obj) | 499 if (!obj) |
488 return 0; | 500 return 0; |
489 | 501 |
490 return obj->PlatformChildCount(); | 502 return obj->PlatformChildCount(); |
491 } | 503 } |
492 | 504 |
493 static AtkObject* browser_accessibility_ref_child(AtkObject* atk_object, | 505 static AtkObject* browser_accessibility_ref_child(AtkObject* atk_object, |
494 gint index) { | 506 gint index) { |
495 BrowserAccessibilityAuraLinux* obj = | 507 BrowserAccessibilityAuraLinux* obj = |
496 ToBrowserAccessibilityAuraLinux(atk_object); | 508 ToBrowserAccessibilityAuraLinux(atk_object); |
497 if (!obj) | 509 if (!obj) |
498 return NULL; | 510 return NULL; |
499 | 511 |
500 if (index < 0 || index >= static_cast<gint>(obj->PlatformChildCount())) | 512 if (index < 0 || index >= static_cast<gint>(obj->PlatformChildCount())) |
501 return NULL; | 513 return NULL; |
502 | 514 |
503 AtkObject* result = obj->InternalGetChild(index) | 515 AtkObject* result = ToBrowserAccessibilityAuraLinux( |
504 ->ToBrowserAccessibilityAuraLinux() | 516 obj->InternalGetChild(index))->GetAtkObject(); |
505 ->GetAtkObject(); | |
506 g_object_ref(result); | 517 g_object_ref(result); |
507 return result; | 518 return result; |
508 } | 519 } |
509 | 520 |
510 static gint browser_accessibility_get_index_in_parent(AtkObject* atk_object) { | 521 static gint browser_accessibility_get_index_in_parent(AtkObject* atk_object) { |
511 BrowserAccessibilityAuraLinux* obj = | 522 BrowserAccessibilityAuraLinux* obj = |
512 ToBrowserAccessibilityAuraLinux(atk_object); | 523 ToBrowserAccessibilityAuraLinux(atk_object); |
513 if (!obj) | 524 if (!obj) |
514 return 0; | 525 return 0; |
515 return obj->GetIndexInParent(); | 526 return obj->GetIndexInParent(); |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
728 | 739 |
729 void browser_accessibility_detach(BrowserAccessibilityAtk* atk_object) { | 740 void browser_accessibility_detach(BrowserAccessibilityAtk* atk_object) { |
730 atk_object->m_object = NULL; | 741 atk_object->m_object = NULL; |
731 } | 742 } |
732 | 743 |
733 // static | 744 // static |
734 BrowserAccessibility* BrowserAccessibility::Create() { | 745 BrowserAccessibility* BrowserAccessibility::Create() { |
735 return new BrowserAccessibilityAuraLinux(); | 746 return new BrowserAccessibilityAuraLinux(); |
736 } | 747 } |
737 | 748 |
738 const BrowserAccessibilityAuraLinux* | |
739 BrowserAccessibility::ToBrowserAccessibilityAuraLinux() const { | |
740 return static_cast<const BrowserAccessibilityAuraLinux*>(this); | |
741 } | |
742 | |
743 BrowserAccessibilityAuraLinux* | |
744 BrowserAccessibility::ToBrowserAccessibilityAuraLinux() { | |
745 return static_cast<BrowserAccessibilityAuraLinux*>(this); | |
746 } | |
747 | |
748 BrowserAccessibilityAuraLinux::BrowserAccessibilityAuraLinux() | 749 BrowserAccessibilityAuraLinux::BrowserAccessibilityAuraLinux() |
749 : atk_object_(NULL) { | 750 : atk_object_(NULL) { |
750 } | 751 } |
751 | 752 |
752 BrowserAccessibilityAuraLinux::~BrowserAccessibilityAuraLinux() { | 753 BrowserAccessibilityAuraLinux::~BrowserAccessibilityAuraLinux() { |
753 browser_accessibility_detach(BROWSER_ACCESSIBILITY(atk_object_)); | 754 browser_accessibility_detach(BROWSER_ACCESSIBILITY(atk_object_)); |
754 if (atk_object_) | 755 if (atk_object_) |
755 g_object_unref(atk_object_); | 756 g_object_unref(atk_object_); |
756 } | 757 } |
757 | 758 |
(...skipping 17 matching lines...) Expand all Loading... |
775 atk_object_ = NULL; | 776 atk_object_ = NULL; |
776 } | 777 } |
777 } | 778 } |
778 | 779 |
779 if (!atk_object_) { | 780 if (!atk_object_) { |
780 interface_mask_ = GetInterfaceMaskFromObject(this); | 781 interface_mask_ = GetInterfaceMaskFromObject(this); |
781 atk_object_ = ATK_OBJECT(browser_accessibility_new(this)); | 782 atk_object_ = ATK_OBJECT(browser_accessibility_new(this)); |
782 if (this->GetParent()) { | 783 if (this->GetParent()) { |
783 atk_object_set_parent( | 784 atk_object_set_parent( |
784 atk_object_, | 785 atk_object_, |
785 this->GetParent()->ToBrowserAccessibilityAuraLinux()->GetAtkObject()); | 786 ToBrowserAccessibilityAuraLinux(this->GetParent())->GetAtkObject()); |
786 } | 787 } |
787 } | 788 } |
788 } | 789 } |
789 | 790 |
790 bool BrowserAccessibilityAuraLinux::IsNative() const { | 791 bool BrowserAccessibilityAuraLinux::IsNative() const { |
791 return true; | 792 return true; |
792 } | 793 } |
793 | 794 |
794 void BrowserAccessibilityAuraLinux::InitRoleAndState() { | 795 void BrowserAccessibilityAuraLinux::InitRoleAndState() { |
795 switch (GetRole()) { | 796 switch (GetRole()) { |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
933 case ui::AX_ROLE_TREE_ITEM: | 934 case ui::AX_ROLE_TREE_ITEM: |
934 atk_role_ = ATK_ROLE_TREE_ITEM; | 935 atk_role_ = ATK_ROLE_TREE_ITEM; |
935 break; | 936 break; |
936 default: | 937 default: |
937 atk_role_ = ATK_ROLE_UNKNOWN; | 938 atk_role_ = ATK_ROLE_UNKNOWN; |
938 break; | 939 break; |
939 } | 940 } |
940 } | 941 } |
941 | 942 |
942 } // namespace content | 943 } // namespace content |
OLD | NEW |