| <!DOCTYPE HTML> |
| <html> |
| <head> |
| <script src="../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Ensure PerformanceObserver callback fires for all observed entries between observe/disconnect calls."); |
| window.jsTestIsAsync = true; |
| |
| let shouldEnd = false; |
| |
| let observer = new PerformanceObserver((list) => { |
| debug("PerformanceObserver callback fired: " + list.getEntries().length + " entries"); |
| for (let mark of list.getEntries()) { |
| if (mark.name === "mark5" || mark.name === "mark6") |
| testFailed("Should not have observed " + mark.name); |
| else |
| testPassed(mark.name); |
| } |
| if (shouldEnd) |
| finishJSTest(); |
| }); |
| observer.observe({entryTypes: ["mark"]}); |
| |
| // --- |
| |
| performance.mark("mark1"); |
| |
| setTimeout(() => { |
| performance.mark("mark2"); |
| performance.mark("mark3"); |
| }, 50); |
| |
| setTimeout(() => { |
| performance.mark("mark4"); |
| observer.disconnect(); |
| performance.mark("mark5"); // NOT seen. |
| }, 100); |
| |
| setTimeout(() => { |
| performance.mark("mark6"); // NOT seen. |
| observer.observe({entryTypes: ["mark"]}); |
| performance.mark("mark7"); |
| shouldEnd = true; |
| }, 150); |
| </script> |
| <script src="../resources/js-test-post.js"></script> |
| </body> |
| </html> |