<script src=resources/common.js></script>
<script src=../resources/testharness.js></script>
<script src=../resources/testharnessreport.js></script>

<script>
  test(t => {
    t.add_cleanup(clearUseCounter);
    assert_false(internals.isUseCounted(document, kPriorityHints),
                 'Priority Hints is not use-counted before Request is ' +
                 'constructed');
    const request = new Request("", {importance: 'low'});
    assert_true(internals.isUseCounted(document, kPriorityHints),
                'Priority Hints is not use-counted before Request is ' +
                'constructed');
  }, 'Priority Hints is use-counted when a Request is constructed with ' +
     'RequestInit containing the importance member');
</script>
