| 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 1694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1705 | 1705 |
| 1706 void HTMLMediaElement::progressEventTimerFired(Timer<HTMLMediaElement>*) | 1706 void HTMLMediaElement::progressEventTimerFired(Timer<HTMLMediaElement>*) |
| 1707 { | 1707 { |
| 1708 ASSERT(m_player); | 1708 ASSERT(m_player); |
| 1709 if (m_networkState != NETWORK_LOADING) | 1709 if (m_networkState != NETWORK_LOADING) |
| 1710 return; | 1710 return; |
| 1711 | 1711 |
| 1712 double time = WTF::currentTime(); | 1712 double time = WTF::currentTime(); |
| 1713 double timedelta = time - m_previousProgressTime; | 1713 double timedelta = time - m_previousProgressTime; |
| 1714 | 1714 |
| 1715 if (webMediaPlayer() && webMediaPlayer()->didLoadingProgress()) { | 1715 if (m_player->didLoadingProgress()) { |
| 1716 scheduleEvent(EventTypeNames::progress); | 1716 scheduleEvent(EventTypeNames::progress); |
| 1717 m_previousProgressTime = time; | 1717 m_previousProgressTime = time; |
| 1718 m_sentStalledEvent = false; | 1718 m_sentStalledEvent = false; |
| 1719 if (renderer()) | 1719 if (renderer()) |
| 1720 renderer()->updateFromElement(); | 1720 renderer()->updateFromElement(); |
| 1721 } else if (timedelta > 3.0 && !m_sentStalledEvent) { | 1721 } else if (timedelta > 3.0 && !m_sentStalledEvent) { |
| 1722 scheduleEvent(EventTypeNames::stalled); | 1722 scheduleEvent(EventTypeNames::stalled); |
| 1723 m_sentStalledEvent = true; | 1723 m_sentStalledEvent = true; |
| 1724 setShouldDelayLoadEvent(false); | 1724 setShouldDelayLoadEvent(false); |
| 1725 } | 1725 } |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1982 void HTMLMediaElement::setPlaybackRate(double rate) | 1982 void HTMLMediaElement::setPlaybackRate(double rate) |
| 1983 { | 1983 { |
| 1984 WTF_LOG(Media, "HTMLMediaElement::setPlaybackRate(%f)", rate); | 1984 WTF_LOG(Media, "HTMLMediaElement::setPlaybackRate(%f)", rate); |
| 1985 | 1985 |
| 1986 if (m_playbackRate != rate) { | 1986 if (m_playbackRate != rate) { |
| 1987 m_playbackRate = rate; | 1987 m_playbackRate = rate; |
| 1988 invalidateCachedTime(); | 1988 invalidateCachedTime(); |
| 1989 scheduleEvent(EventTypeNames::ratechange); | 1989 scheduleEvent(EventTypeNames::ratechange); |
| 1990 } | 1990 } |
| 1991 | 1991 |
| 1992 if (m_player && potentiallyPlaying() && !m_mediaController) | 1992 if (m_player && potentiallyPlaying() && m_player->rate() != rate && !m_media
Controller) |
| 1993 webMediaPlayer()->setRate(rate); | 1993 m_player->setRate(rate); |
| 1994 } | 1994 } |
| 1995 | 1995 |
| 1996 void HTMLMediaElement::updatePlaybackRate() | 1996 void HTMLMediaElement::updatePlaybackRate() |
| 1997 { | 1997 { |
| 1998 double effectiveRate = m_mediaController ? m_mediaController->playbackRate()
: m_playbackRate; | 1998 double effectiveRate = m_mediaController ? m_mediaController->playbackRate()
: m_playbackRate; |
| 1999 if (m_player && potentiallyPlaying()) | 1999 if (m_player && potentiallyPlaying() && m_player->rate() != effectiveRate) |
| 2000 webMediaPlayer()->setRate(effectiveRate); | 2000 m_player->setRate(effectiveRate); |
| 2001 } | 2001 } |
| 2002 | 2002 |
| 2003 bool HTMLMediaElement::ended() const | 2003 bool HTMLMediaElement::ended() const |
| 2004 { | 2004 { |
| 2005 // 4.8.10.8 Playing the media resource | 2005 // 4.8.10.8 Playing the media resource |
| 2006 // The ended attribute must return true if the media element has ended | 2006 // The ended attribute must return true if the media element has ended |
| 2007 // playback and the direction of playback is forwards, and false otherwise. | 2007 // playback and the direction of playback is forwards, and false otherwise. |
| 2008 return endedPlayback() && m_playbackRate > 0; | 2008 return endedPlayback() && m_playbackRate > 0; |
| 2009 } | 2009 } |
| 2010 | 2010 |
| (...skipping 879 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2890 ASSERT(hasVideo()); // "resize" makes no sense absent video. | 2890 ASSERT(hasVideo()); // "resize" makes no sense absent video. |
| 2891 if (m_readyState > HAVE_NOTHING && isHTMLVideoElement(*this)) | 2891 if (m_readyState > HAVE_NOTHING && isHTMLVideoElement(*this)) |
| 2892 scheduleEvent(EventTypeNames::resize); | 2892 scheduleEvent(EventTypeNames::resize); |
| 2893 | 2893 |
| 2894 if (renderer()) | 2894 if (renderer()) |
| 2895 renderer()->updateFromElement(); | 2895 renderer()->updateFromElement(); |
| 2896 } | 2896 } |
| 2897 | 2897 |
| 2898 PassRefPtr<TimeRanges> HTMLMediaElement::buffered() const | 2898 PassRefPtr<TimeRanges> HTMLMediaElement::buffered() const |
| 2899 { | 2899 { |
| 2900 if (!m_player) |
| 2901 return TimeRanges::create(); |
| 2902 |
| 2900 if (m_mediaSource) | 2903 if (m_mediaSource) |
| 2901 return m_mediaSource->buffered(); | 2904 return m_mediaSource->buffered(); |
| 2902 | 2905 |
| 2903 if (!webMediaPlayer()) | 2906 return m_player->buffered(); |
| 2904 return TimeRanges::create(); | |
| 2905 | |
| 2906 return TimeRanges::create(webMediaPlayer()->buffered()); | |
| 2907 } | 2907 } |
| 2908 | 2908 |
| 2909 PassRefPtr<TimeRanges> HTMLMediaElement::played() | 2909 PassRefPtr<TimeRanges> HTMLMediaElement::played() |
| 2910 { | 2910 { |
| 2911 if (m_playing) { | 2911 if (m_playing) { |
| 2912 double time = currentTime(); | 2912 double time = currentTime(); |
| 2913 if (time > m_lastSeekTime) | 2913 if (time > m_lastSeekTime) |
| 2914 addPlayedRange(m_lastSeekTime, time); | 2914 addPlayedRange(m_lastSeekTime, time); |
| 2915 } | 2915 } |
| 2916 | 2916 |
| 2917 if (!m_playedTimeRanges) | 2917 if (!m_playedTimeRanges) |
| 2918 m_playedTimeRanges = TimeRanges::create(); | 2918 m_playedTimeRanges = TimeRanges::create(); |
| 2919 | 2919 |
| 2920 return m_playedTimeRanges->copy(); | 2920 return m_playedTimeRanges->copy(); |
| 2921 } | 2921 } |
| 2922 | 2922 |
| 2923 PassRefPtr<TimeRanges> HTMLMediaElement::seekable() const | 2923 PassRefPtr<TimeRanges> HTMLMediaElement::seekable() const |
| 2924 { | 2924 { |
| 2925 if (webMediaPlayer()) { | 2925 if (m_player) { |
| 2926 double maxTimeSeekable = webMediaPlayer()->maxTimeSeekable(); | 2926 double maxTimeSeekable = m_player->maxTimeSeekable(); |
| 2927 if (maxTimeSeekable) | 2927 if (maxTimeSeekable) |
| 2928 return TimeRanges::create(0, maxTimeSeekable); | 2928 return TimeRanges::create(0, maxTimeSeekable); |
| 2929 } | 2929 } |
| 2930 return TimeRanges::create(); | 2930 return TimeRanges::create(); |
| 2931 } | 2931 } |
| 2932 | 2932 |
| 2933 bool HTMLMediaElement::potentiallyPlaying() const | 2933 bool HTMLMediaElement::potentiallyPlaying() const |
| 2934 { | 2934 { |
| 2935 // "pausedToBuffer" means the media engine's rate is 0, but only because it
had to stop playing | 2935 // "pausedToBuffer" means the media engine's rate is 0, but only because it
had to stop playing |
| 2936 // when it ran out of buffered data. A movie is this state is "potentially p
laying", modulo the | 2936 // when it ran out of buffered data. A movie is this state is "potentially p
laying", modulo the |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3026 WTF_LOG(Media, "HTMLMediaElement::updatePlayState - shouldBePlaying = %s, pl
ayerPaused = %s", | 3026 WTF_LOG(Media, "HTMLMediaElement::updatePlayState - shouldBePlaying = %s, pl
ayerPaused = %s", |
| 3027 boolString(shouldBePlaying), boolString(playerPaused)); | 3027 boolString(shouldBePlaying), boolString(playerPaused)); |
| 3028 | 3028 |
| 3029 if (shouldBePlaying) { | 3029 if (shouldBePlaying) { |
| 3030 setDisplayMode(Video); | 3030 setDisplayMode(Video); |
| 3031 invalidateCachedTime(); | 3031 invalidateCachedTime(); |
| 3032 | 3032 |
| 3033 if (playerPaused) { | 3033 if (playerPaused) { |
| 3034 // Set rate, muted before calling play in case they were set before
the media engine was setup. | 3034 // Set rate, muted before calling play in case they were set before
the media engine was setup. |
| 3035 // The media engine should just stash the rate and muted values sinc
e it isn't already playing. | 3035 // The media engine should just stash the rate and muted values sinc
e it isn't already playing. |
| 3036 webMediaPlayer()->setRate(m_playbackRate); | 3036 m_player->setRate(m_playbackRate); |
| 3037 updateVolume(); | 3037 updateVolume(); |
| 3038 webMediaPlayer()->play(); | 3038 webMediaPlayer()->play(); |
| 3039 } | 3039 } |
| 3040 | 3040 |
| 3041 if (hasMediaControls()) | 3041 if (hasMediaControls()) |
| 3042 mediaControls()->playbackStarted(); | 3042 mediaControls()->playbackStarted(); |
| 3043 startPlaybackProgressTimer(); | 3043 startPlaybackProgressTimer(); |
| 3044 m_playing = true; | 3044 m_playing = true; |
| 3045 | 3045 |
| 3046 } else { // Should not be playing right now | 3046 } else { // Should not be playing right now |
| (...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3657 visitor->trace(m_error); | 3657 visitor->trace(m_error); |
| 3658 visitor->trace(m_currentSourceNode); | 3658 visitor->trace(m_currentSourceNode); |
| 3659 visitor->trace(m_nextChildNodeToConsider); | 3659 visitor->trace(m_nextChildNodeToConsider); |
| 3660 visitor->trace(m_textTracks); | 3660 visitor->trace(m_textTracks); |
| 3661 visitor->trace(m_textTracksWhenResourceSelectionBegan); | 3661 visitor->trace(m_textTracksWhenResourceSelectionBegan); |
| 3662 WillBeHeapSupplementable<HTMLMediaElement>::trace(visitor); | 3662 WillBeHeapSupplementable<HTMLMediaElement>::trace(visitor); |
| 3663 HTMLElement::trace(visitor); | 3663 HTMLElement::trace(visitor); |
| 3664 } | 3664 } |
| 3665 | 3665 |
| 3666 } | 3666 } |
| OLD | NEW |