[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

eric.carlson at apple.com eric.carlson at apple.com
Wed Dec 22 11:19:49 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 65b858a9d9e5c3e8b7a8976dec1be7ecaa158747
Author: eric.carlson at apple.com <eric.carlson at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Jul 19 20:11:56 2010 +0000

    2010-07-19  Eric Carlson  <eric.carlson at apple.com>
    
            Reviewed by Sam Weinig.
    
            Remove HTML5 media element 'load' event
            https://bugs.webkit.org/show_bug.cgi?id=30464
            <rdar://problem/5650561>
    
            * html/HTMLMediaElement.cpp:
            (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize m_completelyLoaded.
            (WebCore::HTMLMediaElement::parseMappedAttribute): Don't deal with 'load' event.
            (WebCore::HTMLMediaElement::prepareForLoad): Set m_completelyLoaded to false.
            (WebCore::HTMLMediaElement::setNetworkState): Don't post 'load' event.
            (WebCore::HTMLMediaElement::progressEventTimerFired): Bail if m_networkState != NETWORK_LOADING.
            (WebCore::HTMLMediaElement::userCancelledLoad): No more NETWORK_LOADED state.
            * html/HTMLMediaElement.h:
            (WebCore::HTMLMediaElement::):
            * html/HTMLMediaElement.idl: Remove NETWORK_LOADING.
    
    2010-07-19  Eric Carlson  <eric.carlson at apple.com>
    
            Reviewed by Sam Weinig.
    
            Remove HTML5 media element 'load' event
            https://bugs.webkit.org/show_bug.cgi?id=30464
            <rdar://problem/5650561>
    
            * media/audio-delete-while-slider-thumb-clicked.html: Trigger test on 'canplaythrough'
            instead of 'load'.
            * media/audio-delete-while-step-button-clicked.html: Ditto.
            * media/event-attributes-expected.txt:
            * media/event-attributes.html: Correct logic to check that 'progress' event(s) are
            fired while loading file, but not when src set to invalid file. 'abort' event is fired when
            the src is changed.
            * media/invalid-media-url-crash-expected.txt:
            * media/media-constants-expected.txt: No more NETWORK_LOADED state.
            * media/media-constants.html:  No more NETWORK_LOADED state. Clean up test.
            * media/remove-from-document-expected.txt:
            * media/remove-from-document.html: Ditto.
            * media/video-controls-visible-audio-only.html: Trigger test on 'canplaythrough'
            instead of 'load'.
            * media/video-source-none-supported-expected.txt: No more NETWORK_LOADED state.
            * media/video-src-change-expected.txt: Ditto.
            * media/video-src-none-expected.txt:
            * media/video-src-none.html: No more NETWORK_LOADED state. Fix bogus test that generated
            "FAIL" in results.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63684 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 9c556cb..7738721 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,31 @@
+2010-07-19  Eric Carlson  <eric.carlson at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        Remove HTML5 media element 'load' event
+        https://bugs.webkit.org/show_bug.cgi?id=30464
+        <rdar://problem/5650561>
+
+        * media/audio-delete-while-slider-thumb-clicked.html: Trigger test on 'canplaythrough'
+        instead of 'load'.
+        * media/audio-delete-while-step-button-clicked.html: Ditto.
+        * media/event-attributes-expected.txt: 
+        * media/event-attributes.html: Correct logic to check that 'progress' event(s) are
+        fired while loading file, but not when src set to invalid file. 'abort' event is fired when
+        the src is changed.
+        * media/invalid-media-url-crash-expected.txt:
+        * media/media-constants-expected.txt: No more NETWORK_LOADED state.
+        * media/media-constants.html:  No more NETWORK_LOADED state. Clean up test.
+        * media/remove-from-document-expected.txt:
+        * media/remove-from-document.html: Ditto.
+        * media/video-controls-visible-audio-only.html: Trigger test on 'canplaythrough'
+        instead of 'load'.
+        * media/video-source-none-supported-expected.txt: No more NETWORK_LOADED state.
+        * media/video-src-change-expected.txt: Ditto.
+        * media/video-src-none-expected.txt:
+        * media/video-src-none.html: No more NETWORK_LOADED state. Fix bogus test that generated
+        "FAIL" in results.
+
 2010-07-19  Ojan Vafai  <ojan at chromium.org>
 
         Unreviewed.
diff --git a/LayoutTests/media/audio-delete-while-slider-thumb-clicked.html b/LayoutTests/media/audio-delete-while-slider-thumb-clicked.html
index 2d9a3a4..c5a16a8 100644
--- a/LayoutTests/media/audio-delete-while-slider-thumb-clicked.html
+++ b/LayoutTests/media/audio-delete-while-slider-thumb-clicked.html
@@ -1,3 +1,4 @@
+<!DOCTYPE html>
 <html>
     <head>
         <script src=media-file.js></script>
@@ -89,7 +90,7 @@
         <br>
         <input type="button" id="button" value="Click Me!" onmouseup="log('button click!')"> 
         <br>
-        <audio id="audio" ontimeupdate="logtimeupdate()" onload="drag()" controls></audio><br><br>
+        <audio id="audio" ontimeupdate="logtimeupdate()" oncanplaythrough="drag()" controls></audio><br><br>
         <div id="console"></div>
     </body>
 </html>
diff --git a/LayoutTests/media/audio-delete-while-step-button-clicked.html b/LayoutTests/media/audio-delete-while-step-button-clicked.html
index 74d3a37..d087d5c 100644
--- a/LayoutTests/media/audio-delete-while-step-button-clicked.html
+++ b/LayoutTests/media/audio-delete-while-step-button-clicked.html
@@ -1,3 +1,4 @@
+<!DOCTYPE html>
 <html>
     <head>
         <script src=media-file.js></script>
@@ -80,7 +81,7 @@
         <br>
         <input type="button" id="button" value="Click Me!" onmouseup="log('button click!')"> 
         <br>
-        <audio id="audio" ontimeupdate="log('timeupdate')" onload="step()" controls></audio><br><br>
+        <audio id="audio" ontimeupdate="log('timeupdate')" oncanplaythrough="step()" controls></audio><br><br>
         <div id="console"></div>
     </body>
 </html>
diff --git a/LayoutTests/media/event-attributes-expected.txt b/LayoutTests/media/event-attributes-expected.txt
index dd9f60e..e85ffd3 100644
--- a/LayoutTests/media/event-attributes-expected.txt
+++ b/LayoutTests/media/event-attributes-expected.txt
@@ -4,6 +4,7 @@ EVENT(loadedmetadata)
 EVENT(loadeddata)
 EVENT(canplay)
 EVENT(canplaythrough)
+EXPECTED (progressEventCount >= '1') OK
 
 *** starting playback
 RUN(video.play())
@@ -34,9 +35,11 @@ EVENT(playing)
 EVENT(ended)
 
 *** played to end, setting 'src' to an invalid movie
+RUN(progressEventCount = 0)
+EVENT(abort)
 EVENT(emptied)
 EVENT(loadstart)
 EVENT(error)
-EXPECTED (progressEventCount >= '1') OK
+EXPECTED (progressEventCount == '0') OK
 END OF TEST
 
diff --git a/LayoutTests/media/event-attributes.html b/LayoutTests/media/event-attributes.html
index a3fee47..bc9610a 100644
--- a/LayoutTests/media/event-attributes.html
+++ b/LayoutTests/media/event-attributes.html
@@ -1,3 +1,4 @@
+<!DOCTYPE html>
 <html>
     <head>
         <script src=media-file.js></script>
@@ -16,6 +17,7 @@
                 switch (event.type)
                 {
                     case "canplaythrough":
+                        testExpected('progressEventCount', 1, '>=');
                         consoleWrite("<br>*** starting playback");
                         run("video.play()"); 
                         break;
@@ -46,13 +48,14 @@
                     case "ended":
                         var mediaFile = findMediaFile("video", "content/garbage");
                         consoleWrite("<br>*** played to end, setting 'src' to an invalid movie");
+                        run("progressEventCount = 0");
                         video.src = mediaFile;
                         break;
                     case "progress":
                         ++progressEventCount;
                         break;
                     case "error":
-                        testExpected('progressEventCount', 1, '>=');
+                        testExpected('progressEventCount', 0);
                         endTest();
                         break;
                     default:
diff --git a/LayoutTests/media/invalid-media-url-crash-expected.txt b/LayoutTests/media/invalid-media-url-crash-expected.txt
index 406d03e..9becff1 100644
--- a/LayoutTests/media/invalid-media-url-crash-expected.txt
+++ b/LayoutTests/media/invalid-media-url-crash-expected.txt
@@ -2,7 +2,7 @@ Tests that invalid media src url does not result in crash.
 
 EXPECTED (audio.error.code == '4') OK
 EXPECTED (video.error.code == '4') OK
-EXPECTED (audio.networkState == '4') OK
-EXPECTED (video.networkState == '4') OK
+EXPECTED (audio.networkState == '3') OK
+EXPECTED (video.networkState == '3') OK
 END OF TEST
 
diff --git a/LayoutTests/media/media-constants-expected.txt b/LayoutTests/media/media-constants-expected.txt
index a6f2c3f..193e2d3 100644
--- a/LayoutTests/media/media-constants-expected.txt
+++ b/LayoutTests/media/media-constants-expected.txt
@@ -3,8 +3,7 @@ Test HTMLMediaElement and MediaError constants.
 EXPECTED (HTMLMediaElement.NETWORK_EMPTY == '0') OK
 EXPECTED (HTMLMediaElement.NETWORK_IDLE == '1') OK
 EXPECTED (HTMLMediaElement.NETWORK_LOADING == '2') OK
-EXPECTED (HTMLMediaElement.NETWORK_LOADED == '3') OK
-EXPECTED (HTMLMediaElement.NETWORK_NO_SOURCE == '4') OK
+EXPECTED (HTMLMediaElement.NETWORK_NO_SOURCE == '3') OK
 
 EXPECTED (HTMLMediaElement.HAVE_NOTHING == '0') OK
 EXPECTED (HTMLMediaElement.HAVE_METADATA == '1') OK
diff --git a/LayoutTests/media/media-constants.html b/LayoutTests/media/media-constants.html
index 0d62c3c..b4ad1a6 100644
--- a/LayoutTests/media/media-constants.html
+++ b/LayoutTests/media/media-constants.html
@@ -1,30 +1,33 @@
-
-<p>Test HTMLMediaElement and MediaError constants.</p>
-
-<script src=video-test.js></script>
-
-<script>
-    
-    testExpected("HTMLMediaElement.NETWORK_EMPTY", 0);
-    testExpected("HTMLMediaElement.NETWORK_IDLE", 1);
-    testExpected("HTMLMediaElement.NETWORK_LOADING", 2);
-    testExpected("HTMLMediaElement.NETWORK_LOADED", 3);
-    testExpected("HTMLMediaElement.NETWORK_NO_SOURCE", 4);
-    consoleWrite("");
-
-    testExpected("HTMLMediaElement.HAVE_NOTHING", 0);
-    testExpected("HTMLMediaElement.HAVE_METADATA", 1);
-    testExpected("HTMLMediaElement.HAVE_CURRENT_DATA", 2);
-    testExpected("HTMLMediaElement.HAVE_FUTURE_DATA", 3);
-    testExpected("HTMLMediaElement.HAVE_ENOUGH_DATA", 4);
-    consoleWrite("");
-
-    testExpected("MediaError.MEDIA_ERR_ABORTED", 1);
-    testExpected("MediaError.MEDIA_ERR_NETWORK", 2);
-    testExpected("MediaError.MEDIA_ERR_DECODE", 3);
-    testExpected("MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED", 4);
-
-
-    endTest();
-</script>
-
+<!DOCTYPE html>
+<html>
+<head>
+    <script src=video-test.js></script>
+    <script type="text/javascript">
+        function doTest () 
+        {
+            testExpected("HTMLMediaElement.NETWORK_EMPTY", 0);
+            testExpected("HTMLMediaElement.NETWORK_IDLE", 1);
+            testExpected("HTMLMediaElement.NETWORK_LOADING", 2);
+            testExpected("HTMLMediaElement.NETWORK_NO_SOURCE", 3);
+            consoleWrite("");
+
+            testExpected("HTMLMediaElement.HAVE_NOTHING", 0);
+            testExpected("HTMLMediaElement.HAVE_METADATA", 1);
+            testExpected("HTMLMediaElement.HAVE_CURRENT_DATA", 2);
+            testExpected("HTMLMediaElement.HAVE_FUTURE_DATA", 3);
+            testExpected("HTMLMediaElement.HAVE_ENOUGH_DATA", 4);
+            consoleWrite("");
+
+            testExpected("MediaError.MEDIA_ERR_ABORTED", 1);
+            testExpected("MediaError.MEDIA_ERR_NETWORK", 2);
+            testExpected("MediaError.MEDIA_ERR_DECODE", 3);
+            testExpected("MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED", 4);
+
+            endTest();
+        }
+    </script>
+</head>
+<body onload="doTest()">
+    <p>Test HTMLMediaElement and MediaError constants.</p>
+</body>
+</html>
diff --git a/LayoutTests/media/remove-from-document-expected.txt b/LayoutTests/media/remove-from-document-expected.txt
index 8c84e9a..bee25fb 100644
--- a/LayoutTests/media/remove-from-document-expected.txt
+++ b/LayoutTests/media/remove-from-document-expected.txt
@@ -1,10 +1,10 @@
 Test that removing a media element from the tree pauses playback but does not unload the media.
 
 EVENT(canplaythrough)
-EXPECTED (video.networkState == '3') OK
+EXPECTED (video.networkState != '0') OK
 EXPECTED (video.paused == 'false') OK
 RUN(document.body.removeChild(video))
-EXPECTED (video.networkState == '3') OK
+EXPECTED (video.networkState != '0') OK
 EXPECTED (video.paused == 'true') OK
 END OF TEST
 
diff --git a/LayoutTests/media/remove-from-document.html b/LayoutTests/media/remove-from-document.html
index a406b84..d95f6aa 100644
--- a/LayoutTests/media/remove-from-document.html
+++ b/LayoutTests/media/remove-from-document.html
@@ -1,21 +1,35 @@
-<video controls autoplay></video>
-<p>Test that removing a media element from the tree pauses playback but does not unload the media.</p>
-<script src=media-file.js></script>
-<script src=video-test.js></script>
-<script>
-    waitForEvent('canplaythrough', function () {
+<!DOCTYPE html>
+<html>
+<head>
+    <script src=media-file.js></script>
+    <script src=video-test.js></script>
+    <script type="text/javascript" charset="utf-8">
+        function doSetup()
+        {
+            video = document.getElementsByTagName('video')[0];
+            video.src = findMediaFile("video", "content/test");
+        }
 
-        testExpected("video.networkState", HTMLMediaElement.NETWORK_LOADED);
-        testExpected("video.paused", false);
+        function doTest () 
+        {
+            consoleWrite("EVENT(canplaythrough)");
+            testExpected("video.networkState", HTMLMediaElement.NETWORK_EMPTY, "!=");
+            testExpected("video.paused", false);
+    
+            run("document.body.removeChild(video)");
+    
+            testExpected("video.networkState", HTMLMediaElement.NETWORK_EMPTY, "!=");
+            testExpected("video.paused", true);
+    
+            document.body.offsetTop;
+            endTest();
+        }
 
-        run("document.body.removeChild(video)");
-
-        testExpected("video.networkState", HTMLMediaElement.NETWORK_LOADED);
-        testExpected("video.paused", true);
-
-        document.body.offsetTop;
-        endTest();
-    } );
-
-video.src = findMediaFile("video", "content/test");
-</script>
+        window.addEventListener('load', doSetup, false);
+    </script>
+</head>
+<body>
+    <p>Test that removing a media element from the tree pauses playback but does not unload the media.</p>
+    <video controls autoplay oncanplaythrough="doTest()"></video>
+</body>
+</html>
diff --git a/LayoutTests/media/video-controls-visible-audio-only.html b/LayoutTests/media/video-controls-visible-audio-only.html
index d7a40e0..826d359 100644
--- a/LayoutTests/media/video-controls-visible-audio-only.html
+++ b/LayoutTests/media/video-controls-visible-audio-only.html
@@ -1,3 +1,4 @@
+<!DOCTYPE html>
 <html>
     <head>
         <style>
@@ -68,7 +69,7 @@
 
         <p><span id="mouse-parking">mouse parks here, am I blue?</span></p>
 
-        <video id="no-video-media" controls loop onload="start()"></video>
+        <video id="no-video-media" controls loop oncanplaythrough="start()"></video>
         <br><br><div id="console"></div>
         <script>
             setSrcById("no-video-media", findMediaFile("audio", "content/test"));
diff --git a/LayoutTests/media/video-source-none-supported-expected.txt b/LayoutTests/media/video-source-none-supported-expected.txt
index 8a44afc..6f3aa28 100644
--- a/LayoutTests/media/video-source-none-supported-expected.txt
+++ b/LayoutTests/media/video-source-none-supported-expected.txt
@@ -2,6 +2,6 @@
 
 EVENT(error)
 EXPECTED (event.target.tagName == 'SOURCE') OK
-EXPECTED (video.networkState == '4') OK
+EXPECTED (video.networkState == '3') OK
 END OF TEST
 
diff --git a/LayoutTests/media/video-src-change-expected.txt b/LayoutTests/media/video-src-change-expected.txt
index 0d5ac21..8691462 100644
--- a/LayoutTests/media/video-src-change-expected.txt
+++ b/LayoutTests/media/video-src-change-expected.txt
@@ -5,7 +5,7 @@
 
 EVENT(error)
 EXPECTED (relativeURL(video.currentSrc) == 'bogus') OK
-EXPECTED (video.networkState == '4') OK
+EXPECTED (video.networkState == '3') OK
 EXPECTED (video.error.code == '4') OK
 
 
diff --git a/LayoutTests/media/video-src-none-expected.txt b/LayoutTests/media/video-src-none-expected.txt
index 35629d3..082244e 100644
--- a/LayoutTests/media/video-src-none-expected.txt
+++ b/LayoutTests/media/video-src-none-expected.txt
@@ -15,9 +15,10 @@ Calling load() with empty 'src' should fire 'error' event, set network state to
 EXPECTED (state == 'load() with empty 'src'') OK
 EXPECTED ([object HTMLVideoElement] == '[object HTMLVideoElement]') OK
 EXPECTED (videos[1].error.code == '4') OK
-EXPECTED (videos[1].networkState == '4') OK
+EXPECTED (videos[1].networkState == '3') OK
+
 Calling load() with no 'src' should NOT fire 'error' event, set network state to NETWORK_EMPTY.
-EXPECTED (state == 'load() with no 'src''), OBSERVED 'load() with missing 'src'' FAIL
+EXPECTED (state == 'load() with missing 'src'') OK
 EXPECTED (videos[0].error == 'null') OK
 EXPECTED (videos[0].networkState == '0') OK
 EXPECTED (videos[0].src == '') OK
diff --git a/LayoutTests/media/video-src-none.html b/LayoutTests/media/video-src-none.html
index 432530d..2d1f91e 100644
--- a/LayoutTests/media/video-src-none.html
+++ b/LayoutTests/media/video-src-none.html
@@ -1,3 +1,4 @@
+<!DOCTYPE html>
 <html>
     <head>
         <script src=video-test.js></script>
@@ -6,7 +7,7 @@
 
             function someTimeLater()
             {
-                testExpected("state", "load() with no 'src'");
+                testExpected("state", "load() with missing 'src'");
                 testExpected("videos[0].error", null);
                 testExpected("videos[0].networkState", HTMLMediaElement.NETWORK_EMPTY);
                 testExpected("videos[0].src", "");
@@ -21,7 +22,7 @@
                 testExpected("videos[1].error.code", MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED);
                 testExpected("videos[1].networkState", HTMLMediaElement.NETWORK_NO_SOURCE);
 
-                consoleWrite("<i>Calling load() with no 'src' should NOT fire 'error' event, set network state to NETWORK_EMPTY.<" + "/i>");
+                consoleWrite("<br><i>Calling load() with no 'src' should NOT fire 'error' event, set network state to NETWORK_EMPTY.<" + "/i>");
                 state = "load() with missing 'src'";
                 videos[0].load();
 
@@ -54,7 +55,5 @@
         <video width=320 height=60 controls onerror="errorEvent()"></video>
         <br>
         <video width=320 height=60 controls src="" onerror="errorEvent()"></video>
-
-
     </body>
 </html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index eb4cb40..8435c0f 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2010-07-19  Eric Carlson  <eric.carlson at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        Remove HTML5 media element 'load' event
+        https://bugs.webkit.org/show_bug.cgi?id=30464
+        <rdar://problem/5650561>
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize m_completelyLoaded.
+        (WebCore::HTMLMediaElement::parseMappedAttribute): Don't deal with 'load' event.
+        (WebCore::HTMLMediaElement::prepareForLoad): Set m_completelyLoaded to false.
+        (WebCore::HTMLMediaElement::setNetworkState): Don't post 'load' event.
+        (WebCore::HTMLMediaElement::progressEventTimerFired): Bail if m_networkState != NETWORK_LOADING.
+        (WebCore::HTMLMediaElement::userCancelledLoad): No more NETWORK_LOADED state.
+        * html/HTMLMediaElement.h:
+        (WebCore::HTMLMediaElement::):
+        * html/HTMLMediaElement.idl: Remove NETWORK_LOADING.
+
 2010-07-19  Alexey Proskuryakov  <ap at apple.com>
 
         Reviewed by Darin Adler.
diff --git a/WebCore/html/HTMLMediaElement.cpp b/WebCore/html/HTMLMediaElement.cpp
index 5c823f8..d6e47f4 100644
--- a/WebCore/html/HTMLMediaElement.cpp
+++ b/WebCore/html/HTMLMediaElement.cpp
@@ -130,6 +130,7 @@ HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName, Document* doc)
 #endif
     , m_dispatchingCanPlayEvent(false)
     , m_loadInitiatedByUserGesture(false)
+    , m_completelyLoaded(false)
 {
     document()->registerForDocumentActivationCallbacks(this);
     document()->registerForMediaVolumeCallbacks(this);
@@ -226,8 +227,6 @@ void HTMLMediaElement::parseMappedAttribute(Attribute* attr)
         setAttributeEventListener(eventNames().endedEvent, createAttributeEventListener(this, attr));
     else if (attrName == onerrorAttr)
         setAttributeEventListener(eventNames().errorEvent, createAttributeEventListener(this, attr));
-    else if (attrName == onloadAttr)
-        setAttributeEventListener(eventNames().loadEvent, createAttributeEventListener(this, attr));
     else if (attrName == onloadeddataAttr)
         setAttributeEventListener(eventNames().loadeddataEvent, createAttributeEventListener(this, attr));
     else if (attrName == onloadedmetadataAttr)
@@ -482,6 +481,7 @@ void HTMLMediaElement::prepareForLoad()
     m_loadTimer.stop();
     m_sentStalledEvent = false;
     m_haveFiredLoadedData = false;
+    m_completelyLoaded = false;
 
     // 1 - Abort any already-running instance of the resource selection algorithm for this element.
     m_currentSourceNode = 0;
@@ -836,25 +836,15 @@ void HTMLMediaElement::setNetworkState(MediaPlayer::NetworkState state)
     }
 
     if (state == MediaPlayer::Loaded) {
-        NetworkState oldState = m_networkState;
-
-        m_networkState = NETWORK_LOADED;
-        if (oldState < NETWORK_LOADED || oldState == NETWORK_NO_SOURCE) {
+        if (m_networkState != NETWORK_IDLE) {
             m_progressEventTimer.stop();
 
             // Schedule one last progress event so we guarantee that at least one is fired
             // for files that load very quickly.
             scheduleEvent(eventNames().progressEvent);
-
-            // Check to see if readyState changes need to be dealt with before sending the 
-            // 'load' event so we report 'canplaythrough' first. This is necessary because a
-            //  media engine reports readyState and networkState changes separately
-            MediaPlayer::ReadyState currentState = m_player->readyState();
-            if (static_cast<ReadyState>(currentState) != m_readyState)
-                setReadyState(currentState);
-
-            scheduleEvent(eventNames().loadEvent);
         }
+        m_networkState = NETWORK_IDLE;
+        m_completelyLoaded = true;
     }
 }
 
@@ -967,7 +957,7 @@ void HTMLMediaElement::setReadyState(MediaPlayer::ReadyState state)
 void HTMLMediaElement::progressEventTimerFired(Timer<HTMLMediaElement>*)
 {
     ASSERT(m_player);
-    if (m_networkState == NETWORK_EMPTY || m_networkState >= NETWORK_LOADED)
+    if (m_networkState != NETWORK_LOADING)
         return;
 
     unsigned progress = m_player->bytesLoaded();
@@ -1809,7 +1799,7 @@ void HTMLMediaElement::stopPeriodicTimers()
 
 void HTMLMediaElement::userCancelledLoad()
 {
-    if (m_networkState == NETWORK_EMPTY || m_networkState >= NETWORK_LOADED)
+    if (m_networkState == NETWORK_EMPTY || m_completelyLoaded)
         return;
 
     // If the media data fetching process is aborted by the user:
diff --git a/WebCore/html/HTMLMediaElement.h b/WebCore/html/HTMLMediaElement.h
index 7d83f94..051629e 100644
--- a/WebCore/html/HTMLMediaElement.h
+++ b/WebCore/html/HTMLMediaElement.h
@@ -88,7 +88,7 @@ public:
     void setSrc(const String&);
     String currentSrc() const;
 
-    enum NetworkState { NETWORK_EMPTY, NETWORK_IDLE, NETWORK_LOADING, NETWORK_LOADED, NETWORK_NO_SOURCE };
+    enum NetworkState { NETWORK_EMPTY, NETWORK_IDLE, NETWORK_LOADING, NETWORK_NO_SOURCE };
     NetworkState networkState() const;
     
     String preload() const;    
@@ -366,6 +366,7 @@ private:
 
     bool m_dispatchingCanPlayEvent : 1;
     bool m_loadInitiatedByUserGesture : 1;
+    bool m_completelyLoaded : 1;
 };
 
 } //namespace
diff --git a/WebCore/html/HTMLMediaElement.idl b/WebCore/html/HTMLMediaElement.idl
index baea577..28a0fbe 100644
--- a/WebCore/html/HTMLMediaElement.idl
+++ b/WebCore/html/HTMLMediaElement.idl
@@ -36,8 +36,7 @@ interface [Conditional=VIDEO] HTMLMediaElement : HTMLElement {
     const unsigned short NETWORK_EMPTY = 0;
     const unsigned short NETWORK_IDLE = 1;
     const unsigned short NETWORK_LOADING = 2;
-    const unsigned short NETWORK_LOADED = 3;
-    const unsigned short NETWORK_NO_SOURCE = 4;
+    const unsigned short NETWORK_NO_SOURCE = 3;
     readonly attribute unsigned short networkState;
     attribute DOMString preload;
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list