| Index: third_party/WebKit/LayoutTests/imported/wpt/html/webappapis/scripting/event-loops/microtask_after_raf.html
|
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/html/webappapis/scripting/event-loops/microtask_after_raf.html b/third_party/WebKit/LayoutTests/imported/wpt/html/webappapis/scripting/event-loops/microtask_after_raf.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..824dbc4b92e33323862c5ce59c427cba079d98ce
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/html/webappapis/scripting/event-loops/microtask_after_raf.html
|
| @@ -0,0 +1,57 @@
|
| +<!DOCTYPE html>
|
| +<head>
|
| +<link rel=author title="Aleks Totic" href="mailto:atotic@chromium.org">
|
| +<link rel=help href="https://html.spec.whatwg.org/#clean-up-after-running-script">
|
| +<script src="/resources/testharness.js"></script>
|
| +<script src="/resources/testharnessreport.js"></script>
|
| +<script src="resources/common.js"></script>
|
| +</head>
|
| +<body style="height:2000px;">
|
| +<script>
|
| +/*
|
| +promise 1, promise 2 execute immediately after rAF
|
| +promise 1 child executes immediately after promise 2.
|
| +
|
| +Relevant specs:
|
| +
|
| +https://html.spec.whatwg.org/#clean-up-after-running-script
|
| +If the JavaScript execution context stack is now empty, perform a microtask checkpoint.
|
| +
|
| +https://html.spec.whatwg.org/#perform-a-microtask-checkpoint
|
| +"perform a microtask checkpoint" runs in a loop until all microtasks have been delivered.
|
| +*/
|
| +
|
| +var test = async_test("Microtask execute immediately after script");
|
| +
|
| +window.requestAnimationFrame( function() {
|
| + var events = [];
|
| +
|
| + Promise.resolve()
|
| + .then(function() {
|
| + events.push("promise 1");
|
| + return Promise.resolve();
|
| + })
|
| + .then(function() {
|
| + test.step(function() {
|
| + events.push("promise 1 child");
|
| + assert_array_equals(events, ["promise 1", "promise 2", "promise 1 child"]);
|
| + test.done();
|
| + });
|
| + });
|
| + Promise.resolve()
|
| + .then(function() {
|
| + events.push("promise 2");
|
| + });
|
| +
|
| + // Set up events that must be executed after Promise.
|
| + window.setTimeout(function() {
|
| + events.push('timeout');
|
| + }, 0);
|
| + window.addEventListener('scroll', function() {
|
| + events.push('scroll');
|
| + });
|
| + window.scrollBy(0,10);
|
| +
|
| +});
|
| +</script>
|
| +</body>
|
|
|