Chromium Code Reviews| Index: Source/core/html/HTMLMediaElement.cpp |
| diff --git a/Source/core/html/HTMLMediaElement.cpp b/Source/core/html/HTMLMediaElement.cpp |
| index 3b781bf062425814208b18e67bcd5c3da9712c68..881e47b1ef83bd78bad759eb8ac16f115749044a 100644 |
| --- a/Source/core/html/HTMLMediaElement.cpp |
| +++ b/Source/core/html/HTMLMediaElement.cpp |
| @@ -892,6 +892,15 @@ void HTMLMediaElement::loadResource(const KURL& url, ContentType& contentType, c |
| if (!m_havePreparedToPlay && !autoplay() && m_preload == MediaPlayer::None) { |
| WTF_LOG(Media, "HTMLMediaElement::loadResource : Delaying load because preload == 'none'"); |
| m_delayingLoadForPreloadNone = true; |
| + // This implements the "optional" step 3 from the resource fetch algorithm. |
| + // 1. Set the networkState to NETWORK_IDLE. |
| + // 2. Queue a task to fire a simple event named suspend at the element. |
| + changeNetworkStateFromLoadingToIdle(); |
|
fs
2014/06/09 16:12:23
This means that we'll also fire a progress event -
acolwell GONE FROM CHROMIUM
2014/06/09 17:54:17
I think we should avoid firing the progress event
fs
2014/06/10 12:36:24
Added gating of 'progress' dispatch on m_player->d
|
| + // 3. Queue a task to set the element's delaying-the-load-event |
| + // flag to false. This stops delaying the load event. |
| + // 4. Wait for the task to be run. |
|
fs
2014/06/09 16:12:23
Neither queuing a nor waiting for a task here, whi
acolwell GONE FROM CHROMIUM
2014/06/09 17:54:17
Why don't you just add a timer here to actually im
fs
2014/06/10 12:36:24
Done (PS3). But to facilitate the wait in step 4 s
|
| + setShouldDelayLoadEvent(false); |
| + // Continued in startDelayedLoad(). |
| } else { |
| startPlayerLoad(); |
| } |
| @@ -943,7 +952,18 @@ void HTMLMediaElement::startDelayedLoad() |
| { |
| ASSERT(m_delayingLoadForPreloadNone); |
| + // resource fetch algorithm step 3 - continued from loadResource(). |
| + |
| + // 5. Wait for an implementation-defined event (e.g. the user requesting that the media element begin playback). |
| + // This is assumed to be whatever 'event' ended up calling this method. |
| m_delayingLoadForPreloadNone = false; |
| + // 6. Set the element's delaying-the-load-event flag back to true (this |
| + // delays the load event again, in case it hasn't been fired yet). |
| + setShouldDelayLoadEvent(true); |
| + // 7. Set the networkState to NETWORK_LOADING. |
| + m_networkState = NETWORK_LOADING; |
| + |
| + startProgressEventTimer(); |
| startPlayerLoad(); |
| } |