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

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: review comments 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:
105 return queryString(WebLocalizedString::AxMediaCastOffButton); 133 case MediaOverlayCastOffButton:
134 return queryString(WebLocalizedString::AXMediaCastOffButton);
106 case MediaCastOnButton: 135 case MediaCastOnButton:
107 return queryString(WebLocalizedString::AxMediaCastOnButton); 136 case MediaOverlayCastOnButton:
108 default: 137 return queryString(WebLocalizedString::AXMediaCastOnButton);
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:
141 return queryString(WebLocalizedString::AxMediaCastOffButtonHelp); 192 case MediaOverlayCastOffButton:
193 return queryString(WebLocalizedString::AXMediaCastOffButtonHelp);
142 case MediaCastOnButton: 194 case MediaCastOnButton:
143 return queryString(WebLocalizedString::AxMediaCastOnButtonHelp); 195 case MediaOverlayCastOnButton:
144 default: 196 return queryString(WebLocalizedString::AXMediaCastOnButtonHelp);
197 case MediaOverflowButton:
198 return queryString(WebLocalizedString::AXMediaOverflowButtonHelp);
199 case MediaSliderThumb:
200 case MediaTextTrackList:
201 case MediaTimelineContainer:
202 case MediaTrackSelectionCheckmark:
203 case MediaControlsPanel:
204 case MediaVolumeSliderContainer:
205 case MediaVolumeSlider:
206 case MediaVolumeSliderThumb:
207 case MediaFullscreenVolumeSlider:
208 case MediaFullscreenVolumeSliderThumb:
209 case MediaOverflowList:
210 case MediaDownloadButton:
211 return queryString(WebLocalizedString::AXMediaDefault);
212 case MediaSlider:
213 NOTREACHED();
145 return queryString(WebLocalizedString::AXMediaDefault); 214 return queryString(WebLocalizedString::AXMediaDefault);
146 } 215 }
216
217 NOTREACHED();
218 return queryString(WebLocalizedString::AXMediaDefault);
147 } 219 }
148 220
149 bool AccessibilityMediaControl::computeAccessibilityIsIgnored( 221 bool AccessibilityMediaControl::computeAccessibilityIsIgnored(
150 IgnoredReasons* ignoredReasons) const { 222 IgnoredReasons* ignoredReasons) const {
151 if (!m_layoutObject || !m_layoutObject->style() || 223 if (!m_layoutObject || !m_layoutObject->style() ||
152 m_layoutObject->style()->visibility() != EVisibility::Visible || 224 m_layoutObject->style()->visibility() != EVisibility::Visible ||
153 controlType() == MediaTimelineContainer) 225 controlType() == MediaTimelineContainer)
154 return true; 226 return true;
155 227
156 return accessibilityIsIgnoredByDefault(ignoredReasons); 228 return accessibilityIsIgnoredByDefault(ignoredReasons);
157 } 229 }
158 230
159 AccessibilityRole AccessibilityMediaControl::roleValue() const { 231 AccessibilityRole AccessibilityMediaControl::roleValue() const {
160 switch (controlType()) { 232 switch (controlType()) {
161 case MediaEnterFullscreenButton: 233 case MediaEnterFullscreenButton:
162 case MediaExitFullscreenButton: 234 case MediaExitFullscreenButton:
163 case MediaMuteButton: 235 case MediaMuteButton:
164 case MediaPlayButton: 236 case MediaPlayButton:
165 case MediaUnMuteButton: 237 case MediaUnMuteButton:
166 case MediaPauseButton: 238 case MediaPauseButton:
167 case MediaShowClosedCaptionsButton: 239 case MediaShowClosedCaptionsButton:
168 case MediaHideClosedCaptionsButton: 240 case MediaHideClosedCaptionsButton:
241 case MediaOverlayPlayButton:
242 case MediaOverlayCastOffButton:
243 case MediaOverlayCastOnButton:
244 case MediaOverflowButton:
245 case MediaDownloadButton:
246 case MediaCastOnButton:
247 case MediaCastOffButton:
169 return ButtonRole; 248 return ButtonRole;
170 249
171 case MediaTimelineContainer: 250 case MediaTimelineContainer:
251 case MediaVolumeSliderContainer:
252 case MediaTextTrackList:
253 case MediaOverflowList:
172 return GroupRole; 254 return GroupRole;
173 default: 255
174 break; 256 case MediaControlsPanel:
257 case MediaCurrentTimeDisplay:
258 case MediaTimeRemainingDisplay:
259 case MediaSliderThumb:
260 case MediaTrackSelectionCheckmark:
261 case MediaVolumeSlider:
262 case MediaVolumeSliderThumb:
263 case MediaFullscreenVolumeSlider:
264 case MediaFullscreenVolumeSliderThumb:
265 return UnknownRole;
266
267 case MediaSlider:
268 // Not using AccessibilityMediaControl.
269 NOTREACHED();
270 return UnknownRole;
175 } 271 }
176 272
273 NOTREACHED();
177 return UnknownRole; 274 return UnknownRole;
178 } 275 }
179 276
180 // 277 //
181 // AXMediaControlsContainer 278 // AXMediaControlsContainer
182 279
183 AXMediaControlsContainer::AXMediaControlsContainer( 280 AXMediaControlsContainer::AXMediaControlsContainer(
184 LayoutObject* layoutObject, 281 LayoutObject* layoutObject,
185 AXObjectCacheImpl& axObjectCache) 282 AXObjectCacheImpl& axObjectCache)
186 : AccessibilityMediaControl(layoutObject, axObjectCache) {} 283 : AccessibilityMediaControl(layoutObject, axObjectCache) {}
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 if (!m_layoutObject || !m_layoutObject->node()) 392 if (!m_layoutObject || !m_layoutObject->node())
296 return String(); 393 return String();
297 394
298 MediaControlTimeDisplayElement* element = 395 MediaControlTimeDisplayElement* element =
299 static_cast<MediaControlTimeDisplayElement*>(m_layoutObject->node()); 396 static_cast<MediaControlTimeDisplayElement*>(m_layoutObject->node());
300 float time = element->currentValue(); 397 float time = element->currentValue();
301 return localizedMediaTimeDescription(fabsf(time)); 398 return localizedMediaTimeDescription(fabsf(time));
302 } 399 }
303 400
304 } // namespace blink 401 } // namespace blink
OLDNEW
« no previous file with comments | « content/child/blink_platform_impl.cc ('k') | third_party/WebKit/public/platform/WebLocalizedString.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698