| <!DOCTYPE HTML> |
| <meta charset=utf-8> |
| <title>LongTask Timing: Promise resolvers</title> |
| <body> |
| |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="resources/utils.js"></script> |
| |
| <h1>Long Task: promise resolvers</h1> |
| <script> |
| function test_promise_long_task(name, promise) { |
| promise_test(async t => { |
| assert_implements(window.PerformanceLongTaskTiming, 'Longtasks are not supported.'); |
| const longTaskPromise = new Promise(resolve => { |
| const observer = new PerformanceObserver(t.step_func(entryList => { |
| observer.disconnect(); |
| resolve(entryList.getEntries()); |
| })); |
| observer.observe({entryTypes: ['longtask']}); |
| }); |
| |
| await promise().catch(() => {}); |
| busyWait(); |
| const entries = await longTaskPromise; |
| assert_greater_than_equal(entries.length, 1); |
| }, `Performance longtask entries after a promise: ${name}`); |
| } |
| |
| test_promise_long_task("successful fetch", () => fetch("/common/dummy.xml")); |
| test_promise_long_task("Response.text()", () => |
| fetch("/common/dummy.xml").then(r => r.text())); |
| test_promise_long_task("rejected fetch", () => fetch("/common/non-existent.xml")); |
| test_promise_long_task("JSON error", () => fetch("/common/dummy.xml").then(r => r.json())); |
| </script> |
| </body> |