fune/testing/web-platform/tests/shape-detection/detection-HTMLImageElement-zero-dimension-image.https.html
Fredrik Söderqvist 514f5977b9 Bug 1682297 [wpt PR 26889] - Fix ShapeDetection handling of broken HTMLImageElements, a=testonly
Automatic update from web-platform-tests
Fix ShapeDetection handling of broken HTMLImageElements

When an HTMLImageElement's 'src' is set to the empty string, the state
of the image request will be 'broken', and thus the promise should be
rejected with an InvalidStateError exception per the rules at [1].

Move the intrinsic size check below the image existence check, and use
a more direct method of getting at the size (no need to go through the
BitmapImageSource interface when we're already fiddling with internals).

Also add a check for IsLoaded() to better match the spec wording
'fully decodable'.

[1] https://wicg.github.io/shape-detection-api/#image-sources-for-detection

Bug: 789511
Change-Id: I69ac4a9081cfff7f9c7c8f7edf39667e3dd1eb4d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2587165
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#837140}

--

wpt-commits: 245cc257ba8757fd4debe2e68246cb5885c51dd1
wpt-pr: 26889
2020-12-21 14:59:46 +00:00

34 lines
1 KiB
HTML

<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
// This test verifies *Detector.detect() returns an empty list when fed with
// an HTMLImageElement with an image with 0x0 dimensions.
const zeroDimensionsTests = [
{
createDetector: () => { return new FaceDetector(); },
name: "Face - detect(0x0)"
},
{
createDetector: () => { return new BarcodeDetector(); },
name: "Barcode - detect(0x0)"
},
{
createDetector: () => { return new TextDetector(); },
name: "Text - detect(0x0)"
}
];
for (let zeroDimensionsTest of zeroDimensionsTests) {
promise_test(async t => {
const img = new Image();
const imgWatcher = new EventWatcher(t, img, ["load", "error"]);
img.src = "/images/red-zerosize.svg";
await imgWatcher.wait_for("load");
const detector = zeroDimensionsTest.createDetector();
const detectionResult = await detector.detect(img);
assert_equals(detectionResult.length, 0);
}, zeroDimensionsTest.name);
}
</script>