| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple 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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 | 66 |
| 67 return ListBoxOptionRole; | 67 return ListBoxOptionRole; |
| 68 } | 68 } |
| 69 | 69 |
| 70 bool AXListBoxOption::isParentPresentationalRole() const | 70 bool AXListBoxOption::isParentPresentationalRole() const |
| 71 { | 71 { |
| 72 AXObject* parent = parentObject(); | 72 AXObject* parent = parentObject(); |
| 73 if (!parent) | 73 if (!parent) |
| 74 return false; | 74 return false; |
| 75 | 75 |
| 76 LayoutObject* layoutObject = parent->layoutObject(); | 76 LayoutObject* layoutObject = parent->getLayoutObject(); |
| 77 if (!layoutObject) | 77 if (!layoutObject) |
| 78 return false; | 78 return false; |
| 79 | 79 |
| 80 if (layoutObject->isListBox() && parent->hasInheritedPresentationalRole()) | 80 if (layoutObject->isListBox() && parent->hasInheritedPresentationalRole()) |
| 81 return true; | 81 return true; |
| 82 | 82 |
| 83 return false; | 83 return false; |
| 84 } | 84 } |
| 85 | 85 |
| 86 bool AXListBoxOption::isEnabled() const | 86 bool AXListBoxOption::isEnabled() const |
| 87 { | 87 { |
| 88 if (!node()) | 88 if (!getNode()) |
| 89 return false; | 89 return false; |
| 90 | 90 |
| 91 if (equalIgnoringCase(getAttribute(aria_disabledAttr), "true")) | 91 if (equalIgnoringCase(getAttribute(aria_disabledAttr), "true")) |
| 92 return false; | 92 return false; |
| 93 | 93 |
| 94 if (toElement(node())->hasAttribute(disabledAttr)) | 94 if (toElement(getNode())->hasAttribute(disabledAttr)) |
| 95 return false; | 95 return false; |
| 96 | 96 |
| 97 return true; | 97 return true; |
| 98 } | 98 } |
| 99 | 99 |
| 100 bool AXListBoxOption::isSelected() const | 100 bool AXListBoxOption::isSelected() const |
| 101 { | 101 { |
| 102 return isHTMLOptionElement(node()) && toHTMLOptionElement(node())->selected(
); | 102 return isHTMLOptionElement(getNode()) && toHTMLOptionElement(getNode())->sel
ected(); |
| 103 } | 103 } |
| 104 | 104 |
| 105 bool AXListBoxOption::isSelectedOptionActive() const | 105 bool AXListBoxOption::isSelectedOptionActive() const |
| 106 { | 106 { |
| 107 HTMLSelectElement* listBoxParentNode = listBoxOptionParentNode(); | 107 HTMLSelectElement* listBoxParentNode = listBoxOptionParentNode(); |
| 108 if (!listBoxParentNode) | 108 if (!listBoxParentNode) |
| 109 return false; | 109 return false; |
| 110 | 110 |
| 111 return listBoxParentNode->activeSelectionEndListIndex() == listBoxOptionInde
x(); | 111 return listBoxParentNode->activeSelectionEndListIndex() == listBoxOptionInde
x(); |
| 112 } | 112 } |
| 113 | 113 |
| 114 bool AXListBoxOption::computeAccessibilityIsIgnored(IgnoredReasons* ignoredReaso
ns) const | 114 bool AXListBoxOption::computeAccessibilityIsIgnored(IgnoredReasons* ignoredReaso
ns) const |
| 115 { | 115 { |
| 116 if (!node()) | 116 if (!getNode()) |
| 117 return true; | 117 return true; |
| 118 | 118 |
| 119 if (accessibilityIsIgnoredByDefault(ignoredReasons)) | 119 if (accessibilityIsIgnoredByDefault(ignoredReasons)) |
| 120 return true; | 120 return true; |
| 121 | 121 |
| 122 return false; | 122 return false; |
| 123 } | 123 } |
| 124 | 124 |
| 125 bool AXListBoxOption::canSetSelectedAttribute() const | 125 bool AXListBoxOption::canSetSelectedAttribute() const |
| 126 { | 126 { |
| 127 if (!isHTMLOptionElement(node())) | 127 if (!isHTMLOptionElement(getNode())) |
| 128 return false; | 128 return false; |
| 129 | 129 |
| 130 if (toHTMLOptionElement(node())->isDisabledFormControl()) | 130 if (toHTMLOptionElement(getNode())->isDisabledFormControl()) |
| 131 return false; | 131 return false; |
| 132 | 132 |
| 133 HTMLSelectElement* selectElement = listBoxOptionParentNode(); | 133 HTMLSelectElement* selectElement = listBoxOptionParentNode(); |
| 134 if (selectElement && selectElement->isDisabledFormControl()) | 134 if (selectElement && selectElement->isDisabledFormControl()) |
| 135 return false; | 135 return false; |
| 136 | 136 |
| 137 return true; | 137 return true; |
| 138 } | 138 } |
| 139 | 139 |
| 140 String AXListBoxOption::textAlternative(bool recursive, bool inAriaLabelledByTra
versal, AXObjectSet& visited, AXNameFrom& nameFrom, AXRelatedObjectVector* relat
edObjects, NameSources* nameSources) const | 140 String AXListBoxOption::textAlternative(bool recursive, bool inAriaLabelledByTra
versal, AXObjectSet& visited, AXNameFrom& nameFrom, AXRelatedObjectVector* relat
edObjects, NameSources* nameSources) const |
| 141 { | 141 { |
| 142 // If nameSources is non-null, relatedObjects is used in filling it in, so i
t must be non-null as well. | 142 // If nameSources is non-null, relatedObjects is used in filling it in, so i
t must be non-null as well. |
| 143 if (nameSources) | 143 if (nameSources) |
| 144 ASSERT(relatedObjects); | 144 ASSERT(relatedObjects); |
| 145 | 145 |
| 146 if (!node()) | 146 if (!getNode()) |
| 147 return String(); | 147 return String(); |
| 148 | 148 |
| 149 bool foundTextAlternative = false; | 149 bool foundTextAlternative = false; |
| 150 String textAlternative = ariaTextAlternative(recursive, inAriaLabelledByTrav
ersal, visited, nameFrom, relatedObjects, nameSources, &foundTextAlternative); | 150 String textAlternative = ariaTextAlternative(recursive, inAriaLabelledByTrav
ersal, visited, nameFrom, relatedObjects, nameSources, &foundTextAlternative); |
| 151 if (foundTextAlternative && !nameSources) | 151 if (foundTextAlternative && !nameSources) |
| 152 return textAlternative; | 152 return textAlternative; |
| 153 | 153 |
| 154 nameFrom = AXNameFromContents; | 154 nameFrom = AXNameFromContents; |
| 155 textAlternative = toHTMLOptionElement(node())->displayLabel(); | 155 textAlternative = toHTMLOptionElement(getNode())->displayLabel(); |
| 156 if (nameSources) { | 156 if (nameSources) { |
| 157 nameSources->append(NameSource(foundTextAlternative)); | 157 nameSources->append(NameSource(foundTextAlternative)); |
| 158 nameSources->last().type = nameFrom; | 158 nameSources->last().type = nameFrom; |
| 159 nameSources->last().text = textAlternative; | 159 nameSources->last().text = textAlternative; |
| 160 foundTextAlternative = true; | 160 foundTextAlternative = true; |
| 161 } | 161 } |
| 162 | 162 |
| 163 return textAlternative; | 163 return textAlternative; |
| 164 } | 164 } |
| 165 | 165 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 176 if ((isOptionSelected && selected) || (!isOptionSelected && !selected)) | 176 if ((isOptionSelected && selected) || (!isOptionSelected && !selected)) |
| 177 return; | 177 return; |
| 178 | 178 |
| 179 // Convert from the entire list index to the option index. | 179 // Convert from the entire list index to the option index. |
| 180 int optionIndex = selectElement->listToOptionIndex(listBoxOptionIndex()); | 180 int optionIndex = selectElement->listToOptionIndex(listBoxOptionIndex()); |
| 181 selectElement->accessKeySetSelectedIndex(optionIndex); | 181 selectElement->accessKeySetSelectedIndex(optionIndex); |
| 182 } | 182 } |
| 183 | 183 |
| 184 HTMLSelectElement* AXListBoxOption::listBoxOptionParentNode() const | 184 HTMLSelectElement* AXListBoxOption::listBoxOptionParentNode() const |
| 185 { | 185 { |
| 186 if (!node()) | 186 if (!getNode()) |
| 187 return 0; | 187 return 0; |
| 188 | 188 |
| 189 if (isHTMLOptionElement(node())) | 189 if (isHTMLOptionElement(getNode())) |
| 190 return toHTMLOptionElement(node())->ownerSelectElement(); | 190 return toHTMLOptionElement(getNode())->ownerSelectElement(); |
| 191 | 191 |
| 192 return 0; | 192 return 0; |
| 193 } | 193 } |
| 194 | 194 |
| 195 int AXListBoxOption::listBoxOptionIndex() const | 195 int AXListBoxOption::listBoxOptionIndex() const |
| 196 { | 196 { |
| 197 HTMLSelectElement* selectElement = listBoxOptionParentNode(); | 197 HTMLSelectElement* selectElement = listBoxOptionParentNode(); |
| 198 if (!selectElement) | 198 if (!selectElement) |
| 199 return -1; | 199 return -1; |
| 200 | 200 |
| 201 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement>>& listItems = selectE
lement->listItems(); | 201 const WillBeHeapVector<RawPtrWillBeMember<HTMLElement>>& listItems = selectE
lement->listItems(); |
| 202 unsigned length = listItems.size(); | 202 unsigned length = listItems.size(); |
| 203 for (unsigned i = 0; i < length; i++) { | 203 for (unsigned i = 0; i < length; i++) { |
| 204 if (listItems[i] == node()) | 204 if (listItems[i] == getNode()) |
| 205 return i; | 205 return i; |
| 206 } | 206 } |
| 207 | 207 |
| 208 return -1; | 208 return -1; |
| 209 } | 209 } |
| 210 | 210 |
| 211 } // namespace blink | 211 } // namespace blink |
| OLD | NEW |