| <!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> |