Bug 1357040: P6. Don't assume that when stalling all data has been loaded. r?gerald draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Fri, 28 Apr 2017 17:18:43 +0200
changeset 571848 5c4ea7124053290dbacd0f18f4d5c071b350e5de
parent 571847 41f24719296544f47432d5ab790d89ba6097bbd9
child 571849 a00a9bdabf25932a3f5db2ce397d7a380b51bbca
push id56921
push userbmo:jyavenard@mozilla.com
push dateWed, 03 May 2017 10:07:51 +0000
reviewersgerald
bugs1357040
milestone55.0a1
Bug 1357040: P6. Don't assume that when stalling all data has been loaded. r?gerald The stalled event can be fired as playback is starting and data has yet to be processed. So instead we wait for playback to reach the end. MozReview-Commit-ID: 4W3M5tee2HD
dom/media/mediasource/test/test_MediaSource_memory_reporting.html
--- a/dom/media/mediasource/test/test_MediaSource_memory_reporting.html
+++ b/dom/media/mediasource/test/test_MediaSource_memory_reporting.html
@@ -9,17 +9,17 @@
 <body>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 runWithMSE(function (ms, v) {
   // Test that memory reporting works once we've played a video.
-  once(v, "stalled", () => {
+  once(v, "ended", () => {
     // Grab a memory report.
     var mgr = SpecialPowers.Cc["@mozilla.org/memory-reporter-manager;1"]
           .getService(SpecialPowers.Ci.nsIMemoryReporterManager);
 
     var amount = 0;
     var resourcesPathSeen = false;
     var handleReport = function(aProcess, aPath, aKind, aUnits, aAmount, aDesc) {
       if (aPath == "explicit/media/resources") {
@@ -36,16 +36,19 @@ runWithMSE(function (ms, v) {
     }
 
     mgr.getReports(handleReport, null, finished, null, /* anonymized = */ false);
   });
 
   // Load a webm video and play it.
   ms.addEventListener("sourceopen", () => {
     var sb = ms.addSourceBuffer("video/webm");
-    fetchAndLoad(sb, 'seek', [''], '.webm').then(() => v.play());
+    fetchAndLoad(sb, 'seek', [''], '.webm').then(function() {
+      ms.endOfStream();
+      v.play()
+    });
   });
 });
 
 </script>
 </pre>
 </body>
 </html>