Index: third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas.html |
diff --git a/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas.html b/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b3104841ce18ec5e4a532fcdaae65b6146ee308f |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas.html |
@@ -0,0 +1,71 @@ |
+<!DOCTYPE html> |
+<script src=../../resources/testharness.js></script> |
+<script src=../../resources/testharnessreport.js></script> |
+<script src="resources/webgl-test.js"></script> |
+<script> |
+ |
+function drawOn2DContext(canvas) { |
+ var ctx = canvas.getContext('2d'); |
+ ctx.strokeStyle="#FF0204"; |
+ ctx.beginPath(); |
+ ctx.moveTo(0,0); |
+ ctx.lineTo(100, 100); |
+ ctx.stroke(); |
+ return ctx; |
+}; |
+ |
+function drawOnWebGLContext(canvas) { |
+ var ctx = create3DContext(canvas); |
+ ctx.drawArrays(ctx.TRIANGLES, 0, 3); |
+ return ctx; |
+}; |
+ |
+// Run captureStream() after transferControlToOffscreen(). |
+var testOffScreenCanvasCommits = function(drawFunction, message) { |
+ async_test(function(test) { |
+ var canvas = document.createElement('canvas'); |
+ var offscreen = canvas.transferControlToOffscreen(); |
+ |
+ var recorder = new MediaRecorder(canvas.captureStream()); |
+ recorder.ondataavailable = test.step_func_done(function(event) { |
+ assert_true(event.data.size > 0, 'Recorded data size should be > 0'); |
+ }); |
+ recorder.start(0); |
+ |
+ var ctx = drawFunction(offscreen); |
+ ctx.commit(); |
+ }), message; |
+}; |
+ |
+generate_tests(testOffScreenCanvasCommits, [ |
Justin Novosad
2017/01/19 19:06:31
The testharness documentation says you can't use g
emircan
2017/01/19 20:50:52
Sorry for missing that. I just removed generate_te
|
+ [ "2d", drawOn2DContext, 'capture of an OffscreenCanvas with 2D context' ], |
+ [ "webgl", drawOnWebGLContext, 'capture of an OffscreenCanvas with WebGL context' ] |
+]); |
+ |
+// Run captureStream() on OffscreenCanvas that uses transferFromImageBitmap(). |
+var testOffScreenCanvasTransferBitmaps = function(drawFunction, message) { |
+ async_test(function(test) { |
+ var canvas = document.createElement('canvas'); |
+ var ctx = canvas.getContext('bitmaprenderer'); |
+ var offscreen = new OffscreenCanvas(400,200); |
+ |
+ var recorder = new MediaRecorder(canvas.captureStream()); |
+ recorder.ondataavailable = test.step_func_done(function(event) { |
+ assert_true(event.data.size > 0, 'Recorded data size should be > 0'); |
+ }); |
+ recorder.start(0); |
+ |
+ drawFunction(offscreen); |
+ var image = offscreen.transferToImageBitmap(); |
+ assert_equals(image.width, 400); |
+ assert_equals(image.height, 200); |
+ ctx.transferFromImageBitmap(offscreen.transferToImageBitmap()); |
+ }), message; |
+}; |
+ |
+generate_tests(testOffScreenCanvasTransferBitmaps, [ |
+ [ "2d", drawOn2DContext, 'capture of an OffscreenCanvas with 2D context' ], |
+ [ "webgl", drawOnWebGLContext, 'capture of an OffscreenCanvas with WebGL context' ] |
+]); |
+ |
+</script> |