mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-07 01:01:43 +00:00
Bug 1346120 part 6 - Test drawImage gets a non-single-color image from suspended video; r=jwwang
Once part 4 is applied, a suspend video element won't be rendered anymore, so that the video element keeps the last decoded-frame. By this way, drawing a suspended video element to a canvas should get something that is not single-color. MozReview-Commit-ID: J6dsZIvtO --HG-- extra : rebase_source : 247db68d5fb0f6b24b07c197411e5d423ff02705 extra : intermediate-source : 145a223ab9777edc2bc9f2868eef2cbcd8725171 extra : source : 7e55644b5ba79c7a13211c23cedc5dc77a1e55ff
This commit is contained in:
parent
09feb98f41
commit
6fd31124b4
@ -1149,5 +1149,9 @@ tags = suspend
|
||||
[test_background_video_tainted_by_drawimage.html]
|
||||
skip-if = toolkit == 'android' # bug 1346705
|
||||
tags = suspend
|
||||
[test_background_video_drawimage_with_suspended_video.html]
|
||||
skip-if = toolkit == 'android' # bug 1346705
|
||||
tags = suspend
|
||||
|
||||
[test_temporary_file_blob_video_plays.html]
|
||||
skip-if = toolkit == 'android' # android(bug 1232305)
|
||||
|
@ -0,0 +1,78 @@
|
||||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Test Background Video Displays Video Frame via drawImage When Suspended</title>
|
||||
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script src="manifest.js"></script>
|
||||
<script src="background_video.js"></script>
|
||||
<link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
|
||||
<style>
|
||||
video, canvas {
|
||||
border: 1px solid black;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
"use strict";
|
||||
|
||||
var manager = new MediaTestManager;
|
||||
|
||||
function drawVideoToCanvas(v) {
|
||||
console.log('drawVideoToCanvas');
|
||||
let w = v.width,
|
||||
h = v.height,
|
||||
c = document.createElement('canvas');
|
||||
c.width = 4;
|
||||
c.height = 4;
|
||||
c.style.width = 64;
|
||||
c.style.height = 64;
|
||||
document.body.appendChild(c);
|
||||
|
||||
let gfx = c.getContext('2d');
|
||||
if (!gfx) {
|
||||
throw Error("Unable to obtain context '2d' from canvas");
|
||||
}
|
||||
|
||||
gfx.drawImage(v, 0, 0, 4, 4);
|
||||
let imageData = gfx.getImageData(0, 0, 4, 4);
|
||||
let pixels = imageData.data;
|
||||
|
||||
// Check that pixels aren't all the same colour.
|
||||
// Implements by checking against rgb of the first pixel.
|
||||
let rr = pixels[0],
|
||||
gg = pixels[1],
|
||||
bb = pixels[2],
|
||||
allSame = true;
|
||||
|
||||
for (let i = 0; i < 4*4; i++) {
|
||||
let r = pixels[4*i+0];
|
||||
let g = pixels[4*i+1];
|
||||
let b = pixels[4*i+2];
|
||||
if (r != rr || g != gg || b != bb) {
|
||||
allSame = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ok(!allSame, "Pixels aren't all the same color");
|
||||
}
|
||||
|
||||
startTest({
|
||||
desc: 'Test Background Video Displays Video Frame via drawImage When Suspended',
|
||||
prefs: [
|
||||
[ "media.test.video-suspend", true ],
|
||||
[ "media.suspend-bkgnd-video.enabled", true ],
|
||||
[ "media.suspend-bkgnd-video.delay-ms", 500 ]
|
||||
],
|
||||
tests: gDecodeSuspendTests,
|
||||
runTest: (test, token) => {
|
||||
let v = appendVideoToDoc(test.name, token);
|
||||
manager.started(token);
|
||||
|
||||
waitUntilPlaying(v)
|
||||
.then(() => testVideoSuspendsWhenHidden(v))
|
||||
.then(() => {
|
||||
drawVideoToCanvas(v);
|
||||
manager.finished(token);
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
Loading…
x
Reference in New Issue
Block a user