Bug 874897 - Mochitest for copying of frames of videos with aspect ratio to canvas - r=kinetik

--HG--
extra : rebase_source : c5ff10d61a1ea46b0fdb2a43e926405660493912
This commit is contained in:
Chris Double 2013-11-18 18:26:51 +13:00
parent 255c0264b4
commit d1f0d1619e
4 changed files with 77 additions and 0 deletions

Binary file not shown.

View File

@ -423,6 +423,13 @@ var gChainingTests = [
{ name:"bogus.duh", type:"bogus/duh" }
];
// Videos with an aspect ratio. Used for testing that displaying frames
// on a canvas works correctly in the case of non-standard aspect ratios.
// See bug 874897 for an example.
var gAspectRatioTests = [
{ name:"VID_0001.ogg", type:"video/ogg", duration:19.966 }
];
// These are files with non-trivial tag sets.
// Used by test_metadata.html.
var gMetadataTests = [

View File

@ -165,6 +165,7 @@ support-files =
variable-samplerate.ogg
variable-samplerate.opus
vbr.mp3
VID_0001.ogg
video-overhang.ogg
wave_metadata.wav
wave_metadata_bad_len.wav
@ -185,6 +186,7 @@ support-files =
[test_bug495300.html]
[test_bug654550.html]
[test_bug686942.html]
[test_bug874897.html]
[test_bug883173.html]
[test_bug895305.html]
[test_bug895091.html]

View File

@ -0,0 +1,68 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=874897
-->
<head>
<title>Test for Bug 874897</title>
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
<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>
<script class="testbody" type="text/javascript">
var manager = new MediaTestManager;
function loadeddata(e) {
var v = e.target;
ok(v.readyState >= v.HAVE_CURRENT_DATA,
"readyState must be >= HAVE_CURRENT_DATA for " + v._name);
var canvas = document.createElement("canvas");
canvas.width = 210;
canvas.height = 120;
document.body.appendChild(canvas);
var ctx = canvas.getContext("2d");
try {
ctx.drawImage(v, 0, 0, v.videoWidth, v.videoHeight, 0, 0, canvas.width, canvas.height);
ok(true, "Shouldn't throw exception while drawing to canvas from video for " + v._name);
} catch (ex) {
ok(false, "Shouldn't throw exception while drawing to canvas from video for " + v._name);
}
v._finished = true;
v.parentNode.removeChild(v);
manager.finished(v.token);
}
function startTest(test, token) {
var type = getMajorMimeType(test.type);
if (type != "video")
return;
var v = document.createElement('video');
v.token = token;
manager.started(token);
v.src = test.name;
v._name = test.name;
v._finished = false;
v.autoplay = true;
v.style.display = "none";
v.addEventListener("loadeddata", loadeddata, false);
document.body.appendChild(v);
}
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPrefEnv({"set": [["media.cache_size", 40000]]}, beginTest);
function beginTest() {
manager.runTests(gAspectRatioTests, startTest);
}
</script>
</pre>
</body>
</html>