Chromium Code Reviews| 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 1823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1834 if (m_lastSeekTime < now) | 1834 if (m_lastSeekTime < now) |
| 1835 addPlayedRange(m_lastSeekTime, now); | 1835 addPlayedRange(m_lastSeekTime, now); |
| 1836 } | 1836 } |
| 1837 m_lastSeekTime = time; | 1837 m_lastSeekTime = time; |
| 1838 m_sentEndEvent = false; | 1838 m_sentEndEvent = false; |
| 1839 | 1839 |
| 1840 // 8 - Queue a task to fire a simple event named seeking at the element. | 1840 // 8 - Queue a task to fire a simple event named seeking at the element. |
| 1841 scheduleEvent(EventTypeNames::seeking); | 1841 scheduleEvent(EventTypeNames::seeking); |
| 1842 | 1842 |
| 1843 // 9 - Set the current playback position to the given new playback position | 1843 // 9 - Set the current playback position to the given new playback position |
| 1844 m_player->seek(time); | 1844 webMediaPlayer()->seek(time); |
| 1845 | 1845 |
| 1846 // 10-14 are handled, if necessary, when the engine signals a readystate cha nge or otherwise | 1846 // 10-14 are handled, if necessary, when the engine signals a readystate cha nge or otherwise |
| 1847 // satisfies seek completion and signals a time change. | 1847 // satisfies seek completion and signals a time change. |
| 1848 } | 1848 } |
| 1849 | 1849 |
| 1850 void HTMLMediaElement::finishSeek() | 1850 void HTMLMediaElement::finishSeek() |
| 1851 { | 1851 { |
| 1852 WTF_LOG(Media, "HTMLMediaElement::finishSeek"); | 1852 WTF_LOG(Media, "HTMLMediaElement::finishSeek"); |
| 1853 | 1853 |
| 1854 // 4.8.10.9 Seeking completion | 1854 // 4.8.10.9 Seeking completion |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 1874 return webMediaPlayer() && webMediaPlayer()->hasAudio(); | 1874 return webMediaPlayer() && webMediaPlayer()->hasAudio(); |
| 1875 } | 1875 } |
| 1876 | 1876 |
| 1877 bool HTMLMediaElement::seeking() const | 1877 bool HTMLMediaElement::seeking() const |
| 1878 { | 1878 { |
| 1879 return m_seeking; | 1879 return m_seeking; |
| 1880 } | 1880 } |
| 1881 | 1881 |
| 1882 void HTMLMediaElement::refreshCachedTime() const | 1882 void HTMLMediaElement::refreshCachedTime() const |
| 1883 { | 1883 { |
| 1884 m_cachedTime = m_player->currentTime(); | 1884 m_cachedTime = webMediaPlayer() ? webMediaPlayer()->currentTime() : 0.0; |
|
acolwell GONE FROM CHROMIUM
2014/06/03 17:02:38
Just return early w/o modifying m_cachedTime or m_
Srirama
2014/06/04 06:01:12
Done.
| |
| 1885 m_cachedTimeWallClockUpdateTime = WTF::currentTime(); | 1885 m_cachedTimeWallClockUpdateTime = WTF::currentTime(); |
| 1886 } | 1886 } |
| 1887 | 1887 |
| 1888 void HTMLMediaElement::invalidateCachedTime() | 1888 void HTMLMediaElement::invalidateCachedTime() |
| 1889 { | 1889 { |
| 1890 WTF_LOG(Media, "HTMLMediaElement::invalidateCachedTime"); | 1890 WTF_LOG(Media, "HTMLMediaElement::invalidateCachedTime"); |
| 1891 | 1891 |
| 1892 // Don't try to cache movie time when playback first starts as the time repo rted by the engine | 1892 // Don't try to cache movie time when playback first starts as the time repo rted by the engine |
| 1893 // sometimes fluctuates for a short amount of time, so the cached time will be off if we take it | 1893 // sometimes fluctuates for a short amount of time, so the cached time will be off if we take it |
| 1894 // too early. | 1894 // too early. |
| 1895 static const double minimumTimePlayingBeforeCacheSnapshot = 0.5; | 1895 static const double minimumTimePlayingBeforeCacheSnapshot = 0.5; |
| 1896 | 1896 |
| 1897 m_minimumWallClockTimeToCacheMediaTime = WTF::currentTime() + minimumTimePla yingBeforeCacheSnapshot; | 1897 m_minimumWallClockTimeToCacheMediaTime = WTF::currentTime() + minimumTimePla yingBeforeCacheSnapshot; |
| 1898 m_cachedTime = MediaPlayer::invalidTime(); | 1898 m_cachedTime = MediaPlayer::invalidTime(); |
| 1899 } | 1899 } |
| 1900 | 1900 |
| 1901 // playback state | 1901 // playback state |
| 1902 double HTMLMediaElement::currentTime() const | 1902 double HTMLMediaElement::currentTime() const |
| 1903 { | 1903 { |
| 1904 #if LOG_CACHED_TIME_WARNINGS | 1904 #if LOG_CACHED_TIME_WARNINGS |
| 1905 static const double minCachedDeltaForWarning = 0.01; | 1905 static const double minCachedDeltaForWarning = 0.01; |
| 1906 #endif | 1906 #endif |
| 1907 | 1907 |
| 1908 if (!m_player) | 1908 if (!m_player || !webMediaPlayer()) |
| 1909 return 0; | 1909 return 0; |
| 1910 | 1910 |
| 1911 if (m_seeking) { | 1911 if (m_seeking) { |
| 1912 WTF_LOG(Media, "HTMLMediaElement::currentTime - seeking, returning %f", m_lastSeekTime); | 1912 WTF_LOG(Media, "HTMLMediaElement::currentTime - seeking, returning %f", m_lastSeekTime); |
| 1913 return m_lastSeekTime; | 1913 return m_lastSeekTime; |
| 1914 } | 1914 } |
| 1915 | 1915 |
| 1916 if (m_cachedTime != MediaPlayer::invalidTime() && m_paused) { | 1916 if (m_cachedTime != MediaPlayer::invalidTime() && m_paused) { |
| 1917 #if LOG_CACHED_TIME_WARNINGS | 1917 #if LOG_CACHED_TIME_WARNINGS |
| 1918 double delta = m_cachedTime - m_player->currentTime(); | 1918 double delta = m_cachedTime - webMediaPlayer()->currentTime(); |
| 1919 if (delta > minCachedDeltaForWarning) | 1919 if (delta > minCachedDeltaForWarning) |
| 1920 WTF_LOG(Media, "HTMLMediaElement::currentTime - WARNING, cached time is %f seconds off of media time when paused", delta); | 1920 WTF_LOG(Media, "HTMLMediaElement::currentTime - WARNING, cached time is %f seconds off of media time when paused", delta); |
| 1921 #endif | 1921 #endif |
| 1922 return m_cachedTime; | 1922 return m_cachedTime; |
| 1923 } | 1923 } |
| 1924 | 1924 |
| 1925 refreshCachedTime(); | 1925 refreshCachedTime(); |
| 1926 | 1926 |
| 1927 return m_cachedTime; | 1927 return m_cachedTime; |
| 1928 } | 1928 } |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 1947 // case because MediaSourceBase and SourceBuffer do not notify the element | 1947 // case because MediaSourceBase and SourceBuffer do not notify the element |
| 1948 // directly upon duration changes caused by endOfStream, remove, or append | 1948 // directly upon duration changes caused by endOfStream, remove, or append |
| 1949 // operations; rather the notification is triggered by the WebMediaPlayer | 1949 // operations; rather the notification is triggered by the WebMediaPlayer |
| 1950 // implementation observing that the underlying engine has updated duration | 1950 // implementation observing that the underlying engine has updated duration |
| 1951 // and notifying the element to consult its MediaSource for current | 1951 // and notifying the element to consult its MediaSource for current |
| 1952 // duration. See http://crbug.com/266644 | 1952 // duration. See http://crbug.com/266644 |
| 1953 | 1953 |
| 1954 if (m_mediaSource) | 1954 if (m_mediaSource) |
| 1955 return m_mediaSource->duration(); | 1955 return m_mediaSource->duration(); |
| 1956 | 1956 |
| 1957 return m_player->duration(); | 1957 return webMediaPlayer()->duration(); |
| 1958 } | 1958 } |
| 1959 | 1959 |
| 1960 bool HTMLMediaElement::paused() const | 1960 bool HTMLMediaElement::paused() const |
| 1961 { | 1961 { |
| 1962 return m_paused; | 1962 return m_paused; |
| 1963 } | 1963 } |
| 1964 | 1964 |
| 1965 double HTMLMediaElement::defaultPlaybackRate() const | 1965 double HTMLMediaElement::defaultPlaybackRate() const |
| 1966 { | 1966 { |
| 1967 return m_defaultPlaybackRate; | 1967 return m_defaultPlaybackRate; |
| (...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2763 | 2763 |
| 2764 void HTMLMediaElement::mediaPlayerTimeChanged() | 2764 void HTMLMediaElement::mediaPlayerTimeChanged() |
| 2765 { | 2765 { |
| 2766 WTF_LOG(Media, "HTMLMediaElement::mediaPlayerTimeChanged"); | 2766 WTF_LOG(Media, "HTMLMediaElement::mediaPlayerTimeChanged"); |
| 2767 | 2767 |
| 2768 updateActiveTextTrackCues(currentTime()); | 2768 updateActiveTextTrackCues(currentTime()); |
| 2769 | 2769 |
| 2770 invalidateCachedTime(); | 2770 invalidateCachedTime(); |
| 2771 | 2771 |
| 2772 // 4.8.10.9 steps 12-14. Needed if no ReadyState change is associated with t he seek. | 2772 // 4.8.10.9 steps 12-14. Needed if no ReadyState change is associated with t he seek. |
| 2773 if (m_seeking && m_readyState >= HAVE_CURRENT_DATA && !m_player->seeking()) | 2773 if (m_seeking && m_readyState >= HAVE_CURRENT_DATA && !webMediaPlayer()->see king()) |
| 2774 finishSeek(); | 2774 finishSeek(); |
| 2775 | 2775 |
| 2776 // Always call scheduleTimeupdateEvent when the media engine reports a time discontinuity, | 2776 // Always call scheduleTimeupdateEvent when the media engine reports a time discontinuity, |
| 2777 // it will only queue a 'timeupdate' event if we haven't already posted one at the current | 2777 // it will only queue a 'timeupdate' event if we haven't already posted one at the current |
| 2778 // movie time. | 2778 // movie time. |
| 2779 scheduleTimeupdateEvent(false); | 2779 scheduleTimeupdateEvent(false); |
| 2780 | 2780 |
| 2781 double now = currentTime(); | 2781 double now = currentTime(); |
| 2782 double dur = duration(); | 2782 double dur = duration(); |
| 2783 | 2783 |
| (...skipping 882 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3666 visitor->trace(m_error); | 3666 visitor->trace(m_error); |
| 3667 visitor->trace(m_currentSourceNode); | 3667 visitor->trace(m_currentSourceNode); |
| 3668 visitor->trace(m_nextChildNodeToConsider); | 3668 visitor->trace(m_nextChildNodeToConsider); |
| 3669 visitor->trace(m_textTracks); | 3669 visitor->trace(m_textTracks); |
| 3670 visitor->trace(m_textTracksWhenResourceSelectionBegan); | 3670 visitor->trace(m_textTracksWhenResourceSelectionBegan); |
| 3671 WillBeHeapSupplementable<HTMLMediaElement>::trace(visitor); | 3671 WillBeHeapSupplementable<HTMLMediaElement>::trace(visitor); |
| 3672 HTMLElement::trace(visitor); | 3672 HTMLElement::trace(visitor); |
| 3673 } | 3673 } |
| 3674 | 3674 |
| 3675 } | 3675 } |
| OLD | NEW |