Bug 1232045 - Add tests for WebM with resolution changes r=jya draft
authorBryce Van Dyk <bvandyk@mozilla.com>
Mon, 14 Mar 2016 15:13:51 +1300
changeset 344866 10d6514e029a2361d992105f331dc1d992bb6cfa
parent 344865 18c821477f9b94762055ba6f3609eefbce2bffc4
child 517056 5693df4c97b122cb0b5dc30d50688394dd85fe9a
push id13936
push userbvandyk@mozilla.com
push dateFri, 25 Mar 2016 22:26:15 +0000
reviewersjya
bugs1232045
milestone48.0a1
Bug 1232045 - Add tests for WebM with resolution changes r=jya Added a test WebM file containing resolution changes. This file has been added to gPlayTests to test playback of such files. A new test has been added, test_resolution_change.html, which reads a new test array, gResolutionChangeTests, of media files containing resolution changes. This new test check that after playing a file through at least one resolution change has taken place. MozReview-Commit-ID: 8yz1ccz8g6O
dom/media/test/manifest.js
dom/media/test/mochitest.ini
dom/media/test/resolution-change.webm
dom/media/test/resolution-change.webm^headers^
dom/media/test/test_resolution_change.html
--- a/dom/media/test/manifest.js
+++ b/dom/media/test/manifest.js
@@ -215,16 +215,19 @@ var gPlayTests = [
     type:"video/ogg", duration:0.266 },
 
   // Test playback of a webm file
   { name:"seek.webm", type:"video/webm", duration:3.966 },
 
   // Test playback of a WebM file with non-zero start time.
   { name:"split.webm", type:"video/webm", duration:1.967 },
 
+  // Test playback of a WebM file with resolution changes.
+  { name:"resolution-change.webm", type:"video/webm", duration:6.533 },
+
   // Test playback of a raw file
   { name:"seek.yuv", type:"video/x-raw-yuv", duration:1.833 },
 
   // A really short, low sample rate, single channel file. This tests whether
   // we can handle playing files when only push very little audio data to the
   // hardware.
   { name:"spacestorm-1000Hz-100ms.ogg", type:"audio/ogg", duration:0.099 },
 
@@ -279,16 +282,21 @@ var gSnifferTests = [
   { name:"320x240.ogv", type:"video/ogg", width:320, height:240, duration:0.233, size:28942 },
   { name:"seek.webm", type:"video/webm", duration:3.966, size:215529 },
   { name:"gizmo.mp4", type:"video/mp4", duration:5.56, size:383631 },
   // A mp3 file with id3 tags.
   { name:"id3tags.mp3", type:"audio/mpeg", duration:0.28, size:3530},
   { name:"bogus.duh", type:"bogus/duh" }
 ];
 
+// Files that contain resolution changes
+var gResolutionChangeTests = [
+  { name:"resolution-change.webm", type:"video/webm", duration:6.533 },
+];
+
 // Files we must reject as invalid.
 var gInvalidTests = [
   { name:"invalid-m0c0.opus", type:"audio/ogg; codecs=opus"},
   { name:"invalid-m0c3.opus", type:"audio/ogg; codecs=opus"},
   { name:"invalid-m1c0.opus", type:"audio/ogg; codecs=opus"},
   { name:"invalid-m1c9.opus", type:"audio/ogg; codecs=opus"},
   { name:"invalid-m2c0.opus", type:"audio/ogg; codecs=opus"},
   { name:"invalid-m2c1.opus", type:"audio/ogg; codecs=opus"},
--- a/dom/media/test/mochitest.ini
+++ b/dom/media/test/mochitest.ini
@@ -470,16 +470,18 @@ support-files =
   r11025_u8_c1_trunc.wav
   r11025_u8_c1_trunc.wav^headers^
   r16000_u8_c1_list.wav
   r16000_u8_c1_list.wav^headers^
   reactivate_helper.html
   redirect.sjs
   referer.sjs
   region.vtt
+  resolution-change.webm
+  resolution-change.webm^headers^
   sample.3gp
   sample.3g2
   sample-fisbone-skeleton4.ogv
   sample-fisbone-skeleton4.ogv^headers^
   sample-fisbone-wrong-header.ogv
   sample-fisbone-wrong-header.ogv^headers^
   seek.ogv
   seek.ogv^headers^
@@ -767,16 +769,17 @@ skip-if = toolkit == 'gonk' # bug 112884
 [test_reactivate.html]
 skip-if = toolkit == 'gonk' # bug 1128845 on gonk
 [test_readyState.html]
 [test_referer.html]
 [test_replay_metadata.html]
 [test_reset_events_async.html]
 [test_reset_src.html]
 [test_video_dimensions.html]
+[test_resolution_change.html]
 tags=capturestream
 [test_resume.html]
 skip-if = true # bug 1021673
 [test_seek_negative.html]
 [test_seek_nosrc.html]
 [test_seek_out_of_range.html]
 [test_seek-1.html]
 [test_seek-2.html]
new file mode 100644
index 0000000000000000000000000000000000000000..29aad93b96c54878e7c8bb9c42a1940fb5a26283
GIT binary patch
literal 7166
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
NyUilUW)s9u{|9kbM8p69
new file mode 100644
--- /dev/null
+++ b/dom/media/test/resolution-change.webm^headers^
@@ -0,0 +1,1 @@
+Cache-Control: no-store
new file mode 100644
--- /dev/null
+++ b/dom/media/test/test_resolution_change.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Test playback of files with resolution changes</title>
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+  <script type="text/javascript" src="manifest.js"></script>
+</head>
+<body>
+<pre id="test">
+<script class="testbody" type="text/javascript">
+
+var manager = new MediaTestManager;
+
+function loadedData(e) {
+  var v = e.target;
+  v.addEventListener("resize", resize, false);
+  v.play();
+}
+
+function resize(e) {
+  var v = e.target;
+  v.seenResolutionChange = true;
+}
+
+function ended(e)  {
+  var v = e.target;
+  ok(v.seenResolutionChange, v.token + ": A resolution change should have ocurred by the end of playback");
+  removeNodeAndSource(v);
+  manager.finished(v.token);
+}
+
+function startTest(test, token) {
+  var v = document.createElement('video');
+  v.preload = "metadata";
+  v.token = token;
+  v.src = test.name;
+  v.seenResolutionChange = false;
+
+  v.addEventListener("loadeddata", loadedData, false)
+  v.addEventListener("ended", ended, false);
+
+  manager.started(token);
+  document.body.appendChild(v);
+}
+
+manager.runTests(gResolutionChangeTests, startTest);
+
+</script>
+</pre>
+</body>
+</html>