blob: 923e10ab411c6220f616da89a7c5f1d169d71b15 [file] [edit]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/accessibility-helper.js"></script>
<script src="../resources/js-test.js"></script>
</head>
<body>
<img src="resources/cake.png" id="image" onload="runTest();">
<div id="nonimage">Not an image</div>
<script>
var output = "This tests that AXImageDataSize and AXImageData can be retrieved for image elements.\n\n";
window.jsTestIsAsync = true;
var image, nonImage;
function runTest() {
if (!window.accessibilityController)
return;
image = accessibilityController.accessibleElementById("image");
// imageDataSize should return non-empty dimensions for an image.
output += expect("image.imageDataSize.indexOf('AXImageDataSize') >= 0", "true");
output += expect("image.imageDataSize.indexOf('{0, 0}') >= 0", "false");
// imageDataForParameters with resize 100x100 should return 100*100*4 = 40000 bytes.
output += expect("image.imageDataForParameters(100, 100)", "'AXImageData: 40000 bytes'");
// Native-size fetch (0, 0 means use original dimensions). cake.png is 280x209 = 234080 bytes.
output += expect("image.imageDataForParameters(0, 0)", "'AXImageData: 234080 bytes'");
// Invalid format should return null.
output += expect("image.imageDataForParametersWithFormat(100, 100, 'PNG')", "'(null)'");
// Subrect extraction: resize to 200x200, extract a 50x50 subrect = 50*50*4 = 10000 bytes.
output += expect("image.imageDataForSubrect(200, 200, 10, 10, 50, 50)", "'AXImageData: 10000 bytes'");
// Out-of-bounds subrect: resize to 100x100, request subrect starting at (80, 80) with size 50x50.
// The extraction rect extends beyond the buffer, but getPixelBuffer clips and zero-fills.
// The returned buffer is still 50*50*4 = 10000 bytes.
output += expect("image.imageDataForSubrect(100, 100, 80, 80, 50, 50)", "'AXImageData: 10000 bytes'");
// Out-of-bounds subrect without resize: native size is 280x209, request subrect at (250, 200) with size 100x100.
// The returned buffer is still 100*100*4 = 40000 bytes due to aforementioned zero-filling.
output += expect("image.imageDataForSubrect(0, 0, 250, 200, 100, 100)", "'AXImageData: 40000 bytes'");
nonImage = accessibilityController.accessibleElementById("nonimage");
output += expect("nonImage.imageDataForParameters(100, 100)", "'(null)'");
debug(output);
finishJSTest();
}
</script>
</body>
</html>