| 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 1762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1773 if (m_readyState == HAVE_NOTHING) { | 1773 if (m_readyState == HAVE_NOTHING) { |
| 1774 m_defaultPlaybackStartPosition = time; | 1774 m_defaultPlaybackStartPosition = time; |
| 1775 return; | 1775 return; |
| 1776 } | 1776 } |
| 1777 | 1777 |
| 1778 seek(time); | 1778 seek(time); |
| 1779 } | 1779 } |
| 1780 | 1780 |
| 1781 double HTMLMediaElement::duration() const | 1781 double HTMLMediaElement::duration() const |
| 1782 { | 1782 { |
| 1783 // FIXME: remove m_webMediaPlayer check once we figure out how | 1783 if (m_readyState < HAVE_METADATA) |
| 1784 // m_webMediaPlayer is going out of sync with readystate. | |
| 1785 // m_webMediaPlayer is cleared but readystate is not set to HAVE_NOTHING. | |
| 1786 if (!m_webMediaPlayer || m_readyState < HAVE_METADATA) | |
| 1787 return std::numeric_limits<double>::quiet_NaN(); | 1784 return std::numeric_limits<double>::quiet_NaN(); |
| 1788 | 1785 |
| 1789 // FIXME: Refactor so m_duration is kept current (in both MSE and | 1786 // FIXME: Refactor so m_duration is kept current (in both MSE and |
| 1790 // non-MSE cases) once we have transitioned from HAVE_NOTHING -> | 1787 // non-MSE cases) once we have transitioned from HAVE_NOTHING -> |
| 1791 // HAVE_METADATA. Currently, m_duration may be out of date for at least MSE | 1788 // HAVE_METADATA. Currently, m_duration may be out of date for at least MSE |
| 1792 // case because MediaSource and SourceBuffer do not notify the element | 1789 // case because MediaSource and SourceBuffer do not notify the element |
| 1793 // directly upon duration changes caused by endOfStream, remove, or append | 1790 // directly upon duration changes caused by endOfStream, remove, or append |
| 1794 // operations; rather the notification is triggered by the WebMediaPlayer | 1791 // operations; rather the notification is triggered by the WebMediaPlayer |
| 1795 // implementation observing that the underlying engine has updated duration | 1792 // implementation observing that the underlying engine has updated duration |
| 1796 // and notifying the element to consult its MediaSource for current | 1793 // and notifying the element to consult its MediaSource for current |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1839 updatePlaybackRate(); | 1836 updatePlaybackRate(); |
| 1840 } | 1837 } |
| 1841 | 1838 |
| 1842 HTMLMediaElement::DirectionOfPlayback HTMLMediaElement::directionOfPlayback() co
nst | 1839 HTMLMediaElement::DirectionOfPlayback HTMLMediaElement::directionOfPlayback() co
nst |
| 1843 { | 1840 { |
| 1844 return m_playbackRate >= 0 ? Forward : Backward; | 1841 return m_playbackRate >= 0 ? Forward : Backward; |
| 1845 } | 1842 } |
| 1846 | 1843 |
| 1847 void HTMLMediaElement::updatePlaybackRate() | 1844 void HTMLMediaElement::updatePlaybackRate() |
| 1848 { | 1845 { |
| 1849 // FIXME: remove m_webMediaPlayer check once we figure out how | 1846 if (potentiallyPlaying()) |
| 1850 // m_webMediaPlayer is going out of sync with readystate. | |
| 1851 // m_webMediaPlayer is cleared but readystate is not set to HAVE_NOTHING. | |
| 1852 if (m_webMediaPlayer && potentiallyPlaying()) | |
| 1853 webMediaPlayer()->setRate(playbackRate()); | 1847 webMediaPlayer()->setRate(playbackRate()); |
| 1854 } | 1848 } |
| 1855 | 1849 |
| 1856 bool HTMLMediaElement::ended() const | 1850 bool HTMLMediaElement::ended() const |
| 1857 { | 1851 { |
| 1858 // 4.8.10.8 Playing the media resource | 1852 // 4.8.10.8 Playing the media resource |
| 1859 // The ended attribute must return true if the media element has ended | 1853 // The ended attribute must return true if the media element has ended |
| 1860 // playback and the direction of playback is forwards, and false otherwise. | 1854 // playback and the direction of playback is forwards, and false otherwise. |
| 1861 return endedPlayback() && directionOfPlayback() == Forward; | 1855 return endedPlayback() && directionOfPlayback() == Forward; |
| 1862 } | 1856 } |
| (...skipping 1775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3638 visitor->trace(m_client); | 3632 visitor->trace(m_client); |
| 3639 } | 3633 } |
| 3640 | 3634 |
| 3641 DEFINE_TRACE(HTMLMediaElement::AudioSourceProviderImpl) | 3635 DEFINE_TRACE(HTMLMediaElement::AudioSourceProviderImpl) |
| 3642 { | 3636 { |
| 3643 visitor->trace(m_client); | 3637 visitor->trace(m_client); |
| 3644 } | 3638 } |
| 3645 #endif | 3639 #endif |
| 3646 | 3640 |
| 3647 } | 3641 } |
| OLD | NEW |