<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/dispatcher/dispatcher.js"></script>
<script src="/common/utils.js"></script>
<script src="../resources/utils.js"></script>
<script src="resources/utils.sub.js"></script>
<body>
<script>
  setup(() => assertSpeculationRulesIsSupported());

  promise_test(async t => {
    let urls = getPrefetchUrlList(2);

    let a = document.createElement('a');
    a.className = 'prefetch-me';
    a.href = urls[1];
    a.textContent = 'prefetch me!';
    document.body.appendChild(a);
    t.add_cleanup(() => a.remove());

    insertSpeculationRules({prefetch: [
      {urls: [urls[0]]},
      {where: {selector_matches: '.prefetch-me'}, eagerness: 'immediate'},
    ]});

    await new Promise(resolve => t.step_timeout(resolve, 2000));

    let wasPrefetched = urls.map(isUrlPrefetched);
    assert_true(!!(await wasPrefetched[0]), 'implicit list rule should have worked');
    assert_true(!!(await wasPrefetched[1]), 'implicit document rule should have worked');
  }, 'rules should be accepted without an explicit source');
</script>
</body>
