blob: 022d06663ff46402c1aa9ddce0bcad66ff394632 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
<!DOCTYPE HTML>
<html>
<head>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css">
</head>
<body >
<input />
<script type="text/javascript">
SimpleTest.waitForExplicitFinish();
function runTest() {
function checkResult() {
ok(true, "didn't crash");
SimpleTest.finish();
}
// Dispatch an vsync event to the queue
window.requestAnimationFrame(() => {
window.requestAnimationFrame(() => {
});
});
// Dispatch the first input tasks. Since there's a vsync
// task in the queue, so this task takes the priority and runs
// first.
SpecialPowers.Services.tm.dispatchToMainThread(function() {
let secondInputRun = false;
// Dispatch the second input task to the queue.
SpecialPowers.Services.tm.dispatchToMainThread(function() {
secondInputRun = true;
}, SpecialPowers.Ci.nsIRunnablePriority.PRIORITY_INPUT_HIGH);
// Inner event loop runs and picks the second input task to run.
SpecialPowers.Services.tm.spinEventLoopUntil(
"Test(vsync_alignment_inner_event_loop.html)", () => secondInputRun);
setTimeout(checkResult, 0);
}, SpecialPowers.Ci.nsIRunnablePriority.PRIORITY_INPUT_HIGH);
}
SpecialPowers.pushPrefEnv({
set: [["dom.input_events.strict_input_vsync_alignment", true]]
}, runTest());
</script>
</body>
</html>
|