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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 return false; | 78 return false; |
79 | 79 |
80 if (!m_optionElement->hasTagName(optionTag)) | 80 if (!m_optionElement->hasTagName(optionTag)) |
81 return false; | 81 return false; |
82 | 82 |
83 return static_cast<HTMLOptionElement*>(m_optionElement)->selected(); | 83 return static_cast<HTMLOptionElement*>(m_optionElement)->selected(); |
84 } | 84 } |
85 | 85 |
86 bool AccessibilityListBoxOption::isSelectedOptionActive() const | 86 bool AccessibilityListBoxOption::isSelectedOptionActive() const |
87 { | 87 { |
88 HTMLSelectElement* listBoxParentNode = listBoxOptionParentNode(); | 88 Handle<HTMLSelectElement> listBoxParentNode = listBoxOptionParentNode(); |
89 if (!listBoxParentNode) | 89 if (!listBoxParentNode) |
90 return false; | 90 return false; |
91 | 91 |
92 return listBoxParentNode->activeSelectionEndListIndex() == listBoxOptionInde
x(); | 92 return listBoxParentNode->activeSelectionEndListIndex() == listBoxOptionInde
x(); |
93 } | 93 } |
94 | 94 |
95 LayoutRect AccessibilityListBoxOption::elementRect() const | 95 LayoutRect AccessibilityListBoxOption::elementRect() const |
96 { | 96 { |
97 LayoutRect rect; | 97 LayoutRect rect; |
98 if (!m_optionElement) | 98 if (!m_optionElement) |
99 return rect; | 99 return rect; |
100 | 100 |
101 HTMLSelectElement* listBoxParentNode = listBoxOptionParentNode(); | 101 Handle<HTMLSelectElement> listBoxParentNode = listBoxOptionParentNode(); |
102 if (!listBoxParentNode) | 102 if (!listBoxParentNode) |
103 return rect; | 103 return rect; |
104 | 104 |
105 RenderObject* listBoxRenderer = listBoxParentNode->renderer(); | 105 RenderObject* listBoxRenderer = listBoxParentNode->renderer(); |
106 if (!listBoxRenderer) | 106 if (!listBoxRenderer) |
107 return rect; | 107 return rect; |
108 | 108 |
109 LayoutRect parentRect = listBoxRenderer->document()->axObjectCache()->getOrC
reate(listBoxRenderer)->boundingBoxRect(); | 109 LayoutRect parentRect = listBoxRenderer->document()->axObjectCache()->getOrC
reate(listBoxRenderer)->boundingBoxRect(); |
110 int index = listBoxOptionIndex(); | 110 int index = listBoxOptionIndex(); |
111 if (index != -1) | 111 if (index != -1) |
(...skipping 17 matching lines...) Expand all Loading... |
129 { | 129 { |
130 if (!m_optionElement) | 130 if (!m_optionElement) |
131 return false; | 131 return false; |
132 | 132 |
133 if (!m_optionElement->hasTagName(optionTag)) | 133 if (!m_optionElement->hasTagName(optionTag)) |
134 return false; | 134 return false; |
135 | 135 |
136 if (m_optionElement->isDisabledFormControl()) | 136 if (m_optionElement->isDisabledFormControl()) |
137 return false; | 137 return false; |
138 | 138 |
139 HTMLSelectElement* selectElement = listBoxOptionParentNode(); | 139 Handle<HTMLSelectElement> selectElement = listBoxOptionParentNode(); |
140 if (selectElement && selectElement->isDisabledFormControl()) | 140 if (selectElement && selectElement->isDisabledFormControl()) |
141 return false; | 141 return false; |
142 | 142 |
143 return true; | 143 return true; |
144 } | 144 } |
145 | 145 |
146 String AccessibilityListBoxOption::stringValue() const | 146 String AccessibilityListBoxOption::stringValue() const |
147 { | 147 { |
148 if (!m_optionElement) | 148 if (!m_optionElement) |
149 return String(); | 149 return String(); |
(...skipping 11 matching lines...) Expand all Loading... |
161 return String(); | 161 return String(); |
162 } | 162 } |
163 | 163 |
164 Element* AccessibilityListBoxOption::actionElement() const | 164 Element* AccessibilityListBoxOption::actionElement() const |
165 { | 165 { |
166 return m_optionElement; | 166 return m_optionElement; |
167 } | 167 } |
168 | 168 |
169 AccessibilityObject* AccessibilityListBoxOption::parentObject() const | 169 AccessibilityObject* AccessibilityListBoxOption::parentObject() const |
170 { | 170 { |
171 HTMLSelectElement* parentNode = listBoxOptionParentNode(); | 171 Handle<HTMLSelectElement> parentNode = listBoxOptionParentNode(); |
172 if (!parentNode) | 172 if (!parentNode) |
173 return 0; | 173 return 0; |
174 | 174 |
175 return m_optionElement->document()->axObjectCache()->getOrCreate(parentNode)
; | 175 return m_optionElement->document()->axObjectCache()->getOrCreate(parentNode.
raw()); |
176 } | 176 } |
177 | 177 |
178 void AccessibilityListBoxOption::setSelected(bool selected) | 178 void AccessibilityListBoxOption::setSelected(bool selected) |
179 { | 179 { |
180 HTMLSelectElement* selectElement = listBoxOptionParentNode(); | 180 Handle<HTMLSelectElement> selectElement = listBoxOptionParentNode(); |
181 if (!selectElement) | 181 if (!selectElement) |
182 return; | 182 return; |
183 | 183 |
184 if (!canSetSelectedAttribute()) | 184 if (!canSetSelectedAttribute()) |
185 return; | 185 return; |
186 | 186 |
187 bool isOptionSelected = isSelected(); | 187 bool isOptionSelected = isSelected(); |
188 if ((isOptionSelected && selected) || (!isOptionSelected && !selected)) | 188 if ((isOptionSelected && selected) || (!isOptionSelected && !selected)) |
189 return; | 189 return; |
190 | 190 |
191 // Convert from the entire list index to the option index. | 191 // Convert from the entire list index to the option index. |
192 int optionIndex = selectElement->listToOptionIndex(listBoxOptionIndex()); | 192 int optionIndex = selectElement->listToOptionIndex(listBoxOptionIndex()); |
193 selectElement->accessKeySetSelectedIndex(optionIndex); | 193 selectElement->accessKeySetSelectedIndex(optionIndex); |
194 } | 194 } |
195 | 195 |
196 HTMLSelectElement* AccessibilityListBoxOption::listBoxOptionParentNode() const | 196 Result<HTMLSelectElement> AccessibilityListBoxOption::listBoxOptionParentNode()
const |
197 { | 197 { |
198 if (!m_optionElement) | 198 if (!m_optionElement) |
199 return 0; | 199 return nullptr; |
200 | 200 |
201 if (m_optionElement->hasTagName(optionTag)) | 201 if (m_optionElement->hasTagName(optionTag)) |
202 return static_cast<HTMLOptionElement*>(m_optionElement)->ownerSelectElem
ent(); | 202 return static_cast<HTMLOptionElement*>(m_optionElement)->ownerSelectElem
ent(); |
203 | 203 |
204 if (m_optionElement->hasTagName(optgroupTag)) | 204 if (m_optionElement->hasTagName(optgroupTag)) |
205 return static_cast<HTMLOptGroupElement*>(m_optionElement)->ownerSelectEl
ement(); | 205 return static_cast<HTMLOptGroupElement*>(m_optionElement)->ownerSelectEl
ement(); |
206 | 206 |
207 return 0; | 207 return nullptr; |
208 } | 208 } |
209 | 209 |
210 int AccessibilityListBoxOption::listBoxOptionIndex() const | 210 int AccessibilityListBoxOption::listBoxOptionIndex() const |
211 { | 211 { |
212 if (!m_optionElement) | 212 if (!m_optionElement) |
213 return -1; | 213 return -1; |
214 | 214 |
215 HTMLSelectElement* selectElement = listBoxOptionParentNode(); | 215 Handle<HTMLSelectElement> selectElement = listBoxOptionParentNode(); |
216 if (!selectElement) | 216 if (!selectElement) |
217 return -1; | 217 return -1; |
218 | 218 |
219 const Vector<HTMLElement*>& listItems = selectElement->listItems(); | 219 const Vector<HTMLElement*>& listItems = selectElement->listItems(); |
220 unsigned length = listItems.size(); | 220 unsigned length = listItems.size(); |
221 for (unsigned i = 0; i < length; i++) | 221 for (unsigned i = 0; i < length; i++) |
222 if (listItems[i] == m_optionElement) | 222 if (listItems[i] == m_optionElement) |
223 return i; | 223 return i; |
224 | 224 |
225 return -1; | 225 return -1; |
226 } | 226 } |
227 | 227 |
228 } // namespace WebCore | 228 } // namespace WebCore |
OLD | NEW |