Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(172)

Side by Side Diff: content/browser/accessibility/browser_accessibility.cc

Issue 1768753003: Implemented the reporting of text style and language information on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed test expectations. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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.h" 5 #include "content/browser/accessibility/browser_accessibility.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 uint32_t child_index) const { 245 uint32_t child_index) const {
246 if (!node_ || !manager_ || child_index >= InternalChildCount()) 246 if (!node_ || !manager_ || child_index >= InternalChildCount())
247 return nullptr; 247 return nullptr;
248 248
249 const auto child_node = node_->ChildAtIndex(child_index); 249 const auto child_node = node_->ChildAtIndex(child_index);
250 DCHECK(child_node); 250 DCHECK(child_node);
251 return manager_->GetFromAXNode(child_node); 251 return manager_->GetFromAXNode(child_node);
252 } 252 }
253 253
254 BrowserAccessibility* BrowserAccessibility::GetParent() const { 254 BrowserAccessibility* BrowserAccessibility::GetParent() const {
255 if (!node_ || !manager_) 255 if (!instance_active())
256 return NULL; 256 return nullptr;
257
257 ui::AXNode* parent = node_->parent(); 258 ui::AXNode* parent = node_->parent();
258 if (parent) 259 if (parent)
259 return manager_->GetFromAXNode(parent); 260 return manager_->GetFromAXNode(parent);
260 261
261 return manager_->GetParentNodeFromParentTree(); 262 return manager_->GetParentNodeFromParentTree();
262 } 263 }
263 264
264 BrowserAccessibility* BrowserAccessibility::InternalGetParent() const { 265 BrowserAccessibility* BrowserAccessibility::InternalGetParent() const {
265 if (!node_ || !manager_) 266 if (!node_ || !manager_)
266 return nullptr; 267 return nullptr;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 if (child_end < start) 378 if (child_end < start)
378 continue; 379 continue;
379 380
380 int overlap_start = std::max(start, child_start); 381 int overlap_start = std::max(start, child_start);
381 int overlap_end = std::min(end, child_end); 382 int overlap_end = std::min(end, child_end);
382 383
383 int local_start = overlap_start - child_start; 384 int local_start = overlap_start - child_start;
384 int local_end = overlap_end - child_start; 385 int local_end = overlap_end - child_start;
385 386
386 gfx::Rect child_rect = child->GetLocation(); 387 gfx::Rect child_rect = child->GetLocation();
387 int text_direction = child->GetIntAttribute( 388 auto text_direction = static_cast<ui::AXTextDirection>(
388 ui::AX_ATTR_TEXT_DIRECTION); 389 child->GetIntAttribute(ui::AX_ATTR_TEXT_DIRECTION));
389 const std::vector<int32_t>& character_offsets = 390 const std::vector<int32_t>& character_offsets =
390 child->GetIntListAttribute(ui::AX_ATTR_CHARACTER_OFFSETS); 391 child->GetIntListAttribute(ui::AX_ATTR_CHARACTER_OFFSETS);
391 int start_pixel_offset = 392 int start_pixel_offset =
392 local_start > 0 ? character_offsets[local_start - 1] : 0; 393 local_start > 0 ? character_offsets[local_start - 1] : 0;
393 int end_pixel_offset = 394 int end_pixel_offset =
394 local_end > 0 ? character_offsets[local_end - 1] : 0; 395 local_end > 0 ? character_offsets[local_end - 1] : 0;
395 396
396 gfx::Rect child_overlap_rect; 397 gfx::Rect child_overlap_rect;
397 switch (text_direction) { 398 switch (text_direction) {
398 case ui::AX_TEXT_DIRECTION_NONE: 399 case ui::AX_TEXT_DIRECTION_NONE:
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 float BrowserAccessibility::GetFloatAttribute( 651 float BrowserAccessibility::GetFloatAttribute(
651 ui::AXFloatAttribute attribute) const { 652 ui::AXFloatAttribute attribute) const {
652 return GetData().GetFloatAttribute(attribute); 653 return GetData().GetFloatAttribute(attribute);
653 } 654 }
654 655
655 bool BrowserAccessibility::GetFloatAttribute( 656 bool BrowserAccessibility::GetFloatAttribute(
656 ui::AXFloatAttribute attribute, float* value) const { 657 ui::AXFloatAttribute attribute, float* value) const {
657 return GetData().GetFloatAttribute(attribute, value); 658 return GetData().GetFloatAttribute(attribute, value);
658 } 659 }
659 660
661 bool BrowserAccessibility::HasInheritedStringAttribute(
662 ui::AXStringAttribute attribute) const {
663 if (!instance_active())
664 return false;
665
666 if (GetData().HasStringAttribute(attribute))
667 return true;
668 return GetParent() && GetParent()->HasInheritedStringAttribute(attribute);
669 }
670
671 const std::string& BrowserAccessibility::GetInheritedStringAttribute(
672 ui::AXStringAttribute attribute) const {
673 if (!instance_active())
674 return base::EmptyString();
675
676 const BrowserAccessibility* current_object = this;
677 do {
678 if (current_object->GetData().HasStringAttribute(attribute))
679 return current_object->GetData().GetStringAttribute(attribute);
680 current_object = current_object->GetParent();
681 } while (current_object);
682 return base::EmptyString();
683 }
684
685 bool BrowserAccessibility::GetInheritedStringAttribute(
686 ui::AXStringAttribute attribute,
687 std::string* value) const {
688 if (!instance_active()) {
689 *value = std::string();
690 return false;
691 }
692
693 if (GetData().GetStringAttribute(attribute, value))
694 return true;
695 return GetParent() &&
696 GetParent()->GetData().GetStringAttribute(attribute, value);
697 }
698
699 base::string16 BrowserAccessibility::GetInheritedString16Attribute(
700 ui::AXStringAttribute attribute) const {
701 if (!instance_active())
702 return base::string16();
703
704 const BrowserAccessibility* current_object = this;
705 do {
706 if (current_object->GetData().HasStringAttribute(attribute))
707 return current_object->GetData().GetString16Attribute(attribute);
708 current_object = current_object->GetParent();
709 } while (current_object);
710 return base::string16();
711 }
712
713 bool BrowserAccessibility::GetInheritedString16Attribute(
714 ui::AXStringAttribute attribute,
715 base::string16* value) const {
716 if (!instance_active()) {
717 *value = base::string16();
718 return false;
719 }
720
721 if (GetData().GetString16Attribute(attribute, value))
722 return true;
723 return GetParent() &&
724 GetParent()->GetData().GetString16Attribute(attribute, value);
725 }
726
660 bool BrowserAccessibility::HasIntAttribute( 727 bool BrowserAccessibility::HasIntAttribute(
661 ui::AXIntAttribute attribute) const { 728 ui::AXIntAttribute attribute) const {
662 return GetData().HasIntAttribute(attribute); 729 return GetData().HasIntAttribute(attribute);
663 } 730 }
664 731
665 int BrowserAccessibility::GetIntAttribute(ui::AXIntAttribute attribute) const { 732 int BrowserAccessibility::GetIntAttribute(ui::AXIntAttribute attribute) const {
666 return GetData().GetIntAttribute(attribute); 733 return GetData().GetIntAttribute(attribute);
667 } 734 }
668 735
669 bool BrowserAccessibility::GetIntAttribute( 736 bool BrowserAccessibility::GetIntAttribute(
(...skipping 14 matching lines...) Expand all
684 bool BrowserAccessibility::GetStringAttribute( 751 bool BrowserAccessibility::GetStringAttribute(
685 ui::AXStringAttribute attribute, std::string* value) const { 752 ui::AXStringAttribute attribute, std::string* value) const {
686 return GetData().GetStringAttribute(attribute, value); 753 return GetData().GetStringAttribute(attribute, value);
687 } 754 }
688 755
689 base::string16 BrowserAccessibility::GetString16Attribute( 756 base::string16 BrowserAccessibility::GetString16Attribute(
690 ui::AXStringAttribute attribute) const { 757 ui::AXStringAttribute attribute) const {
691 return GetData().GetString16Attribute(attribute); 758 return GetData().GetString16Attribute(attribute);
692 } 759 }
693 760
694 bool BrowserAccessibility::GetString16Attribute( 761 bool BrowserAccessibility::GetString16Attribute(ui::AXStringAttribute attribute,
695 ui::AXStringAttribute attribute, 762 base::string16* value) const {
696 base::string16* value) const {
697 return GetData().GetString16Attribute(attribute, value); 763 return GetData().GetString16Attribute(attribute, value);
698 } 764 }
699 765
700 bool BrowserAccessibility::HasIntListAttribute( 766 bool BrowserAccessibility::HasIntListAttribute(
701 ui::AXIntListAttribute attribute) const { 767 ui::AXIntListAttribute attribute) const {
702 return GetData().HasIntListAttribute(attribute); 768 return GetData().HasIntListAttribute(attribute);
703 } 769 }
704 770
705 const std::vector<int32_t>& BrowserAccessibility::GetIntListAttribute( 771 const std::vector<int32_t>& BrowserAccessibility::GetIntListAttribute(
706 ui::AXIntListAttribute attribute) const { 772 ui::AXIntListAttribute attribute) const {
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
978 } 1044 }
979 need_to_offset_web_area = true; 1045 need_to_offset_web_area = true;
980 } 1046 }
981 parent = parent->GetParent(); 1047 parent = parent->GetParent();
982 } 1048 }
983 1049
984 return bounds; 1050 return bounds;
985 } 1051 }
986 1052
987 } // namespace content 1053 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/accessibility/browser_accessibility.h ('k') | content/browser/accessibility/browser_accessibility_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698