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

Side by Side Diff: third_party/WebKit/Source/modules/accessibility/AXListBoxOption.cpp

Issue 2147963004: AX: Don't use listIndex in AXListBoxOption class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « third_party/WebKit/Source/modules/accessibility/AXListBoxOption.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 { 101 {
102 return isHTMLOptionElement(getNode()) && toHTMLOptionElement(getNode())->sel ected(); 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->activeSelectionEnd() == getNode();
112 } 112 }
113 113
114 bool AXListBoxOption::computeAccessibilityIsIgnored(IgnoredReasons* ignoredReaso ns) const 114 bool AXListBoxOption::computeAccessibilityIsIgnored(IgnoredReasons* ignoredReaso ns) const
115 { 115 {
116 if (!getNode()) 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
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 if (!selectElement) 169 if (!selectElement)
170 return; 170 return;
171 171
172 if (!canSetSelectedAttribute()) 172 if (!canSetSelectedAttribute())
173 return; 173 return;
174 174
175 bool isOptionSelected = isSelected(); 175 bool isOptionSelected = isSelected();
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 selectElement->selectOptionByAccessKey(toHTMLOptionElement(getNode()));
180 int optionIndex = selectElement->listToOptionIndex(listBoxOptionIndex());
181 selectElement->accessKeySetSelectedIndex(optionIndex);
182 } 180 }
183 181
184 HTMLSelectElement* AXListBoxOption::listBoxOptionParentNode() const 182 HTMLSelectElement* AXListBoxOption::listBoxOptionParentNode() const
185 { 183 {
186 if (!getNode()) 184 if (!getNode())
187 return 0; 185 return 0;
188 186
189 if (isHTMLOptionElement(getNode())) 187 if (isHTMLOptionElement(getNode()))
190 return toHTMLOptionElement(getNode())->ownerSelectElement(); 188 return toHTMLOptionElement(getNode())->ownerSelectElement();
191 189
192 return 0; 190 return 0;
193 } 191 }
194 192
195 int AXListBoxOption::listBoxOptionIndex() const
196 {
197 HTMLSelectElement* selectElement = listBoxOptionParentNode();
198 if (!selectElement)
199 return -1;
200
201 const HeapVector<Member<HTMLElement>>& listItems = selectElement->listItems( );
202 unsigned length = listItems.size();
203 for (unsigned i = 0; i < length; i++) {
204 if (listItems[i] == getNode())
205 return i;
206 }
207
208 return -1;
209 }
210
211 } // namespace blink 193 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/accessibility/AXListBoxOption.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698