<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>

function detachBuffer(buffer) {
  window.postMessage('', '*', [buffer]);
}

promise_test(async () => {
  let data = new ImageData(1024, 1024);
  detachBuffer(data.data.buffer);
  let detector = new FaceDetector();
  try {
    await detector.detect(data);
    assert_unreached();
  } catch (e) {
    assert_equals(e.code, DOMException.INVALID_STATE_ERR);
  }
}, 'FaceDetector.detect() rejects on a detached buffer');

promise_test(async () => {
  let data = new ImageData(1024, 1024);
  detachBuffer(data.data.buffer);
  let detector = new BarcodeDetector();
  try {
    await detector.detect(data);
    assert_unreached();
  } catch (e) {
    assert_equals(e.code, DOMException.INVALID_STATE_ERR);
  }
}, 'BarcodeDetector.detect() rejects on a detached buffer');

promise_test(async () => {
  let data = new ImageData(1024, 1024);
  detachBuffer(data.data.buffer);
  let detector = new TextDetector();
  try {
    await detector.detect(data);
    assert_unreached();
  } catch (e) {
    assert_equals(e.code, DOMException.INVALID_STATE_ERR);
  }
}, 'TextDetector.detect() rejects on a detached buffer');

</script>
