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 2922 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2933 { | 2933 { |
2934 // "pausedToBuffer" means the media engine's rate is 0, but only because it
had to stop playing | 2934 // "pausedToBuffer" means the media engine's rate is 0, but only because it
had to stop playing |
2935 // when it ran out of buffered data. A movie is this state is "potentially p
laying", modulo the | 2935 // when it ran out of buffered data. A movie is this state is "potentially p
laying", modulo the |
2936 // checks in couldPlayIfEnoughData(). | 2936 // checks in couldPlayIfEnoughData(). |
2937 bool pausedToBuffer = m_readyStateMaximum >= HAVE_FUTURE_DATA && m_readyStat
e < HAVE_FUTURE_DATA; | 2937 bool pausedToBuffer = m_readyStateMaximum >= HAVE_FUTURE_DATA && m_readyStat
e < HAVE_FUTURE_DATA; |
2938 return (pausedToBuffer || m_readyState >= HAVE_FUTURE_DATA) && couldPlayIfEn
oughData() && !isBlockedOnMediaController(); | 2938 return (pausedToBuffer || m_readyState >= HAVE_FUTURE_DATA) && couldPlayIfEn
oughData() && !isBlockedOnMediaController(); |
2939 } | 2939 } |
2940 | 2940 |
2941 bool HTMLMediaElement::couldPlayIfEnoughData() const | 2941 bool HTMLMediaElement::couldPlayIfEnoughData() const |
2942 { | 2942 { |
2943 return !paused() && !endedPlayback() && !stoppedDueToErrors() && !pausedForU
serInteraction(); | 2943 return !paused() && !endedPlayback() && !stoppedDueToErrors(); |
2944 } | 2944 } |
2945 | 2945 |
2946 bool HTMLMediaElement::endedPlayback() const | 2946 bool HTMLMediaElement::endedPlayback() const |
2947 { | 2947 { |
2948 double dur = duration(); | 2948 double dur = duration(); |
2949 if (!m_player || std::isnan(dur)) | 2949 if (!m_player || std::isnan(dur)) |
2950 return false; | 2950 return false; |
2951 | 2951 |
2952 // 4.8.10.8 Playing the media resource | 2952 // 4.8.10.8 Playing the media resource |
2953 | 2953 |
(...skipping 21 matching lines...) Expand all Loading... |
2975 { | 2975 { |
2976 if (m_readyState >= HAVE_METADATA && m_error) { | 2976 if (m_readyState >= HAVE_METADATA && m_error) { |
2977 RefPtr<TimeRanges> seekableRanges = seekable(); | 2977 RefPtr<TimeRanges> seekableRanges = seekable(); |
2978 if (!seekableRanges->contain(currentTime())) | 2978 if (!seekableRanges->contain(currentTime())) |
2979 return true; | 2979 return true; |
2980 } | 2980 } |
2981 | 2981 |
2982 return false; | 2982 return false; |
2983 } | 2983 } |
2984 | 2984 |
2985 bool HTMLMediaElement::pausedForUserInteraction() const | |
2986 { | |
2987 // return !paused() && m_readyState >= HAVE_FUTURE_DATA && [UA requires a dec
itions from the user] | |
2988 return false; | |
2989 } | |
2990 | |
2991 void HTMLMediaElement::updateVolume() | 2985 void HTMLMediaElement::updateVolume() |
2992 { | 2986 { |
2993 if (webMediaPlayer()) | 2987 if (webMediaPlayer()) |
2994 webMediaPlayer()->setVolume(playerVolume()); | 2988 webMediaPlayer()->setVolume(playerVolume()); |
2995 | 2989 |
2996 if (hasMediaControls()) | 2990 if (hasMediaControls()) |
2997 mediaControls()->updateVolume(); | 2991 mediaControls()->updateVolume(); |
2998 } | 2992 } |
2999 | 2993 |
3000 double HTMLMediaElement::playerVolume() const | 2994 double HTMLMediaElement::playerVolume() const |
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3544 void HTMLMediaElement::updateMediaController() | 3538 void HTMLMediaElement::updateMediaController() |
3545 { | 3539 { |
3546 if (m_mediaController) | 3540 if (m_mediaController) |
3547 m_mediaController->reportControllerState(); | 3541 m_mediaController->reportControllerState(); |
3548 } | 3542 } |
3549 | 3543 |
3550 bool HTMLMediaElement::isBlocked() const | 3544 bool HTMLMediaElement::isBlocked() const |
3551 { | 3545 { |
3552 // A media element is a blocked media element if its readyState attribute is
in the | 3546 // A media element is a blocked media element if its readyState attribute is
in the |
3553 // HAVE_NOTHING state, the HAVE_METADATA state, or the HAVE_CURRENT_DATA sta
te, | 3547 // HAVE_NOTHING state, the HAVE_METADATA state, or the HAVE_CURRENT_DATA sta
te, |
| 3548 // or if the element has paused for user interaction or paused for in-band c
ontent. |
3554 if (m_readyState <= HAVE_CURRENT_DATA) | 3549 if (m_readyState <= HAVE_CURRENT_DATA) |
3555 return true; | 3550 return true; |
3556 | 3551 |
3557 // or if the element has paused for user interaction. | 3552 return false; |
3558 return pausedForUserInteraction(); | |
3559 } | 3553 } |
3560 | 3554 |
3561 bool HTMLMediaElement::isBlockedOnMediaController() const | 3555 bool HTMLMediaElement::isBlockedOnMediaController() const |
3562 { | 3556 { |
3563 if (!m_mediaController) | 3557 if (!m_mediaController) |
3564 return false; | 3558 return false; |
3565 | 3559 |
3566 // A media element is blocked on its media controller if the MediaController
is a blocked | 3560 // A media element is blocked on its media controller if the MediaController
is a blocked |
3567 // media controller, | 3561 // media controller, |
3568 if (m_mediaController->isBlocked()) | 3562 if (m_mediaController->isBlocked()) |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3663 visitor->trace(m_error); | 3657 visitor->trace(m_error); |
3664 visitor->trace(m_currentSourceNode); | 3658 visitor->trace(m_currentSourceNode); |
3665 visitor->trace(m_nextChildNodeToConsider); | 3659 visitor->trace(m_nextChildNodeToConsider); |
3666 visitor->trace(m_textTracks); | 3660 visitor->trace(m_textTracks); |
3667 visitor->trace(m_textTracksWhenResourceSelectionBegan); | 3661 visitor->trace(m_textTracksWhenResourceSelectionBegan); |
3668 WillBeHeapSupplementable<HTMLMediaElement>::trace(visitor); | 3662 WillBeHeapSupplementable<HTMLMediaElement>::trace(visitor); |
3669 HTMLElement::trace(visitor); | 3663 HTMLElement::trace(visitor); |
3670 } | 3664 } |
3671 | 3665 |
3672 } | 3666 } |
OLD | NEW |