mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	Automatic update from web-platform-tests Fixing bug with segfaulting TransferFromImageBitmap(null) There was an issue with OffscreenCanvas created from transferring control from a onscreen canvas, and using a BitmapRenderer context with the TransferFromImageBitmap(null). According to the standard TransferFromImageBitmap(null) has to reset the internal bitmap and create a black transparent one. https://html.spec.whatwg.org/multipage/canvas.html#the-imagebitmaprenderingcontext-interface This CL also adds new tests, and fixes some issues with naming in the tests. This CL also moves a method that should have been protected and not public in the first place. Bug: 1188892 Change-Id: I79f5487c99618fa0bbaf8c436b710766f82ce657 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2785425 Reviewed-by: Juanmi Huertas <juanmihd@chromium.org> Reviewed-by: Yi Xu <yiyix@chromium.org> Commit-Queue: Juanmi Huertas <juanmihd@chromium.org> Auto-Submit: Juanmi Huertas <juanmihd@chromium.org> Cr-Commit-Position: refs/heads/master@{#867359} -- wpt-commits: 5dacd60bbfdee3de26860d40ac14c4db74ebb48b wpt-pr: 28244
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<meta charset="utf-8">
 | 
						|
<title>Canvas's ImageBitmapRenderingContext test</title>
 | 
						|
<script src="/resources/testharness.js"></script>
 | 
						|
<script src="/resources/testharnessreport.js"></script>
 | 
						|
<link rel="help" href="https://html.spec.whatwg.org/multipage/scripting.html#the-imagebitmap-rendering-context">
 | 
						|
<script>
 | 
						|
var width = 10;
 | 
						|
var height = 10;
 | 
						|
 | 
						|
function testCanvas(bitmapCanvas, r, g, b, a)
 | 
						|
{
 | 
						|
    var myCanvas = document.createElement('canvas');
 | 
						|
    myCanvas.width = width;
 | 
						|
    myCanvas.height = height;
 | 
						|
    var myCtx = myCanvas.getContext('2d');
 | 
						|
    myCtx.drawImage(bitmapCanvas, 0, 0);
 | 
						|
    var color = myCtx.getImageData(5, 5, 1, 1).data;
 | 
						|
    assert_array_equals(color, [r, g, b, a]);
 | 
						|
}
 | 
						|
 | 
						|
promise_test(function() {
 | 
						|
    function testTransferFromImageBitmapNullability(greenImage) {
 | 
						|
        var bitmapCanvas = new OffscreenCanvas(width,height);
 | 
						|
        var bitmapCtx = bitmapCanvas.getContext('bitmaprenderer');
 | 
						|
        bitmapCtx.transferFromImageBitmap(greenImage);
 | 
						|
 | 
						|
        // Make sure the bitmap renderer canvas is filled correctly.
 | 
						|
        var myCanvas = document.createElement('canvas');
 | 
						|
        var myCtx = myCanvas.getContext('bitmaprenderer');
 | 
						|
        myCtx.transferFromImageBitmap(bitmapCanvas.transferToImageBitmap());
 | 
						|
        testCanvas(myCanvas, 0, 255, 0, 255);
 | 
						|
 | 
						|
        // Test that after transfering for second time to ImageBitmap produces
 | 
						|
        // a black bitmap of the same size
 | 
						|
        var myCanvas2 = document.createElement('canvas');
 | 
						|
        var myCtx2 = myCanvas2.getContext('bitmaprenderer');
 | 
						|
        myCtx2.transferFromImageBitmap(bitmapCanvas.transferToImageBitmap());
 | 
						|
        testCanvas(myCanvas2, 0, 0, 0, 0);
 | 
						|
    }
 | 
						|
 | 
						|
    var greenCanvas = document.createElement('canvas');
 | 
						|
    greenCanvas.width = width;
 | 
						|
    greenCanvas.height = height;
 | 
						|
    var greenCtx = greenCanvas.getContext('2d');
 | 
						|
    greenCtx.fillStyle = '#0f0';
 | 
						|
    greenCtx.fillRect(0, 0, width, height);
 | 
						|
 | 
						|
    return Promise.all([
 | 
						|
        createImageBitmap(greenCanvas),
 | 
						|
    ]).then(([greenImage]) => {
 | 
						|
        testTransferFromImageBitmapNullability(greenImage);
 | 
						|
    });
 | 
						|
},'Test that transferToImageBitmap works and that resets the imagebitmap to black');
 | 
						|
 | 
						|
</script>
 |