| <script src="../resources/js-test-pre.js"></script> |
| description("Test PerformanceObserver callback is a task, not a microtask."); |
| window.jsTestIsAsync = true; |
| window.microtaskExecuted = false; |
| window.callbackCount = 0; |
| let observer = new PerformanceObserver((list) => { |
| testPassed("PerformanceObserver callback fired"); |
| if (callbackCount === 1) { |
| shouldBeFalse(`microtaskExecuted`); |
| shouldBe(`list.getEntries().length`, `1`); |
| performance.mark("mark2"); |
| Promise.resolve().then(() => { |
| testPassed("Promise microtask fired"); |
| microtaskExecuted = true; |
| performance.mark("mark3"); |
| if (callbackCount === 2) { |
| shouldBe(`list.getEntries().length`, `2`); |
| shouldBeTrue(`microtaskExecuted`); |
| testFailed("Callback should not have fired again"); |
| observer.observe({entryTypes: ["mark"]}); |
| performance.mark("mark1"); |
| <script src="../resources/js-test-post.js"></script> |