OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2010 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 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 IgnoredReasons* ignored_reasons) const { | 58 IgnoredReasons* ignored_reasons) const { |
59 return AccessibilityIsIgnoredByDefault(ignored_reasons); | 59 return AccessibilityIsIgnoredByDefault(ignored_reasons); |
60 } | 60 } |
61 | 61 |
62 AXMenuListOption* AXMenuListPopup::MenuListOptionAXObject( | 62 AXMenuListOption* AXMenuListPopup::MenuListOptionAXObject( |
63 HTMLElement* element) const { | 63 HTMLElement* element) const { |
64 DCHECK(element); | 64 DCHECK(element); |
65 if (!isHTMLOptionElement(*element)) | 65 if (!isHTMLOptionElement(*element)) |
66 return 0; | 66 return 0; |
67 | 67 |
68 AXObject* object = AxObjectCache().GetOrCreate(element); | 68 AXObjectImpl* object = AxObjectCache().GetOrCreate(element); |
69 if (!object || !object->IsMenuListOption()) | 69 if (!object || !object->IsMenuListOption()) |
70 return 0; | 70 return 0; |
71 | 71 |
72 return ToAXMenuListOption(object); | 72 return ToAXMenuListOption(object); |
73 } | 73 } |
74 | 74 |
75 int AXMenuListPopup::GetSelectedIndex() const { | 75 int AXMenuListPopup::GetSelectedIndex() const { |
76 if (!parent_) | 76 if (!parent_) |
77 return -1; | 77 return -1; |
78 | 78 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 if (!have_children_) | 123 if (!have_children_) |
124 AddChildren(); | 124 AddChildren(); |
125 } | 125 } |
126 | 126 |
127 void AXMenuListPopup::DidUpdateActiveOption(int option_index) { | 127 void AXMenuListPopup::DidUpdateActiveOption(int option_index) { |
128 UpdateChildrenIfNecessary(); | 128 UpdateChildrenIfNecessary(); |
129 | 129 |
130 AXObjectCacheImpl& cache = AxObjectCache(); | 130 AXObjectCacheImpl& cache = AxObjectCache(); |
131 if (active_index_ != option_index && active_index_ >= 0 && | 131 if (active_index_ != option_index && active_index_ >= 0 && |
132 active_index_ < static_cast<int>(children_.size())) { | 132 active_index_ < static_cast<int>(children_.size())) { |
133 AXObject* previous_child = children_[active_index_].Get(); | 133 AXObjectImpl* previous_child = children_[active_index_].Get(); |
134 cache.PostNotification(previous_child, | 134 cache.PostNotification(previous_child, |
135 AXObjectCacheImpl::kAXMenuListItemUnselected); | 135 AXObjectCacheImpl::kAXMenuListItemUnselected); |
136 } | 136 } |
137 | 137 |
138 if (option_index >= 0 && option_index < static_cast<int>(children_.size())) { | 138 if (option_index >= 0 && option_index < static_cast<int>(children_.size())) { |
139 AXObject* child = children_[option_index].Get(); | 139 AXObjectImpl* child = children_[option_index].Get(); |
140 cache.PostNotification(this, AXObjectCacheImpl::kAXActiveDescendantChanged); | 140 cache.PostNotification(this, AXObjectCacheImpl::kAXActiveDescendantChanged); |
141 cache.PostNotification(child, AXObjectCacheImpl::kAXMenuListItemSelected); | 141 cache.PostNotification(child, AXObjectCacheImpl::kAXMenuListItemSelected); |
142 } | 142 } |
143 | 143 |
144 active_index_ = option_index; | 144 active_index_ = option_index; |
145 } | 145 } |
146 | 146 |
147 void AXMenuListPopup::DidHide() { | 147 void AXMenuListPopup::DidHide() { |
148 AXObjectCacheImpl& cache = AxObjectCache(); | 148 AXObjectCacheImpl& cache = AxObjectCache(); |
149 cache.PostNotification(this, AXObjectCacheImpl::kAXHide); | 149 cache.PostNotification(this, AXObjectCacheImpl::kAXHide); |
(...skipping 10 matching lines...) Expand all Loading... |
160 cache.PostNotification(this, AXObjectCacheImpl::kAXShow); | 160 cache.PostNotification(this, AXObjectCacheImpl::kAXShow); |
161 int selected_index = GetSelectedIndex(); | 161 int selected_index = GetSelectedIndex(); |
162 if (selected_index >= 0 && | 162 if (selected_index >= 0 && |
163 selected_index < static_cast<int>(children_.size())) | 163 selected_index < static_cast<int>(children_.size())) |
164 DidUpdateActiveOption(selected_index); | 164 DidUpdateActiveOption(selected_index); |
165 else | 165 else |
166 cache.PostNotification(parent_, | 166 cache.PostNotification(parent_, |
167 AXObjectCacheImpl::kAXFocusedUIElementChanged); | 167 AXObjectCacheImpl::kAXFocusedUIElementChanged); |
168 } | 168 } |
169 | 169 |
170 AXObject* AXMenuListPopup::ActiveDescendant() { | 170 AXObjectImpl* AXMenuListPopup::ActiveDescendant() { |
171 if (active_index_ < 0 || active_index_ >= static_cast<int>(Children().size())) | 171 if (active_index_ < 0 || active_index_ >= static_cast<int>(Children().size())) |
172 return nullptr; | 172 return nullptr; |
173 | 173 |
174 return children_[active_index_].Get(); | 174 return children_[active_index_].Get(); |
175 } | 175 } |
176 | 176 |
177 } // namespace blink | 177 } // namespace blink |
OLD | NEW |