75 lines
2 KiB
HTML
75 lines
2 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<title>TestDriver freeze method</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
|
|
<script>
|
|
var test = async_test('Test freeze callback.');
|
|
window.open('resources/window.html', 'Child Window');
|
|
|
|
var total_steps = 0;
|
|
|
|
const StepStatus = {
|
|
ADDED: 0,
|
|
SUCCESS: 1,
|
|
FAIL: 2,
|
|
};
|
|
|
|
var steps_map = new Map();
|
|
|
|
function poll_for_result(request_token, step_name, expect_success) {
|
|
test.step(() => {
|
|
var iteration = 5;
|
|
var checkResult = () => {
|
|
fetch("resources/beacon.py?query&token=" + request_token).then(test.step_func((response) => {
|
|
var count = response.headers.get("Count");
|
|
if (count != '0') {
|
|
// If the server received something we can terminate polling.
|
|
if (expect_success) {
|
|
step_success(step_name);
|
|
} else {
|
|
step_fail(step_name);
|
|
}
|
|
} else if (!expect_success && count == '0' && iteration == 0) {
|
|
// When we are out of iterations and we aren't expecting success, declare this step complete.
|
|
// Should be 125 ms looking to make sure server didn't see the request.
|
|
step_success(step_name);
|
|
} else {
|
|
iteration--;
|
|
test.step_timeout(checkResult, 25);
|
|
}
|
|
}));
|
|
};
|
|
test.step_timeout(checkResult, 25);
|
|
});
|
|
}
|
|
|
|
function add_step(name) {
|
|
steps_map[name] = StepStatus.ADDED;
|
|
total_steps++;
|
|
}
|
|
|
|
function step_success(name) {
|
|
total_steps--;
|
|
steps_map[name] = StepStatus.SUCCESS;
|
|
if (total_steps == 0)
|
|
test.done();
|
|
}
|
|
|
|
function step_fail(name) {
|
|
total_steps--;
|
|
steps_map[name] = StepStatus.FAIL;
|
|
test.step(() => assert_unreached('During onfreeze: ' + name + ' failed to behave as expected.'));
|
|
if (total_steps == 0)
|
|
test.done();
|
|
}
|
|
|
|
test.step_timeout(() => {
|
|
for (var step in steps_map) {
|
|
if(steps_map[step] == StepStatus.ADDED)
|
|
test.step(() => assert_unreached('During onfreeze: ' + step + ' never finshed.'));
|
|
}
|
|
}, 1000);
|
|
|
|
</script>
|