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