'use strict'; async function createClosedImageBitmap(t) { const img = new Image(); const imgWatcher = new EventWatcher(t, img, ['load', 'error']); img.src = '/images/green-16x16.png'; await imgWatcher.wait_for('load'); const imageBitmap = await createImageBitmap(img); imageBitmap.close(); return imageBitmap; } promise_test(async (t) => { const imageBitmap = await createClosedImageBitmap(t); const detector = new FaceDetector(); try { await detector.detect(imageBitmap); assert_unreached(); } catch (e) { assert_equals(e.code, DOMException.INVALID_STATE_ERR); } }, 'FaceDetector.detect() rejects on a closed ImageBitmap'); promise_test(async (t) => { const imageBitmap = await createClosedImageBitmap(t); const detector = new BarcodeDetector(); try { await detector.detect(imageBitmap); assert_unreached(); } catch (e) { assert_equals(e.code, DOMException.INVALID_STATE_ERR); } }, 'BarcodeDetector.detect() rejects on a closed ImageBitmap'); promise_test(async (t) => { const imageBitmap = await createClosedImageBitmap(t); const detector = new TextDetector(); try { await detector.detect(imageBitmap); assert_unreached(); } catch (e) { assert_equals(e.code, DOMException.INVALID_STATE_ERR); } }, 'TextDetector.detect() rejects on a closed ImageBitmap');