<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/sab.js"></script>
<script type="module">
test(t => {
  // Fixed-length ABs should not throw
  const ab = new ArrayBuffer(16);
  new Response(new Uint8Array(ab));

  const rab = new ArrayBuffer(16, { maxByteLength: 1024 });
  // Response doesn't have [AllowResizable] or [AllowShared]
  assert_throws_js(TypeError, () => {
    new Response(new Uint8Array(rab));
  });
}, "APIs without [AllowResizable] throw when passed resizable ArrayBuffers");

test(t => {
  const enc = new TextEncoder();

  // Fixed-length SABs should not throw
  const sab = createBuffer('SharedArrayBuffer', 16);
  enc.encodeInto("foobar", new Uint8Array(sab));

  const gsab = createBuffer('SharedArrayBuffer', 16, { maxByteLength: 1024 });
  // TextEncoder.encodeInto doesn't have [AllowResizable] but has [AllowShared]
  assert_throws_js(TypeError, () => {
    enc.encodeInto("foobar", new Uint8Array(gsab));
  });
}, "APIs with [AllowShared] but without [AllowResizable] throw when passed growable SharedArrayBuffers");
</script>
