From 716d242be4ecb00656a5c8c59086675211e9e740 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Pe=C3=B1a=20Moreno?= Date: Wed, 28 Aug 2019 08:32:39 -0700 Subject: [PATCH] [Longtasks] Add microtask test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: 980581 Change-Id: I3756836d5d865e7d68530f515a310bf925229148 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1769296 Commit-Queue: Nicolás Peña Moreno Reviewed-by: Timothy Dresser Cr-Commit-Position: refs/heads/master@{#691181} --- longtask-timing/long-microtask.window.js | 29 ++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 longtask-timing/long-microtask.window.js diff --git a/longtask-timing/long-microtask.window.js b/longtask-timing/long-microtask.window.js new file mode 100644 index 00000000000000..7b7d1848f8c9a8 --- /dev/null +++ b/longtask-timing/long-microtask.window.js @@ -0,0 +1,29 @@ +async_test(function (t) { + if (typeof PerformanceLongTaskTiming === 'undefined') { + assert_unreached("Longtasks are not supported."); + t.done(); + } + new PerformanceObserver( + t.step_func_done(entryList => { + const entries = entryList.getEntries(); + assert_equals(entries.length, 1, + 'Exactly one entry is expected.'); + const longtask = entries[0]; + assert_equals(longtask.entryType, 'longtask'); + assert_equals(longtask.name, 'self'); + assert_greater_than(longtask.duration, 50); + assert_greater_than_equal(longtask.startTime, 0); + const currentTime = performance.now(); + assert_less_than_equal(longtask.startTime, currentTime); + t.done(); + }) + ).observe({entryTypes: ['longtask']}); + + window.onload = () => { + /* Generate a slow microtask */ + Promise.resolve().then(() => { + const begin = window.performance.now(); + while (window.performance.now() < begin + 60); + }); + }; +}, 'A short task followed by a long microtask is observable.');