Why does canvas appear blank in a browser test? The bytes are non-zero, but pasting it into a browser yields a blank image. getBase64Image() in devtools outside of a test works fine.
$ browser_tests FaviconApiTest.Extension
Inline example that yields a blank image:
// Directly load favicon from source.
async function whyIsTheCanvasBlank() {
const port = (await chrome.test.getConfig()).testServer.port;
const url =
`http://www.example.com:${port}/extensions/favicon/favicon.ico`;
const image = new Image();
image.src = url;
image.onload = function() {
const dataUri = getBase64Image(image);
console.log(dataUri);
}
}
// Always a blank image, but why?
function getBase64Image(img) {
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
return canvas.toDataURL();
}
I've worked around this in
crrev.com/c/3648136, but it's unclear why canvas isn't working as expected in a test.