| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 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 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 , m_duration(std::numeric_limits<double>::quiet_NaN()) | 343 , m_duration(std::numeric_limits<double>::quiet_NaN()) |
| 344 , m_lastTimeUpdateEventWallTime(0) | 344 , m_lastTimeUpdateEventWallTime(0) |
| 345 , m_lastTimeUpdateEventMovieTime(0) | 345 , m_lastTimeUpdateEventMovieTime(0) |
| 346 , m_defaultPlaybackStartPosition(0) | 346 , m_defaultPlaybackStartPosition(0) |
| 347 , m_loadState(WaitingForSource) | 347 , m_loadState(WaitingForSource) |
| 348 , m_deferredLoadState(NotDeferred) | 348 , m_deferredLoadState(NotDeferred) |
| 349 , m_deferredLoadTimer(this, &HTMLMediaElement::deferredLoadTimerFired) | 349 , m_deferredLoadTimer(this, &HTMLMediaElement::deferredLoadTimerFired) |
| 350 , m_webLayer(nullptr) | 350 , m_webLayer(nullptr) |
| 351 , m_preload(MediaPlayer::Auto) | 351 , m_preload(MediaPlayer::Auto) |
| 352 , m_displayMode(Unknown) | 352 , m_displayMode(Unknown) |
| 353 , m_cachedTime(MediaPlayer::invalidTime()) | 353 , m_cachedTime(std::numeric_limits<double>::quiet_NaN()) |
| 354 , m_fragmentEndTime(MediaPlayer::invalidTime()) | 354 , m_fragmentEndTime(std::numeric_limits<double>::quiet_NaN()) |
| 355 , m_pendingActionFlags(0) | 355 , m_pendingActionFlags(0) |
| 356 , m_userGestureRequiredForPlay(false) | 356 , m_userGestureRequiredForPlay(false) |
| 357 , m_playing(false) | 357 , m_playing(false) |
| 358 , m_shouldDelayLoadEvent(false) | 358 , m_shouldDelayLoadEvent(false) |
| 359 , m_haveFiredLoadedData(false) | 359 , m_haveFiredLoadedData(false) |
| 360 , m_autoplaying(true) | 360 , m_autoplaying(true) |
| 361 , m_muted(false) | 361 , m_muted(false) |
| 362 , m_paused(true) | 362 , m_paused(true) |
| 363 , m_seeking(false) | 363 , m_seeking(false) |
| 364 , m_sentStalledEvent(false) | 364 , m_sentStalledEvent(false) |
| (...skipping 1480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1845 scheduleEvent(EventTypeNames::loadedmetadata); | 1845 scheduleEvent(EventTypeNames::loadedmetadata); |
| 1846 | 1846 |
| 1847 bool jumped = false; | 1847 bool jumped = false; |
| 1848 if (m_defaultPlaybackStartPosition > 0) { | 1848 if (m_defaultPlaybackStartPosition > 0) { |
| 1849 seek(m_defaultPlaybackStartPosition); | 1849 seek(m_defaultPlaybackStartPosition); |
| 1850 jumped = true; | 1850 jumped = true; |
| 1851 } | 1851 } |
| 1852 m_defaultPlaybackStartPosition = 0; | 1852 m_defaultPlaybackStartPosition = 0; |
| 1853 | 1853 |
| 1854 double initialPlaybackPosition = fragmentParser.startTime(); | 1854 double initialPlaybackPosition = fragmentParser.startTime(); |
| 1855 if (initialPlaybackPosition == MediaPlayer::invalidTime()) | 1855 if (std::isnan(initialPlaybackPosition)) |
| 1856 initialPlaybackPosition = 0; | 1856 initialPlaybackPosition = 0; |
| 1857 | 1857 |
| 1858 if (!jumped && initialPlaybackPosition > 0) { | 1858 if (!jumped && initialPlaybackPosition > 0) { |
| 1859 m_sentEndEvent = false; | 1859 m_sentEndEvent = false; |
| 1860 UseCounter::count(document(), UseCounter::HTMLMediaElementSeekToFrag
mentStart); | 1860 UseCounter::count(document(), UseCounter::HTMLMediaElementSeekToFrag
mentStart); |
| 1861 seek(initialPlaybackPosition); | 1861 seek(initialPlaybackPosition); |
| 1862 jumped = true; | 1862 jumped = true; |
| 1863 } | 1863 } |
| 1864 | 1864 |
| 1865 if (m_mediaController) { | 1865 if (m_mediaController) { |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2096 { | 2096 { |
| 2097 if (!webMediaPlayer() || m_readyState < HAVE_METADATA) | 2097 if (!webMediaPlayer() || m_readyState < HAVE_METADATA) |
| 2098 return; | 2098 return; |
| 2099 | 2099 |
| 2100 m_cachedTime = webMediaPlayer()->currentTime(); | 2100 m_cachedTime = webMediaPlayer()->currentTime(); |
| 2101 } | 2101 } |
| 2102 | 2102 |
| 2103 void HTMLMediaElement::invalidateCachedTime() | 2103 void HTMLMediaElement::invalidateCachedTime() |
| 2104 { | 2104 { |
| 2105 WTF_LOG(Media, "HTMLMediaElement::invalidateCachedTime(%p)", this); | 2105 WTF_LOG(Media, "HTMLMediaElement::invalidateCachedTime(%p)", this); |
| 2106 m_cachedTime = MediaPlayer::invalidTime(); | 2106 m_cachedTime = std::numeric_limits<double>::quiet_NaN(); |
| 2107 } | 2107 } |
| 2108 | 2108 |
| 2109 // playback state | 2109 // playback state |
| 2110 double HTMLMediaElement::currentTime() const | 2110 double HTMLMediaElement::currentTime() const |
| 2111 { | 2111 { |
| 2112 if (m_defaultPlaybackStartPosition) | 2112 if (m_defaultPlaybackStartPosition) |
| 2113 return m_defaultPlaybackStartPosition; | 2113 return m_defaultPlaybackStartPosition; |
| 2114 | 2114 |
| 2115 if (m_readyState == HAVE_NOTHING) | 2115 if (m_readyState == HAVE_NOTHING) |
| 2116 return 0; | 2116 return 0; |
| 2117 | 2117 |
| 2118 if (m_seeking) { | 2118 if (m_seeking) { |
| 2119 WTF_LOG(Media, "HTMLMediaElement::currentTime(%p) - seeking, returning %
f", this, m_lastSeekTime); | 2119 WTF_LOG(Media, "HTMLMediaElement::currentTime(%p) - seeking, returning %
f", this, m_lastSeekTime); |
| 2120 return m_lastSeekTime; | 2120 return m_lastSeekTime; |
| 2121 } | 2121 } |
| 2122 | 2122 |
| 2123 if (m_cachedTime != MediaPlayer::invalidTime() && m_paused) { | 2123 if (!std::isnan(m_cachedTime) && m_paused) { |
| 2124 #if LOG_CACHED_TIME_WARNINGS | 2124 #if LOG_CACHED_TIME_WARNINGS |
| 2125 static const double minCachedDeltaForWarning = 0.01; | 2125 static const double minCachedDeltaForWarning = 0.01; |
| 2126 double delta = m_cachedTime - webMediaPlayer()->currentTime(); | 2126 double delta = m_cachedTime - webMediaPlayer()->currentTime(); |
| 2127 if (delta > minCachedDeltaForWarning) | 2127 if (delta > minCachedDeltaForWarning) |
| 2128 WTF_LOG(Media, "HTMLMediaElement::currentTime(%p) - WARNING, cached
time is %f seconds off of media time when paused", this, delta); | 2128 WTF_LOG(Media, "HTMLMediaElement::currentTime(%p) - WARNING, cached
time is %f seconds off of media time when paused", this, delta); |
| 2129 #endif | 2129 #endif |
| 2130 return m_cachedTime; | 2130 return m_cachedTime; |
| 2131 } | 2131 } |
| 2132 | 2132 |
| 2133 refreshCachedTime(); | 2133 refreshCachedTime(); |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2486 return; | 2486 return; |
| 2487 | 2487 |
| 2488 m_previousProgressTime = WTF::currentTime(); | 2488 m_previousProgressTime = WTF::currentTime(); |
| 2489 m_playbackProgressTimer.startRepeating(maxTimeupdateEventFrequency, FROM_HER
E); | 2489 m_playbackProgressTimer.startRepeating(maxTimeupdateEventFrequency, FROM_HER
E); |
| 2490 } | 2490 } |
| 2491 | 2491 |
| 2492 void HTMLMediaElement::playbackProgressTimerFired(Timer<HTMLMediaElement>*) | 2492 void HTMLMediaElement::playbackProgressTimerFired(Timer<HTMLMediaElement>*) |
| 2493 { | 2493 { |
| 2494 ASSERT(m_player); | 2494 ASSERT(m_player); |
| 2495 | 2495 |
| 2496 if (m_fragmentEndTime != MediaPlayer::invalidTime() && currentTime() >= m_fr
agmentEndTime && directionOfPlayback() == Forward) { | 2496 if (!std::isnan(m_fragmentEndTime) && currentTime() >= m_fragmentEndTime &&
directionOfPlayback() == Forward) { |
| 2497 m_fragmentEndTime = MediaPlayer::invalidTime(); | 2497 m_fragmentEndTime = std::numeric_limits<double>::quiet_NaN(); |
| 2498 if (!m_mediaController && !m_paused) { | 2498 if (!m_mediaController && !m_paused) { |
| 2499 UseCounter::count(document(), UseCounter::HTMLMediaElementPauseAtFra
gmentEnd); | 2499 UseCounter::count(document(), UseCounter::HTMLMediaElementPauseAtFra
gmentEnd); |
| 2500 // changes paused to true and fires a simple event named pause at th
e media element. | 2500 // changes paused to true and fires a simple event named pause at th
e media element. |
| 2501 pause(); | 2501 pause(); |
| 2502 } | 2502 } |
| 2503 } | 2503 } |
| 2504 | 2504 |
| 2505 if (!m_seeking) | 2505 if (!m_seeking) |
| 2506 scheduleTimeupdateEvent(true); | 2506 scheduleTimeupdateEvent(true); |
| 2507 | 2507 |
| (...skipping 1607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4115 | 4115 |
| 4116 #if ENABLE(WEB_AUDIO) | 4116 #if ENABLE(WEB_AUDIO) |
| 4117 void HTMLMediaElement::clearWeakMembers(Visitor* visitor) | 4117 void HTMLMediaElement::clearWeakMembers(Visitor* visitor) |
| 4118 { | 4118 { |
| 4119 if (!visitor->isAlive(m_audioSourceNode) && audioSourceProvider()) | 4119 if (!visitor->isAlive(m_audioSourceNode) && audioSourceProvider()) |
| 4120 audioSourceProvider()->setClient(nullptr); | 4120 audioSourceProvider()->setClient(nullptr); |
| 4121 } | 4121 } |
| 4122 #endif | 4122 #endif |
| 4123 | 4123 |
| 4124 } | 4124 } |
| OLD | NEW |