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