OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011 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 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 // Some clocks may return times outside the range of [0..duration]. | 149 // Some clocks may return times outside the range of [0..duration]. |
150 m_position = max(0.0, min(duration(), m_clock->currentTime())); | 150 m_position = max(0.0, min(duration(), m_clock->currentTime())); |
151 m_clearPositionTimer.startOneShot(0, FROM_HERE); | 151 m_clearPositionTimer.startOneShot(0, FROM_HERE); |
152 } | 152 } |
153 | 153 |
154 return m_position; | 154 return m_position; |
155 } | 155 } |
156 | 156 |
157 void MediaController::setCurrentTime(double time, ExceptionState& exceptionState
) | 157 void MediaController::setCurrentTime(double time, ExceptionState& exceptionState
) |
158 { | 158 { |
159 // FIXME: generated bindings should check isfinite: http://crbug.com/354298 | |
160 if (!std::isfinite(time)) { | |
161 exceptionState.throwTypeError(ExceptionMessages::notAFiniteNumber(time))
; | |
162 return; | |
163 } | |
164 | |
165 // When the user agent is to seek the media controller to a particular new p
layback position, | 159 // When the user agent is to seek the media controller to a particular new p
layback position, |
166 // it must follow these steps: | 160 // it must follow these steps: |
167 // If the new playback position is less than zero, then set it to zero. | 161 // If the new playback position is less than zero, then set it to zero. |
168 time = max(0.0, time); | 162 time = max(0.0, time); |
169 | 163 |
170 // If the new playback position is greater than the media controller duratio
n, then set it | 164 // If the new playback position is greater than the media controller duratio
n, then set it |
171 // to the media controller duration. | 165 // to the media controller duration. |
172 time = min(time, duration()); | 166 time = min(time, duration()); |
173 | 167 |
174 // Set the media controller position to the new playback position. | 168 // Set the media controller position to the new playback position. |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 return; | 208 return; |
215 | 209 |
216 // then the user agent must change the MediaController into a paused media c
ontroller, | 210 // then the user agent must change the MediaController into a paused media c
ontroller, |
217 m_paused = true; | 211 m_paused = true; |
218 // queue a task to fire a simple event named pause at the MediaController, | 212 // queue a task to fire a simple event named pause at the MediaController, |
219 scheduleEvent(EventTypeNames::pause); | 213 scheduleEvent(EventTypeNames::pause); |
220 // and then report the controller state of the MediaController. | 214 // and then report the controller state of the MediaController. |
221 reportControllerState(); | 215 reportControllerState(); |
222 } | 216 } |
223 | 217 |
224 void MediaController::setDefaultPlaybackRate(double rate, ExceptionState& except
ionState) | 218 void MediaController::setDefaultPlaybackRate(double rate) |
225 { | 219 { |
226 // FIXME: generated bindings should check isfinite: http://crbug.com/354298 | |
227 if (!std::isfinite(rate)) { | |
228 exceptionState.throwTypeError(ExceptionMessages::notAFiniteNumber(rate))
; | |
229 return; | |
230 } | |
231 | |
232 if (m_defaultPlaybackRate == rate) | 220 if (m_defaultPlaybackRate == rate) |
233 return; | 221 return; |
234 | 222 |
235 // The defaultPlaybackRate attribute, on setting, must set the MediaControll
er's media controller | 223 // The defaultPlaybackRate attribute, on setting, must set the MediaControll
er's media controller |
236 // default playback rate to the new value, | 224 // default playback rate to the new value, |
237 m_defaultPlaybackRate = rate; | 225 m_defaultPlaybackRate = rate; |
238 | 226 |
239 // then queue a task to fire a simple event named ratechange at the MediaCon
troller. | 227 // then queue a task to fire a simple event named ratechange at the MediaCon
troller. |
240 scheduleEvent(EventTypeNames::ratechange); | 228 scheduleEvent(EventTypeNames::ratechange); |
241 } | 229 } |
242 | 230 |
243 double MediaController::playbackRate() const | 231 double MediaController::playbackRate() const |
244 { | 232 { |
245 return m_clock->playRate(); | 233 return m_clock->playRate(); |
246 } | 234 } |
247 | 235 |
248 void MediaController::setPlaybackRate(double rate, ExceptionState& exceptionStat
e) | 236 void MediaController::setPlaybackRate(double rate) |
249 { | 237 { |
250 // FIXME: generated bindings should check isfinite: http://crbug.com/354298 | |
251 if (!std::isfinite(rate)) { | |
252 exceptionState.throwTypeError(ExceptionMessages::notAFiniteNumber(rate))
; | |
253 return; | |
254 } | |
255 | |
256 if (m_clock->playRate() == rate) | 238 if (m_clock->playRate() == rate) |
257 return; | 239 return; |
258 | 240 |
259 // The playbackRate attribute, on setting, must set the MediaController's me
dia controller | 241 // The playbackRate attribute, on setting, must set the MediaController's me
dia controller |
260 // playback rate to the new value, | 242 // playback rate to the new value, |
261 m_clock->setPlayRate(rate); | 243 m_clock->setPlayRate(rate); |
262 | 244 |
263 for (size_t index = 0; index < m_mediaElements.size(); ++index) | 245 for (size_t index = 0; index < m_mediaElements.size(); ++index) |
264 m_mediaElements[index]->updatePlaybackRate(); | 246 m_mediaElements[index]->updatePlaybackRate(); |
265 | 247 |
266 // then queue a task to fire a simple event named ratechange at the MediaCon
troller. | 248 // then queue a task to fire a simple event named ratechange at the MediaCon
troller. |
267 scheduleEvent(EventTypeNames::ratechange); | 249 scheduleEvent(EventTypeNames::ratechange); |
268 } | 250 } |
269 | 251 |
270 void MediaController::setVolume(double level, ExceptionState& exceptionState) | 252 void MediaController::setVolume(double level, ExceptionState& exceptionState) |
271 { | 253 { |
272 // FIXME: generated bindings should check isfinite: http://crbug.com/354298 | |
273 if (!std::isfinite(level)) { | |
274 exceptionState.throwTypeError(ExceptionMessages::notAFiniteNumber(level)
); | |
275 return; | |
276 } | |
277 | |
278 if (m_volume == level) | 254 if (m_volume == level) |
279 return; | 255 return; |
280 | 256 |
281 // If the new value is outside the range 0.0 to 1.0 inclusive, then, on sett
ing, an | 257 // If the new value is outside the range 0.0 to 1.0 inclusive, then, on sett
ing, an |
282 // IndexSizeError exception must be raised instead. | 258 // IndexSizeError exception must be raised instead. |
283 if (level < 0 || level > 1) { | 259 if (level < 0 || level > 1) { |
284 exceptionState.throwDOMException(IndexSizeError, ExceptionMessages::inde
xOutsideRange("volume", level, 0.0, ExceptionMessages::InclusiveBound, 1.0, Exce
ptionMessages::InclusiveBound)); | 260 exceptionState.throwDOMException(IndexSizeError, ExceptionMessages::inde
xOutsideRange("volume", level, 0.0, ExceptionMessages::InclusiveBound, 1.0, Exce
ptionMessages::InclusiveBound)); |
285 return; | 261 return; |
286 } | 262 } |
287 | 263 |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 { | 598 { |
623 double now = WTF::currentTime(); | 599 double now = WTF::currentTime(); |
624 double timedelta = now - m_previousTimeupdateTime; | 600 double timedelta = now - m_previousTimeupdateTime; |
625 | 601 |
626 if (timedelta < maxTimeupdateEventFrequency) | 602 if (timedelta < maxTimeupdateEventFrequency) |
627 return; | 603 return; |
628 | 604 |
629 scheduleEvent(EventTypeNames::timeupdate); | 605 scheduleEvent(EventTypeNames::timeupdate); |
630 m_previousTimeupdateTime = now; | 606 m_previousTimeupdateTime = now; |
631 } | 607 } |
OLD | NEW |