forked from mirrors/gecko-dev
		
	 5bf54db34c
			
		
	
	
		5bf54db34c
		
	
	
	
	
		
			
			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>
 |