<!DOCTYPE html>
<title>Same-origin prerendering can trigger autoplay</title>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="/common/dispatcher/dispatcher.js"></script>
<script src="../resources/utils.js"></script>
<script src="resources/utils.js"></script>

<body>
<script>
setup(() => assertSpeculationRulesIsSupported());

promise_test(async t => {
  const {exec, activate} = await create_prerendered_page(t);
  await exec(() => {
    const video = document.createElement('video');
    video.src = '/media/A4.mp4';
    video.autoplay = true;
    video.muted = true;
    window.video = video;
    document.body.appendChild(video);
  });

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

  const before_activation = await exec(() => ({
    readyState: video.readyState,
    paused: video.paused,
    currentTime: video.currentTime
  }));

  await activate();
  await new Promise(resolve => t.step_timeout(resolve, 500));
  const after_activation = await exec(() => ({
    readyState: video.readyState,
    paused: video.paused,
    currentTime: video.currentTime
  }));

  assert_equals(before_activation.paused, false);
  assert_equals(before_activation.currentTime, 0);
  assert_equals(after_activation.paused, false);
  assert_greater_than(before_activation.currentTime, 0);
}, "media autoplay should defer playaback");
</script>
