diff options
Diffstat (limited to 'testing/web-platform/tests/longtask-timing/resources')
5 files changed, 68 insertions, 0 deletions
diff --git a/testing/web-platform/tests/longtask-timing/resources/makelongtask.js b/testing/web-platform/tests/longtask-timing/resources/makelongtask.js new file mode 100644 index 0000000000..75de5453b5 --- /dev/null +++ b/testing/web-platform/tests/longtask-timing/resources/makelongtask.js @@ -0,0 +1,3 @@ +/* Generate a slow task. */ +const begin = window.performance.now(); +while (window.performance.now() < begin + 60); diff --git a/testing/web-platform/tests/longtask-timing/resources/raflongtask.js b/testing/web-platform/tests/longtask-timing/resources/raflongtask.js new file mode 100644 index 0000000000..ec39cb896e --- /dev/null +++ b/testing/web-platform/tests/longtask-timing/resources/raflongtask.js @@ -0,0 +1,5 @@ +window.requestAnimationFrame(function() { + /* Generate a slow task. */ + const begin = window.performance.now(); + while (window.performance.now() < begin + 60); +}); diff --git a/testing/web-platform/tests/longtask-timing/resources/subframe-observing-longtask.html b/testing/web-platform/tests/longtask-timing/resources/subframe-observing-longtask.html new file mode 100644 index 0000000000..125ff1e4cb --- /dev/null +++ b/testing/web-platform/tests/longtask-timing/resources/subframe-observing-longtask.html @@ -0,0 +1,31 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<meta name="viewport" content="width=device-width"> +<title>Child Iframe</title> +<h1>Child Iframe observing long tasks</h1> + +<script> + const observer = new PerformanceObserver(function(entryList) { + for (i = 0; i < entryList.getEntries().length; i++) { + const longtask = entryList.getEntries()[i]; + // Ignore long task generated within here, as part of making this iframe. + // Ignore multiple-contexts and unknown because they cause longtask-in-parentiframe test to be flaky. + if (longtask.name == 'self' || + longtask.name == 'multiple-contexts' || longtask.name == 'unknown') + return; + // TODO(panicker): include containerType. + const attribution = longtask.attribution[0]; + const entryContents = { + 'entryType': longtask.entryType, + 'frame-attribution': longtask.name, + 'task-attribution': attribution.name, + 'containerType': attribution.containerType, + 'containerId': attribution.containerId, + 'containerName': attribution.containerName, + 'containerSrc': attribution.containerSrc + }; + top.postMessage(entryContents, '*'); + } + }); + observer.observe({entryTypes: ['longtask']}); +</script> diff --git a/testing/web-platform/tests/longtask-timing/resources/subframe-with-longtask.html b/testing/web-platform/tests/longtask-timing/resources/subframe-with-longtask.html new file mode 100644 index 0000000000..298b252d18 --- /dev/null +++ b/testing/web-platform/tests/longtask-timing/resources/subframe-with-longtask.html @@ -0,0 +1,11 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<meta name="viewport" content="width=device-width"> + +<title>Long Task Iframe</title> +<h1>Long Task in Inline Script</h1> + +<script> + const begin = window.performance.now(); + while (window.performance.now() < begin + 60); +</script> diff --git a/testing/web-platform/tests/longtask-timing/resources/utils.js b/testing/web-platform/tests/longtask-timing/resources/utils.js new file mode 100644 index 0000000000..5498aa9a7b --- /dev/null +++ b/testing/web-platform/tests/longtask-timing/resources/utils.js @@ -0,0 +1,18 @@ +function checkLongTaskEntry(longtask, name = 'self') { + assert_equals(longtask.entryType, 'longtask', 'The entryType should be longtask'); + assert_equals(longtask.name, name, 'Name should be ' + name + '.'); + assert_true(Number.isInteger(longtask.duration, 'The duration should be an integer.')); + assert_greater_than_equal(longtask.duration, 50, 'The Duration should be greater than or equal to 50.'); + assert_greater_than_equal(longtask.startTime, 0, 'The startTime should be greater than or equal to 0.'); + const currentTime = performance.now(); + assert_less_than_equal(longtask.startTime, currentTime, 'The startTime should be less than or equal to current time.'); +} + +function hasUnrelatedTaskName(taskName, expectedTaskName) { + return (taskName !== expectedTaskName); +} + +function busyWait() { + const deadline = performance.now() + 100; + while (performance.now() < deadline) {} +} |