summaryrefslogtreecommitdiffstats
path: root/dom/base/test/test_input_vsync_alignment_inner_event_loop.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/base/test/test_input_vsync_alignment_inner_event_loop.html')
-rw-r--r--dom/base/test/test_input_vsync_alignment_inner_event_loop.html49
1 files changed, 49 insertions, 0 deletions
diff --git a/dom/base/test/test_input_vsync_alignment_inner_event_loop.html b/dom/base/test/test_input_vsync_alignment_inner_event_loop.html
new file mode 100644
index 0000000000..022d06663f
--- /dev/null
+++ b/dom/base/test/test_input_vsync_alignment_inner_event_loop.html
@@ -0,0 +1,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>