| 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 |