OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012, Google Inc. All rights reserved. | 2 * Copyright (C) 2012, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 AccessibilityRole AXNodeObject::DetermineAccessibilityRole() { | 678 AccessibilityRole AXNodeObject::DetermineAccessibilityRole() { |
679 if (!GetNode()) | 679 if (!GetNode()) |
680 return kUnknownRole; | 680 return kUnknownRole; |
681 | 681 |
682 if ((aria_role_ = DetermineAriaRoleAttribute()) != kUnknownRole) | 682 if ((aria_role_ = DetermineAriaRoleAttribute()) != kUnknownRole) |
683 return aria_role_; | 683 return aria_role_; |
684 if (GetNode()->IsTextNode()) | 684 if (GetNode()->IsTextNode()) |
685 return kStaticTextRole; | 685 return kStaticTextRole; |
686 | 686 |
687 AccessibilityRole role = NativeAccessibilityRoleIgnoringAria(); | 687 AccessibilityRole role = NativeAccessibilityRoleIgnoringAria(); |
688 if (role != kUnknownRole) | 688 return role == kUnknownRole ? kGenericContainerRole : role; |
689 return role; | |
690 if (GetNode()->IsElementNode()) { | |
691 Element* element = ToElement(GetNode()); | |
692 // A generic element with tabIndex explicitly set gets GroupRole. | |
693 // The layout checks for focusability aren't critical here; a false | |
694 // positive would be harmless. | |
695 if (element->IsInCanvasSubtree() && element->SupportsFocus()) | |
696 return kGenericContainerRole; | |
697 } | |
698 return kUnknownRole; | |
699 } | 689 } |
700 | 690 |
701 AccessibilityRole AXNodeObject::DetermineAriaRoleAttribute() const { | 691 AccessibilityRole AXNodeObject::DetermineAriaRoleAttribute() const { |
702 const AtomicString& aria_role = | 692 const AtomicString& aria_role = |
703 GetAOMPropertyOrARIAAttribute(AOMStringProperty::kRole); | 693 GetAOMPropertyOrARIAAttribute(AOMStringProperty::kRole); |
704 if (aria_role.IsNull() || aria_role.IsEmpty()) | 694 if (aria_role.IsNull() || aria_role.IsEmpty()) |
705 return kUnknownRole; | 695 return kUnknownRole; |
706 | 696 |
707 AccessibilityRole role = AriaRoleToWebCoreRole(aria_role); | 697 AccessibilityRole role = AriaRoleToWebCoreRole(aria_role); |
708 | 698 |
(...skipping 2520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3229 return String(); | 3219 return String(); |
3230 return ToTextControlElement(node)->StrippedPlaceholder(); | 3220 return ToTextControlElement(node)->StrippedPlaceholder(); |
3231 } | 3221 } |
3232 | 3222 |
3233 DEFINE_TRACE(AXNodeObject) { | 3223 DEFINE_TRACE(AXNodeObject) { |
3234 visitor->Trace(node_); | 3224 visitor->Trace(node_); |
3235 AXObjectImpl::Trace(visitor); | 3225 AXObjectImpl::Trace(visitor); |
3236 } | 3226 } |
3237 | 3227 |
3238 } // namespace blink | 3228 } // namespace blink |
OLD | NEW |