blob: b06649d6be11afc22b6f8e206557b8400ebd5481 [file] [log] [blame]
<!DOCTYPE html>
<title>Service Worker: Navigation redirection must clear body</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../resources/get-host-info.js?pipe=sub"></script>
<script src="resources/test-helpers.js"></script>
<body>
<script>
promise_test(function(t) {
var scope = 'resources/navigation-redirect-body.php';
var script = 'resources/navigation-redirect-body-worker.js';
var registration;
var frame = document.createElement('frame');
frame.src = 'about:blank';
frame.name = 'target_frame';
frame.id = 'frame';
document.body.appendChild(frame);
var form = document.createElement('form');
form.method = 'POST';
form.action = scope;
form.target = 'target_frame';
var hidden_input = document.createElement('input');
hidden_input.type = 'hidden';
hidden_input.name = 'data';
hidden_input.value = 'test data';
var submit_button = document.createElement('input');
submit_button.type = 'submit';
submit_button.value = 'submit';
form.appendChild(hidden_input);
form.appendChild(submit_button);
document.body.appendChild(form);
return service_worker_unregister_and_register(t, script, scope)
.then(function(r) {
registration = r;
return wait_for_state(t, registration.installing, 'activated');
})
.then(function() {
var frame_load_promise = new Promise(function(resolve) {
frame.addEventListener('load', function() {
resolve(frame.contentWindow.document.body.innerText);
}, false);
});
submit_button.click();
return frame_load_promise;
})
.then(function(text) {
document.body.removeChild(form);
document.body.removeChild(frame);
var request_uri = decodeURIComponent(text);
assert_equals(
request_uri,
'/serviceworker/resources/navigation-redirect-body.php?redirect');
return registration.unregister();
});
}, 'Navigation redirection must clear body');
</script>
</body>