| 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 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 , m_pendingActionFlags(0) | 405 , m_pendingActionFlags(0) |
| 406 , m_userGestureRequiredForPlay(false) | 406 , m_userGestureRequiredForPlay(false) |
| 407 , m_playing(false) | 407 , m_playing(false) |
| 408 , m_shouldDelayLoadEvent(false) | 408 , m_shouldDelayLoadEvent(false) |
| 409 , m_haveFiredLoadedData(false) | 409 , m_haveFiredLoadedData(false) |
| 410 , m_autoplaying(true) | 410 , m_autoplaying(true) |
| 411 , m_muted(false) | 411 , m_muted(false) |
| 412 , m_paused(true) | 412 , m_paused(true) |
| 413 , m_seeking(false) | 413 , m_seeking(false) |
| 414 , m_sentStalledEvent(false) | 414 , m_sentStalledEvent(false) |
| 415 , m_sentEndEvent(false) | |
| 416 , m_ignorePreloadNone(false) | 415 , m_ignorePreloadNone(false) |
| 417 , m_textTracksVisible(false) | 416 , m_textTracksVisible(false) |
| 418 , m_shouldPerformAutomaticTrackSelection(true) | 417 , m_shouldPerformAutomaticTrackSelection(true) |
| 419 , m_tracksAreReady(true) | 418 , m_tracksAreReady(true) |
| 420 , m_processingPreferenceChange(false) | 419 , m_processingPreferenceChange(false) |
| 421 , m_remoteRoutesAvailable(false) | 420 , m_remoteRoutesAvailable(false) |
| 422 , m_playingRemotely(false) | 421 , m_playingRemotely(false) |
| 423 , m_inOverlayFullscreenVideo(false) | 422 , m_inOverlayFullscreenVideo(false) |
| 424 , m_audioTracks(AudioTrackList::create(*this)) | 423 , m_audioTracks(AudioTrackList::create(*this)) |
| 425 , m_videoTracks(VideoTrackList::create(*this)) | 424 , m_videoTracks(VideoTrackList::create(*this)) |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 709 void HTMLMediaElement::invokeLoadAlgorithm() | 708 void HTMLMediaElement::invokeLoadAlgorithm() |
| 710 { | 709 { |
| 711 WTF_LOG(Media, "HTMLMediaElement::invokeLoadAlgorithm(%p)", this); | 710 WTF_LOG(Media, "HTMLMediaElement::invokeLoadAlgorithm(%p)", this); |
| 712 | 711 |
| 713 // Perform the cleanup required for the resource load algorithm to run. | 712 // Perform the cleanup required for the resource load algorithm to run. |
| 714 stopPeriodicTimers(); | 713 stopPeriodicTimers(); |
| 715 m_loadTimer.stop(); | 714 m_loadTimer.stop(); |
| 716 cancelDeferredLoad(); | 715 cancelDeferredLoad(); |
| 717 // FIXME: Figure out appropriate place to reset LoadTextTrackResource if nec
essary and set m_pendingActionFlags to 0 here. | 716 // FIXME: Figure out appropriate place to reset LoadTextTrackResource if nec
essary and set m_pendingActionFlags to 0 here. |
| 718 m_pendingActionFlags &= ~LoadMediaResource; | 717 m_pendingActionFlags &= ~LoadMediaResource; |
| 719 m_sentEndEvent = false; | |
| 720 m_sentStalledEvent = false; | 718 m_sentStalledEvent = false; |
| 721 m_haveFiredLoadedData = false; | 719 m_haveFiredLoadedData = false; |
| 722 m_displayMode = Unknown; | 720 m_displayMode = Unknown; |
| 723 | 721 |
| 724 // 1 - Abort any already-running instance of the resource selection algorith
m for this element. | 722 // 1 - Abort any already-running instance of the resource selection algorith
m for this element. |
| 725 m_loadState = WaitingForSource; | 723 m_loadState = WaitingForSource; |
| 726 m_currentSourceNode = nullptr; | 724 m_currentSourceNode = nullptr; |
| 727 | 725 |
| 728 // 2 - If there are any tasks from the media element's media element event t
ask source in | 726 // 2 - If there are any tasks from the media element's media element event t
ask source in |
| 729 // one of the task queues, then remove those tasks. | 727 // one of the task queues, then remove those tasks. |
| (...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1559 seek(m_defaultPlaybackStartPosition); | 1557 seek(m_defaultPlaybackStartPosition); |
| 1560 jumped = true; | 1558 jumped = true; |
| 1561 } | 1559 } |
| 1562 m_defaultPlaybackStartPosition = 0; | 1560 m_defaultPlaybackStartPosition = 0; |
| 1563 | 1561 |
| 1564 double initialPlaybackPosition = fragmentParser.startTime(); | 1562 double initialPlaybackPosition = fragmentParser.startTime(); |
| 1565 if (std::isnan(initialPlaybackPosition)) | 1563 if (std::isnan(initialPlaybackPosition)) |
| 1566 initialPlaybackPosition = 0; | 1564 initialPlaybackPosition = 0; |
| 1567 | 1565 |
| 1568 if (!jumped && initialPlaybackPosition > 0) { | 1566 if (!jumped && initialPlaybackPosition > 0) { |
| 1569 m_sentEndEvent = false; | |
| 1570 UseCounter::count(document(), UseCounter::HTMLMediaElementSeekToFrag
mentStart); | 1567 UseCounter::count(document(), UseCounter::HTMLMediaElementSeekToFrag
mentStart); |
| 1571 seek(initialPlaybackPosition); | 1568 seek(initialPlaybackPosition); |
| 1572 jumped = true; | 1569 jumped = true; |
| 1573 } | 1570 } |
| 1574 | 1571 |
| 1575 if (mediaControls()) | 1572 if (mediaControls()) |
| 1576 mediaControls()->reset(); | 1573 mediaControls()->reset(); |
| 1577 if (layoutObject()) | 1574 if (layoutObject()) |
| 1578 layoutObject()->updateFromElement(); | 1575 layoutObject()->updateFromElement(); |
| 1579 } | 1576 } |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1725 if (!seekableRanges->length()) { | 1722 if (!seekableRanges->length()) { |
| 1726 m_seeking = false; | 1723 m_seeking = false; |
| 1727 return; | 1724 return; |
| 1728 } | 1725 } |
| 1729 time = seekableRanges->nearest(time, now); | 1726 time = seekableRanges->nearest(time, now); |
| 1730 | 1727 |
| 1731 if (m_playing && m_lastSeekTime < now) | 1728 if (m_playing && m_lastSeekTime < now) |
| 1732 addPlayedRange(m_lastSeekTime, now); | 1729 addPlayedRange(m_lastSeekTime, now); |
| 1733 | 1730 |
| 1734 m_lastSeekTime = time; | 1731 m_lastSeekTime = time; |
| 1735 m_sentEndEvent = false; | |
| 1736 | 1732 |
| 1737 // 10 - Queue a task to fire a simple event named seeking at the element. | 1733 // 10 - Queue a task to fire a simple event named seeking at the element. |
| 1738 scheduleEvent(EventTypeNames::seeking); | 1734 scheduleEvent(EventTypeNames::seeking); |
| 1739 | 1735 |
| 1740 // 11 - Set the current playback position to the given new playback position
. | 1736 // 11 - Set the current playback position to the given new playback position
. |
| 1741 webMediaPlayer()->seek(time); | 1737 webMediaPlayer()->seek(time); |
| 1742 | 1738 |
| 1743 // 14-17 are handled, if necessary, when the engine signals a readystate cha
nge or otherwise | 1739 // 14-17 are handled, if necessary, when the engine signals a readystate cha
nge or otherwise |
| 1744 // satisfies seek completion and signals a time change. | 1740 // satisfies seek completion and signals a time change. |
| 1745 } | 1741 } |
| (...skipping 1087 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2833 scheduleTimeupdateEvent(false); | 2829 scheduleTimeupdateEvent(false); |
| 2834 | 2830 |
| 2835 double now = currentTime(); | 2831 double now = currentTime(); |
| 2836 double dur = duration(); | 2832 double dur = duration(); |
| 2837 | 2833 |
| 2838 // When the current playback position reaches the end of the media resource
when the direction of | 2834 // When the current playback position reaches the end of the media resource
when the direction of |
| 2839 // playback is forwards, then the user agent must follow these steps: | 2835 // playback is forwards, then the user agent must follow these steps: |
| 2840 if (!std::isnan(dur) && dur && now >= dur && getDirectionOfPlayback() == For
ward) { | 2836 if (!std::isnan(dur) && dur && now >= dur && getDirectionOfPlayback() == For
ward) { |
| 2841 // If the media element has a loop attribute specified | 2837 // If the media element has a loop attribute specified |
| 2842 if (loop()) { | 2838 if (loop()) { |
| 2843 m_sentEndEvent = false; | |
| 2844 // then seek to the earliest possible position of the media resourc
e and abort these steps. | 2839 // then seek to the earliest possible position of the media resourc
e and abort these steps. |
| 2845 seek(0); | 2840 seek(0); |
| 2846 } else { | 2841 } else { |
| 2847 // If the media element has still ended playback, and the direction
of playback is still | 2842 // If the media element has still ended playback, and the direction
of playback is still |
| 2848 // forwards, and paused is false, | 2843 // forwards, and paused is false, |
| 2849 if (!m_paused) { | 2844 if (!m_paused) { |
| 2850 // changes paused to true and fires a simple event named pause a
t the media element. | 2845 // changes paused to true and fires a simple event named pause a
t the media element. |
| 2851 m_paused = true; | 2846 m_paused = true; |
| 2852 scheduleEvent(EventTypeNames::pause); | 2847 scheduleEvent(EventTypeNames::pause); |
| 2853 } | 2848 } |
| 2854 // Queue a task to fire a simple event named ended at the media elem
ent. | 2849 // Queue a task to fire a simple event named ended at the media elem
ent. |
| 2855 if (!m_sentEndEvent) { | 2850 scheduleEvent(EventTypeNames::ended); |
| 2856 m_sentEndEvent = true; | |
| 2857 scheduleEvent(EventTypeNames::ended); | |
| 2858 } | |
| 2859 Platform::current()->recordAction(UserMetricsAction("Media_Playback_
Ended")); | 2851 Platform::current()->recordAction(UserMetricsAction("Media_Playback_
Ended")); |
| 2860 } | 2852 } |
| 2861 } else { | |
| 2862 m_sentEndEvent = false; | |
| 2863 } | 2853 } |
| 2864 | |
| 2865 updatePlayState(); | 2854 updatePlayState(); |
| 2866 } | 2855 } |
| 2867 | 2856 |
| 2868 void HTMLMediaElement::durationChanged() | 2857 void HTMLMediaElement::durationChanged() |
| 2869 { | 2858 { |
| 2870 WTF_LOG(Media, "HTMLMediaElement::durationChanged(%p)", this); | 2859 WTF_LOG(Media, "HTMLMediaElement::durationChanged(%p)", this); |
| 2871 // FIXME: Change WebMediaPlayer to convey the currentTime | 2860 // FIXME: Change WebMediaPlayer to convey the currentTime |
| 2872 // when the duration change occured. The current WebMediaPlayer | 2861 // when the duration change occured. The current WebMediaPlayer |
| 2873 // implementations always clamp currentTime() to duration() | 2862 // implementations always clamp currentTime() to duration() |
| 2874 // so the requestSeek condition here is always false. | 2863 // so the requestSeek condition here is always false. |
| (...skipping 975 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3850 | 3839 |
| 3851 IntRect HTMLMediaElement::AutoplayHelperClientImpl::absoluteBoundingBoxRect() co
nst | 3840 IntRect HTMLMediaElement::AutoplayHelperClientImpl::absoluteBoundingBoxRect() co
nst |
| 3852 { | 3841 { |
| 3853 IntRect result; | 3842 IntRect result; |
| 3854 if (LayoutObject* object = m_element->layoutObject()) | 3843 if (LayoutObject* object = m_element->layoutObject()) |
| 3855 result = object->absoluteBoundingBoxRect(); | 3844 result = object->absoluteBoundingBoxRect(); |
| 3856 return result; | 3845 return result; |
| 3857 } | 3846 } |
| 3858 | 3847 |
| 3859 } // namespace blink | 3848 } // namespace blink |
| OLD | NEW |