<!DOCTYPE HTML>
<html>
<head>
<script src="../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("Test PerformanceObserver callback is a task, not a microtask.");
window.jsTestIsAsync = true;

window.microtaskExecuted = false;
window.callbackCount = 0;
window.list = null;

let observer = new PerformanceObserver((list) => {
    window.list = list;
    callbackCount++;

    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");
        });
        return;
    }

    if (callbackCount === 2) {
        shouldBe(`list.getEntries().length`, `2`);
        shouldBeTrue(`microtaskExecuted`);
        finishJSTest();
        return;
    }

    testFailed("Callback should not have fired again");
});

observer.observe({entryTypes: ["mark"]});
performance.mark("mark1");
</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>
