OLD | NEW |
1 var captionsButtonElement; | 1 var captionsButtonElement; |
2 var captionsButtonCoordinates; | 2 var captionsButtonCoordinates; |
3 | 3 |
4 // As specified in mediaControls.css, this is how long it takes to fade out cont
rols | 4 // As specified in mediaControls.css, this is how long it takes to fade out cont
rols |
5 const controlsFadeOutDurationMs = 300; | 5 const controlsFadeOutDurationMs = 300; |
6 | 6 |
7 // The timeout for the hide-after-no-mouse-movement behavior. Defined (and | 7 // The timeout for the hide-after-no-mouse-movement behavior. Defined (and |
8 // should mirror) the value 'timeWithoutMouseMovementBeforeHidingMediaControls' | 8 // should mirror) the value 'timeWithoutMouseMovementBeforeHidingMediaControls' |
9 // in MediaControls.cpp. | 9 // in MediaControls.cpp. |
10 const controlsMouseMovementTimeoutMs = 3000; | 10 const controlsMouseMovementTimeoutMs = 3000; |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 | 128 |
129 if (!captionsButtonElement.disabled | 129 if (!captionsButtonElement.disabled |
130 && captionsButtonCoordinates[0] > 0 | 130 && captionsButtonCoordinates[0] > 0 |
131 && captionsButtonCoordinates[1] > 0) { | 131 && captionsButtonCoordinates[1] > 0) { |
132 return true; | 132 return true; |
133 } | 133 } |
134 | 134 |
135 return false; | 135 return false; |
136 } | 136 } |
137 | 137 |
138 function testClosedCaptionsButtonVisibility(expected) | |
139 { | |
140 try { | |
141 captionsButtonElement = mediaControlsButton(mediaElement, "toggle-closed
-captions-button"); | |
142 captionsButtonCoordinates = mediaControlsButtonCoordinates(mediaElement,
"toggle-closed-captions-button"); | |
143 } catch (exception) { | |
144 consoleWrite("Failed to find a closed captions button or its coordinates
: " + exception); | |
145 if (expected) | |
146 failTest(); | |
147 return; | |
148 } | |
149 | |
150 consoleWrite(""); | |
151 if (expected == true) { | |
152 consoleWrite("** Caption button should be visible and enabled."); | |
153 testExpected("captionsButtonCoordinates[0]", 0, ">"); | |
154 testExpected("captionsButtonCoordinates[1]", 0, ">"); | |
155 testExpected("captionsButtonElement.disabled", false); | |
156 } else { | |
157 consoleWrite("** Caption button should not be visible."); | |
158 testExpected("captionsButtonCoordinates[0]", 0, "<="); | |
159 testExpected("captionsButtonCoordinates[1]", 0, "<="); | |
160 } | |
161 } | |
162 | |
163 function clickAtCoordinates(x, y) | 138 function clickAtCoordinates(x, y) |
164 { | 139 { |
165 eventSender.mouseMoveTo(x, y); | 140 eventSender.mouseMoveTo(x, y); |
166 eventSender.mouseDown(); | 141 eventSender.mouseDown(); |
167 eventSender.mouseUp(); | 142 eventSender.mouseUp(); |
168 } | 143 } |
169 | 144 |
170 function clickCCButton() | |
171 { | |
172 consoleWrite("*** Click the CC button."); | |
173 clickAtCoordinates(captionsButtonCoordinates[0], captionsButtonCoordinates[1
]); | |
174 } | |
175 | |
176 function textTrackListItemAtIndex(video, index) | 145 function textTrackListItemAtIndex(video, index) |
177 { | 146 { |
178 var textTrackListElementID = "-internal-media-controls-text-track-list"; | 147 var textTrackListElementID = "-internal-media-controls-text-track-list"; |
179 var textTrackListElement = mediaControlsElement(internals.shadowRoot(video).
firstChild, textTrackListElementID); | 148 var textTrackListElement = mediaControlsElement(internals.shadowRoot(video).
firstChild, textTrackListElementID); |
180 if (!textTrackListElement) | 149 if (!textTrackListElement) |
181 throw "Failed to find text track list element"; | 150 throw "Failed to find text track list element"; |
182 | 151 |
183 var trackListItems = textTrackListElement.childNodes; | 152 var trackListItems = textTrackListElement.childNodes; |
184 for (var i = 0; i < trackListItems.length; i++) { | 153 for (var i = 0; i < trackListItems.length; i++) { |
185 var trackListItem = trackListItems[i]; | 154 var trackListItem = trackListItems[i]; |
186 if (trackListItem.firstChild.getAttribute("data-track-index") == index) | 155 if (trackListItem.firstChild.getAttribute("data-track-index") == index) |
187 return trackListItem; | 156 return trackListItem; |
188 } | 157 } |
189 } | 158 } |
190 | 159 |
191 function selectTextTrack(video, index) | |
192 { | |
193 clickCCButton(); | |
194 var trackListItemElement = textTrackListItemAtIndex(video, index); | |
195 var trackListItemCoordinates = elementCoordinates(trackListItemElement); | |
196 clickAtCoordinates(trackListItemCoordinates[0], trackListItemCoordinates[1])
; | |
197 } | |
198 | |
199 function clickTextTrackAtIndex(video, index) | 160 function clickTextTrackAtIndex(video, index) |
200 { | 161 { |
201 var captionsButtonCoordinates = mediaControlsButtonCoordinates(video, "toggl
e-closed-captions-button"); | 162 var captionsButtonCoordinates = mediaControlsButtonCoordinates(video, "toggl
e-closed-captions-button"); |
202 clickAtCoordinates(captionsButtonCoordinates[0], captionsButtonCoordinates[1
]); | 163 clickAtCoordinates(captionsButtonCoordinates[0], captionsButtonCoordinates[1
]); |
203 var trackListItemElement = textTrackListItemAtIndex(video, index); | 164 var trackListItemElement = textTrackListItemAtIndex(video, index); |
204 var trackListItemCoordinates = elementCoordinates(trackListItemElement); | 165 var trackListItemCoordinates = elementCoordinates(trackListItemElement); |
205 clickAtCoordinates(trackListItemCoordinates[0], trackListItemCoordinates[1])
; | 166 clickAtCoordinates(trackListItemCoordinates[0], trackListItemCoordinates[1])
; |
206 } | 167 } |
207 | 168 |
208 function turnClosedCaptionsOff(video) | 169 function turnClosedCaptionsOff(video) |
209 { | 170 { |
210 clickTextTrackAtIndex(video, -1); | 171 clickTextTrackAtIndex(video, -1); |
211 } | 172 } |
212 | 173 |
213 function runAfterHideMediaControlsTimerFired(func, mediaElement) | 174 function runAfterHideMediaControlsTimerFired(func, mediaElement) |
214 { | 175 { |
215 if (mediaElement.paused) | 176 if (mediaElement.paused) |
216 throw "The media element is not playing"; | 177 throw "The media element is not playing"; |
217 | 178 |
218 // Compute the time it'll take until the controls will be invisible - | 179 // Compute the time it'll take until the controls will be invisible - |
219 // assuming playback has been started prior to invoking this | 180 // assuming playback has been started prior to invoking this |
220 // function. Allow 500ms slack. | 181 // function. Allow 500ms slack. |
221 var hideTimeoutMs = controlsMouseMovementTimeoutMs + controlsFadeOutDuration
Ms + 500; | 182 var hideTimeoutMs = controlsMouseMovementTimeoutMs + controlsFadeOutDuration
Ms + 500; |
222 | 183 |
223 if (!mediaElement.loop && hideTimeoutMs >= 1000 * (mediaElement.duration - m
ediaElement.currentTime)) | 184 if (!mediaElement.loop && hideTimeoutMs >= 1000 * (mediaElement.duration - m
ediaElement.currentTime)) |
224 throw "The media will end before the controls have been hidden"; | 185 throw "The media will end before the controls have been hidden"; |
225 | 186 |
226 setTimeout(func, hideTimeoutMs); | 187 setTimeout(func, hideTimeoutMs); |
227 } | 188 } |
OLD | NEW |