Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Side by Side Diff: Source/core/html/HTMLMediaElement.cpp

Issue 304353005: Eliminate MediaPlayer & MediaPlayerClient abstractions(rate, setRate and other APIs) (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase with latest Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | Source/platform/graphics/media/MediaPlayer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 1688 matching lines...) Expand 10 before | Expand all | Expand 10 after
1699 } 1699 }
1700 } 1700 }
1701 1701
1702 void HTMLMediaElement::changeNetworkStateFromLoadingToIdle() 1702 void HTMLMediaElement::changeNetworkStateFromLoadingToIdle()
1703 { 1703 {
1704 ASSERT(m_player); 1704 ASSERT(m_player);
1705 m_progressEventTimer.stop(); 1705 m_progressEventTimer.stop();
1706 1706
1707 // Schedule one last progress event so we guarantee that at least one is fir ed 1707 // Schedule one last progress event so we guarantee that at least one is fir ed
1708 // for files that load very quickly. 1708 // for files that load very quickly.
1709 if (m_player->didLoadingProgress()) 1709 if (webMediaPlayer() && webMediaPlayer()->didLoadingProgress())
1710 scheduleEvent(EventTypeNames::progress); 1710 scheduleEvent(EventTypeNames::progress);
1711 scheduleEvent(EventTypeNames::suspend); 1711 scheduleEvent(EventTypeNames::suspend);
1712 m_networkState = NETWORK_IDLE; 1712 m_networkState = NETWORK_IDLE;
1713 } 1713 }
1714 1714
1715 void HTMLMediaElement::mediaPlayerReadyStateChanged() 1715 void HTMLMediaElement::mediaPlayerReadyStateChanged()
1716 { 1716 {
1717 setReadyState(static_cast<ReadyState>(webMediaPlayer()->readyState())); 1717 setReadyState(static_cast<ReadyState>(webMediaPlayer()->readyState()));
1718 } 1718 }
1719 1719
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1838 1838
1839 void HTMLMediaElement::progressEventTimerFired(Timer<HTMLMediaElement>*) 1839 void HTMLMediaElement::progressEventTimerFired(Timer<HTMLMediaElement>*)
1840 { 1840 {
1841 ASSERT(m_player); 1841 ASSERT(m_player);
1842 if (m_networkState != NETWORK_LOADING) 1842 if (m_networkState != NETWORK_LOADING)
1843 return; 1843 return;
1844 1844
1845 double time = WTF::currentTime(); 1845 double time = WTF::currentTime();
1846 double timedelta = time - m_previousProgressTime; 1846 double timedelta = time - m_previousProgressTime;
1847 1847
1848 if (m_player->didLoadingProgress()) { 1848 if (webMediaPlayer() && webMediaPlayer()->didLoadingProgress()) {
1849 scheduleEvent(EventTypeNames::progress); 1849 scheduleEvent(EventTypeNames::progress);
1850 m_previousProgressTime = time; 1850 m_previousProgressTime = time;
1851 m_sentStalledEvent = false; 1851 m_sentStalledEvent = false;
1852 if (renderer()) 1852 if (renderer())
1853 renderer()->updateFromElement(); 1853 renderer()->updateFromElement();
1854 } else if (timedelta > 3.0 && !m_sentStalledEvent) { 1854 } else if (timedelta > 3.0 && !m_sentStalledEvent) {
1855 scheduleEvent(EventTypeNames::stalled); 1855 scheduleEvent(EventTypeNames::stalled);
1856 m_sentStalledEvent = true; 1856 m_sentStalledEvent = true;
1857 setShouldDelayLoadEvent(false); 1857 setShouldDelayLoadEvent(false);
1858 } 1858 }
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
2127 } 2127 }
2128 2128
2129 HTMLMediaElement::DirectionOfPlayback HTMLMediaElement::directionOfPlayback() co nst 2129 HTMLMediaElement::DirectionOfPlayback HTMLMediaElement::directionOfPlayback() co nst
2130 { 2130 {
2131 return m_playbackRate >= 0 ? Forward : Backward; 2131 return m_playbackRate >= 0 ? Forward : Backward;
2132 } 2132 }
2133 2133
2134 void HTMLMediaElement::updatePlaybackRate() 2134 void HTMLMediaElement::updatePlaybackRate()
2135 { 2135 {
2136 double effectiveRate = effectivePlaybackRate(); 2136 double effectiveRate = effectivePlaybackRate();
2137 if (m_player && potentiallyPlaying() && m_player->rate() != effectiveRate) 2137 if (m_player && potentiallyPlaying())
2138 m_player->setRate(effectiveRate); 2138 webMediaPlayer()->setRate(effectiveRate);
2139 } 2139 }
2140 2140
2141 bool HTMLMediaElement::ended() const 2141 bool HTMLMediaElement::ended() const
2142 { 2142 {
2143 // 4.8.10.8 Playing the media resource 2143 // 4.8.10.8 Playing the media resource
2144 // The ended attribute must return true if the media element has ended 2144 // The ended attribute must return true if the media element has ended
2145 // playback and the direction of playback is forwards, and false otherwise. 2145 // playback and the direction of playback is forwards, and false otherwise.
2146 return endedPlayback() && directionOfPlayback() == Forward; 2146 return endedPlayback() && directionOfPlayback() == Forward;
2147 } 2147 }
2148 2148
(...skipping 996 matching lines...) Expand 10 before | Expand all | Expand 10 after
3145 ASSERT(hasVideo()); // "resize" makes no sense absent video. 3145 ASSERT(hasVideo()); // "resize" makes no sense absent video.
3146 if (m_readyState > HAVE_NOTHING && isHTMLVideoElement(*this)) 3146 if (m_readyState > HAVE_NOTHING && isHTMLVideoElement(*this))
3147 scheduleEvent(EventTypeNames::resize); 3147 scheduleEvent(EventTypeNames::resize);
3148 3148
3149 if (renderer()) 3149 if (renderer())
3150 renderer()->updateFromElement(); 3150 renderer()->updateFromElement();
3151 } 3151 }
3152 3152
3153 PassRefPtr<TimeRanges> HTMLMediaElement::buffered() const 3153 PassRefPtr<TimeRanges> HTMLMediaElement::buffered() const
3154 { 3154 {
3155 if (!m_player)
3156 return TimeRanges::create();
3157
3158 if (m_mediaSource) 3155 if (m_mediaSource)
3159 return m_mediaSource->buffered(); 3156 return m_mediaSource->buffered();
3160 3157
3161 return m_player->buffered(); 3158 if (!webMediaPlayer())
3159 return TimeRanges::create();
3160
3161 return TimeRanges::create(webMediaPlayer()->buffered());
3162 } 3162 }
3163 3163
3164 PassRefPtr<TimeRanges> HTMLMediaElement::played() 3164 PassRefPtr<TimeRanges> HTMLMediaElement::played()
3165 { 3165 {
3166 if (m_playing) { 3166 if (m_playing) {
3167 double time = currentTime(); 3167 double time = currentTime();
3168 if (time > m_lastSeekTime) 3168 if (time > m_lastSeekTime)
3169 addPlayedRange(m_lastSeekTime, time); 3169 addPlayedRange(m_lastSeekTime, time);
3170 } 3170 }
3171 3171
3172 if (!m_playedTimeRanges) 3172 if (!m_playedTimeRanges)
3173 m_playedTimeRanges = TimeRanges::create(); 3173 m_playedTimeRanges = TimeRanges::create();
3174 3174
3175 return m_playedTimeRanges->copy(); 3175 return m_playedTimeRanges->copy();
3176 } 3176 }
3177 3177
3178 PassRefPtr<TimeRanges> HTMLMediaElement::seekable() const 3178 PassRefPtr<TimeRanges> HTMLMediaElement::seekable() const
3179 { 3179 {
3180 if (m_player) { 3180 if (webMediaPlayer()) {
3181 double maxTimeSeekable = m_player->maxTimeSeekable(); 3181 double maxTimeSeekable = webMediaPlayer()->maxTimeSeekable();
3182 if (maxTimeSeekable) 3182 if (maxTimeSeekable)
3183 return TimeRanges::create(0, maxTimeSeekable); 3183 return TimeRanges::create(0, maxTimeSeekable);
3184 } 3184 }
3185 return TimeRanges::create(); 3185 return TimeRanges::create();
3186 } 3186 }
3187 3187
3188 bool HTMLMediaElement::potentiallyPlaying() const 3188 bool HTMLMediaElement::potentiallyPlaying() const
3189 { 3189 {
3190 // "pausedToBuffer" means the media engine's rate is 0, but only because it had to stop playing 3190 // "pausedToBuffer" means the media engine's rate is 0, but only because it had to stop playing
3191 // when it ran out of buffered data. A movie is this state is "potentially p laying", modulo the 3191 // when it ran out of buffered data. A movie is this state is "potentially p laying", modulo the
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
3279 WTF_LOG(Media, "HTMLMediaElement::updatePlayState - shouldBePlaying = %s, pl ayerPaused = %s", 3279 WTF_LOG(Media, "HTMLMediaElement::updatePlayState - shouldBePlaying = %s, pl ayerPaused = %s",
3280 boolString(shouldBePlaying), boolString(playerPaused)); 3280 boolString(shouldBePlaying), boolString(playerPaused));
3281 3281
3282 if (shouldBePlaying) { 3282 if (shouldBePlaying) {
3283 setDisplayMode(Video); 3283 setDisplayMode(Video);
3284 invalidateCachedTime(); 3284 invalidateCachedTime();
3285 3285
3286 if (playerPaused) { 3286 if (playerPaused) {
3287 // Set rate, muted before calling play in case they were set before the media engine was setup. 3287 // Set rate, muted before calling play in case they were set before the media engine was setup.
3288 // The media engine should just stash the rate and muted values sinc e it isn't already playing. 3288 // The media engine should just stash the rate and muted values sinc e it isn't already playing.
3289 m_player->setRate(effectivePlaybackRate()); 3289 webMediaPlayer()->setRate(effectivePlaybackRate());
3290 updateVolume(); 3290 updateVolume();
3291 3291
3292 m_player->play(); 3292 m_player->play();
3293 } 3293 }
3294 3294
3295 if (hasMediaControls()) 3295 if (hasMediaControls())
3296 mediaControls()->playbackStarted(); 3296 mediaControls()->playbackStarted();
3297 startPlaybackProgressTimer(); 3297 startPlaybackProgressTimer();
3298 m_playing = true; 3298 m_playing = true;
3299 3299
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after
3961 3961
3962 #if ENABLE(WEB_AUDIO) 3962 #if ENABLE(WEB_AUDIO)
3963 void HTMLMediaElement::clearWeakMembers(Visitor* visitor) 3963 void HTMLMediaElement::clearWeakMembers(Visitor* visitor)
3964 { 3964 {
3965 if (!visitor->isAlive(m_audioSourceNode) && audioSourceProvider()) 3965 if (!visitor->isAlive(m_audioSourceNode) && audioSourceProvider())
3966 audioSourceProvider()->setClient(0); 3966 audioSourceProvider()->setClient(0);
3967 } 3967 }
3968 #endif 3968 #endif
3969 3969
3970 } 3970 }
OLDNEW
« no previous file with comments | « no previous file | Source/platform/graphics/media/MediaPlayer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698