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

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

Issue 2402263002: Media Controls a11y: add text/description/role to more controls components. (Closed)
Patch Set: compile fix Created 4 years, 2 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 case MediaSlider: 54 case MediaSlider:
55 return AccessibilityMediaTimeline::create(layoutObject, axObjectCache); 55 return AccessibilityMediaTimeline::create(layoutObject, axObjectCache);
56 56
57 case MediaCurrentTimeDisplay: 57 case MediaCurrentTimeDisplay:
58 case MediaTimeRemainingDisplay: 58 case MediaTimeRemainingDisplay:
59 return AccessibilityMediaTimeDisplay::create(layoutObject, axObjectCache); 59 return AccessibilityMediaTimeDisplay::create(layoutObject, axObjectCache);
60 60
61 case MediaControlsPanel: 61 case MediaControlsPanel:
62 return AXMediaControlsContainer::create(layoutObject, axObjectCache); 62 return AXMediaControlsContainer::create(layoutObject, axObjectCache);
63 63
64 default: 64 case MediaEnterFullscreenButton:
65 case MediaMuteButton:
66 case MediaPlayButton:
67 case MediaSliderThumb:
68 case MediaShowClosedCaptionsButton:
69 case MediaHideClosedCaptionsButton:
70 case MediaTextTrackList:
71 case MediaUnMuteButton:
72 case MediaPauseButton:
73 case MediaTimelineContainer:
74 case MediaTrackSelectionCheckmark:
75 case MediaVolumeSliderContainer:
76 case MediaVolumeSlider:
77 case MediaVolumeSliderThumb:
78 case MediaFullscreenVolumeSlider:
79 case MediaFullscreenVolumeSliderThumb:
80 case MediaExitFullscreenButton:
81 case MediaOverlayPlayButton:
82 case MediaCastOffButton:
83 case MediaCastOnButton:
84 case MediaOverlayCastOffButton:
85 case MediaOverlayCastOnButton:
86 case MediaOverflowButton:
87 case MediaOverflowList:
88 case MediaDownloadButton:
65 return new AccessibilityMediaControl(layoutObject, axObjectCache); 89 return new AccessibilityMediaControl(layoutObject, axObjectCache);
66 } 90 }
91
92 NOTREACHED();
93 return new AccessibilityMediaControl(layoutObject, axObjectCache);
67 } 94 }
68 95
69 MediaControlElementType AccessibilityMediaControl::controlType() const { 96 MediaControlElementType AccessibilityMediaControl::controlType() const {
70 if (!getLayoutObject() || !getLayoutObject()->node()) 97 if (!getLayoutObject() || !getLayoutObject()->node())
71 return MediaTimelineContainer; // Timeline container is not accessible. 98 return MediaTimelineContainer; // Timeline container is not accessible.
72 99
73 return mediaControlElementType(getLayoutObject()->node()); 100 return mediaControlElementType(getLayoutObject()->node());
74 } 101 }
75 102
76 String AccessibilityMediaControl::textAlternative( 103 String AccessibilityMediaControl::textAlternative(
77 bool recursive, 104 bool recursive,
78 bool inAriaLabelledByTraversal, 105 bool inAriaLabelledByTraversal,
79 AXObjectSet& visited, 106 AXObjectSet& visited,
80 AXNameFrom& nameFrom, 107 AXNameFrom& nameFrom,
81 AXRelatedObjectVector* relatedObjects, 108 AXRelatedObjectVector* relatedObjects,
82 NameSources* nameSources) const { 109 NameSources* nameSources) const {
83 switch (controlType()) { 110 switch (controlType()) {
84 case MediaEnterFullscreenButton: 111 case MediaEnterFullscreenButton:
85 return queryString(WebLocalizedString::AXMediaEnterFullscreenButton); 112 return queryString(WebLocalizedString::AXMediaEnterFullscreenButton);
86 case MediaExitFullscreenButton: 113 case MediaExitFullscreenButton:
87 return queryString(WebLocalizedString::AXMediaExitFullscreenButton); 114 return queryString(WebLocalizedString::AXMediaExitFullscreenButton);
88 case MediaMuteButton: 115 case MediaMuteButton:
89 return queryString(WebLocalizedString::AXMediaMuteButton); 116 return queryString(WebLocalizedString::AXMediaMuteButton);
90 case MediaPlayButton: 117 case MediaPlayButton:
118 case MediaOverlayPlayButton:
91 return queryString(WebLocalizedString::AXMediaPlayButton); 119 return queryString(WebLocalizedString::AXMediaPlayButton);
92 case MediaUnMuteButton: 120 case MediaUnMuteButton:
93 return queryString(WebLocalizedString::AXMediaUnMuteButton); 121 return queryString(WebLocalizedString::AXMediaUnMuteButton);
94 case MediaPauseButton: 122 case MediaPauseButton:
95 return queryString(WebLocalizedString::AXMediaPauseButton); 123 return queryString(WebLocalizedString::AXMediaPauseButton);
96 case MediaCurrentTimeDisplay: 124 case MediaCurrentTimeDisplay:
97 return queryString(WebLocalizedString::AXMediaCurrentTimeDisplay); 125 return queryString(WebLocalizedString::AXMediaCurrentTimeDisplay);
98 case MediaTimeRemainingDisplay: 126 case MediaTimeRemainingDisplay:
99 return queryString(WebLocalizedString::AXMediaTimeRemainingDisplay); 127 return queryString(WebLocalizedString::AXMediaTimeRemainingDisplay);
100 case MediaShowClosedCaptionsButton: 128 case MediaShowClosedCaptionsButton:
101 return queryString(WebLocalizedString::AXMediaShowClosedCaptionsButton); 129 return queryString(WebLocalizedString::AXMediaShowClosedCaptionsButton);
102 case MediaHideClosedCaptionsButton: 130 case MediaHideClosedCaptionsButton:
103 return queryString(WebLocalizedString::AXMediaHideClosedCaptionsButton); 131 return queryString(WebLocalizedString::AXMediaHideClosedCaptionsButton);
104 case MediaCastOffButton: 132 case MediaCastOffButton:
133 case MediaOverlayCastOffButton:
105 return queryString(WebLocalizedString::AxMediaCastOffButton); 134 return queryString(WebLocalizedString::AxMediaCastOffButton);
106 case MediaCastOnButton: 135 case MediaCastOnButton:
136 case MediaOverlayCastOnButton:
107 return queryString(WebLocalizedString::AxMediaCastOnButton); 137 return queryString(WebLocalizedString::AxMediaCastOnButton);
108 default: 138 case MediaDownloadButton:
139 return queryString(WebLocalizedString::AxMediaDownloadButton);
140 case MediaOverflowButton:
141 return queryString(WebLocalizedString::AxMediaOverflowButton);
142 case MediaSliderThumb:
143 case MediaTextTrackList:
144 case MediaTimelineContainer:
145 case MediaTrackSelectionCheckmark:
146 case MediaControlsPanel:
147 case MediaVolumeSliderContainer:
148 case MediaVolumeSlider:
149 case MediaVolumeSliderThumb:
150 case MediaFullscreenVolumeSlider:
151 case MediaFullscreenVolumeSliderThumb:
152 case MediaOverflowList:
153 return queryString(WebLocalizedString::AXMediaDefault);
154 case MediaSlider:
155 NOTREACHED();
109 return queryString(WebLocalizedString::AXMediaDefault); 156 return queryString(WebLocalizedString::AXMediaDefault);
110 } 157 }
158
159 NOTREACHED();
160 return queryString(WebLocalizedString::AXMediaDefault);
111 } 161 }
112 162
113 String AccessibilityMediaControl::description( 163 String AccessibilityMediaControl::description(
114 AXNameFrom nameFrom, 164 AXNameFrom nameFrom,
115 AXDescriptionFrom& descriptionFrom, 165 AXDescriptionFrom& descriptionFrom,
116 AXObjectVector* descriptionObjects) const { 166 AXObjectVector* descriptionObjects) const {
117 switch (controlType()) { 167 switch (controlType()) {
118 case MediaEnterFullscreenButton: 168 case MediaEnterFullscreenButton:
119 return queryString(WebLocalizedString::AXMediaEnterFullscreenButtonHelp); 169 return queryString(WebLocalizedString::AXMediaEnterFullscreenButtonHelp);
120 case MediaExitFullscreenButton: 170 case MediaExitFullscreenButton:
121 return queryString(WebLocalizedString::AXMediaExitFullscreenButtonHelp); 171 return queryString(WebLocalizedString::AXMediaExitFullscreenButtonHelp);
122 case MediaMuteButton: 172 case MediaMuteButton:
123 return queryString(WebLocalizedString::AXMediaMuteButtonHelp); 173 return queryString(WebLocalizedString::AXMediaMuteButtonHelp);
124 case MediaPlayButton: 174 case MediaPlayButton:
175 case MediaOverlayPlayButton:
125 return queryString(WebLocalizedString::AXMediaPlayButtonHelp); 176 return queryString(WebLocalizedString::AXMediaPlayButtonHelp);
126 case MediaUnMuteButton: 177 case MediaUnMuteButton:
127 return queryString(WebLocalizedString::AXMediaUnMuteButtonHelp); 178 return queryString(WebLocalizedString::AXMediaUnMuteButtonHelp);
128 case MediaPauseButton: 179 case MediaPauseButton:
129 return queryString(WebLocalizedString::AXMediaPauseButtonHelp); 180 return queryString(WebLocalizedString::AXMediaPauseButtonHelp);
130 case MediaCurrentTimeDisplay: 181 case MediaCurrentTimeDisplay:
131 return queryString(WebLocalizedString::AXMediaCurrentTimeDisplayHelp); 182 return queryString(WebLocalizedString::AXMediaCurrentTimeDisplayHelp);
132 case MediaTimeRemainingDisplay: 183 case MediaTimeRemainingDisplay:
133 return queryString(WebLocalizedString::AXMediaTimeRemainingDisplayHelp); 184 return queryString(WebLocalizedString::AXMediaTimeRemainingDisplayHelp);
134 case MediaShowClosedCaptionsButton: 185 case MediaShowClosedCaptionsButton:
135 return queryString( 186 return queryString(
136 WebLocalizedString::AXMediaShowClosedCaptionsButtonHelp); 187 WebLocalizedString::AXMediaShowClosedCaptionsButtonHelp);
137 case MediaHideClosedCaptionsButton: 188 case MediaHideClosedCaptionsButton:
138 return queryString( 189 return queryString(
139 WebLocalizedString::AXMediaHideClosedCaptionsButtonHelp); 190 WebLocalizedString::AXMediaHideClosedCaptionsButtonHelp);
140 case MediaCastOffButton: 191 case MediaCastOffButton:
192 case MediaOverlayCastOffButton:
141 return queryString(WebLocalizedString::AxMediaCastOffButtonHelp); 193 return queryString(WebLocalizedString::AxMediaCastOffButtonHelp);
142 case MediaCastOnButton: 194 case MediaCastOnButton:
195 case MediaOverlayCastOnButton:
143 return queryString(WebLocalizedString::AxMediaCastOnButtonHelp); 196 return queryString(WebLocalizedString::AxMediaCastOnButtonHelp);
144 default: 197 case MediaDownloadButton:
198 return queryString(WebLocalizedString::AxMediaDownloadButtonHelp);
199 case MediaOverflowButton:
200 return queryString(WebLocalizedString::AxMediaOverflowButtonHelp);
201 case MediaSliderThumb:
202 case MediaTextTrackList:
203 case MediaTimelineContainer:
204 case MediaTrackSelectionCheckmark:
205 case MediaControlsPanel:
206 case MediaVolumeSliderContainer:
207 case MediaVolumeSlider:
208 case MediaVolumeSliderThumb:
209 case MediaFullscreenVolumeSlider:
210 case MediaFullscreenVolumeSliderThumb:
211 case MediaOverflowList:
212 return queryString(WebLocalizedString::AXMediaDefault);
213 case MediaSlider:
214 NOTREACHED();
145 return queryString(WebLocalizedString::AXMediaDefault); 215 return queryString(WebLocalizedString::AXMediaDefault);
146 } 216 }
217
218 NOTREACHED();
219 return queryString(WebLocalizedString::AXMediaDefault);
147 } 220 }
148 221
149 bool AccessibilityMediaControl::computeAccessibilityIsIgnored( 222 bool AccessibilityMediaControl::computeAccessibilityIsIgnored(
150 IgnoredReasons* ignoredReasons) const { 223 IgnoredReasons* ignoredReasons) const {
151 if (!m_layoutObject || !m_layoutObject->style() || 224 if (!m_layoutObject || !m_layoutObject->style() ||
152 m_layoutObject->style()->visibility() != EVisibility::Visible || 225 m_layoutObject->style()->visibility() != EVisibility::Visible ||
153 controlType() == MediaTimelineContainer) 226 controlType() == MediaTimelineContainer)
154 return true; 227 return true;
155 228
156 return accessibilityIsIgnoredByDefault(ignoredReasons); 229 return accessibilityIsIgnoredByDefault(ignoredReasons);
157 } 230 }
158 231
159 AccessibilityRole AccessibilityMediaControl::roleValue() const { 232 AccessibilityRole AccessibilityMediaControl::roleValue() const {
160 switch (controlType()) { 233 switch (controlType()) {
161 case MediaEnterFullscreenButton: 234 case MediaEnterFullscreenButton:
162 case MediaExitFullscreenButton: 235 case MediaExitFullscreenButton:
163 case MediaMuteButton: 236 case MediaMuteButton:
164 case MediaPlayButton: 237 case MediaPlayButton:
165 case MediaUnMuteButton: 238 case MediaUnMuteButton:
166 case MediaPauseButton: 239 case MediaPauseButton:
167 case MediaShowClosedCaptionsButton: 240 case MediaShowClosedCaptionsButton:
168 case MediaHideClosedCaptionsButton: 241 case MediaHideClosedCaptionsButton:
242 case MediaOverlayPlayButton:
243 case MediaOverlayCastOffButton:
244 case MediaOverlayCastOnButton:
245 case MediaOverflowButton:
246 case MediaDownloadButton:
247 case MediaCastOnButton:
248 case MediaCastOffButton:
169 return ButtonRole; 249 return ButtonRole;
170 250
171 case MediaTimelineContainer: 251 case MediaTimelineContainer:
252 case MediaVolumeSliderContainer:
253 case MediaTextTrackList:
254 case MediaOverflowList:
172 return GroupRole; 255 return GroupRole;
173 default: 256
174 break; 257 case MediaControlsPanel:
258 case MediaCurrentTimeDisplay:
259 case MediaTimeRemainingDisplay:
260 case MediaSliderThumb:
261 case MediaTrackSelectionCheckmark:
262 case MediaVolumeSlider:
263 case MediaVolumeSliderThumb:
264 case MediaFullscreenVolumeSlider:
265 case MediaFullscreenVolumeSliderThumb:
266 return UnknownRole;
267
268 case MediaSlider:
269 // Not using AccessibilityMediaControl.
270 NOTREACHED();
271 return UnknownRole;
175 } 272 }
176 273
274 NOTREACHED();
177 return UnknownRole; 275 return UnknownRole;
178 } 276 }
179 277
180 // 278 //
181 // AXMediaControlsContainer 279 // AXMediaControlsContainer
182 280
183 AXMediaControlsContainer::AXMediaControlsContainer( 281 AXMediaControlsContainer::AXMediaControlsContainer(
184 LayoutObject* layoutObject, 282 LayoutObject* layoutObject,
185 AXObjectCacheImpl& axObjectCache) 283 AXObjectCacheImpl& axObjectCache)
186 : AccessibilityMediaControl(layoutObject, axObjectCache) {} 284 : AccessibilityMediaControl(layoutObject, axObjectCache) {}
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 if (!m_layoutObject || !m_layoutObject->node()) 393 if (!m_layoutObject || !m_layoutObject->node())
296 return String(); 394 return String();
297 395
298 MediaControlTimeDisplayElement* element = 396 MediaControlTimeDisplayElement* element =
299 static_cast<MediaControlTimeDisplayElement*>(m_layoutObject->node()); 397 static_cast<MediaControlTimeDisplayElement*>(m_layoutObject->node());
300 float time = element->currentValue(); 398 float time = element->currentValue();
301 return localizedMediaTimeDescription(fabsf(time)); 399 return localizedMediaTimeDescription(fabsf(time));
302 } 400 }
303 401
304 } // namespace blink 402 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698