blob: 3511eb30b550980e5a0f5380fae0521586b84ea5 [file] [log] [blame]
<!-- webkit-test-runner [ UsesBackForwardCache=true ] -->
<!DOCTYPE html>
<html>
<body>
<video id="video" autoplay=""></video>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="routines.js"></script>
<script>
t = async_test();
async function waitForConnectionState(pc, state)
{
if (pc.connectionState === state)
return;
let resolveCallback;
const promise = new Promise((resolve, reject) => {
resolveCallback = resolve;
setTimeout(() => reject('did not go to state ' + state), 15000);
});
pc.onconnectionstatechange = () => {
if (pc.connectionState === state)
resolveCallback();
};
return promise;
}
window.addEventListener("pageshow", async function(event) {
if (!event.persisted)
return;
assert_equals(t.pc1.connectionState, "connected");
await waitForConnectionState(t.pc1, "disconnected");
t.done();
});
window.addEventListener("pagehide", t.step_func((event) => {
assert_equals(t.pc1.connectionState, "connected");
if (!event.persisted)
assert_uneached("Page failed to enter page cache");
}));
onload = () => {
setTimeout(async () => {
const localStream = await navigator.mediaDevices.getUserMedia({video: true });
const stream = await new Promise((resolve, reject) => {
createConnections((firstConnection) => {
t.pc1 = firstConnection;
firstConnection.addTrack(localStream.getVideoTracks()[0], localStream);
}, (secondConnection) => {
t.pc2 = secondConnection;
secondConnection.ontrack = (trackEvent) => {
resolve(trackEvent.streams[0]);
};
});
setTimeout(() => reject("Test timed out"), 5000);
});
video.srcObject = stream;
await video.play();
window.location = "../fast/history/resources/page-cache-helper.html";
}, 0);
};
</script>
</html>