blob: 34b802cb69676e16648879a46178fb472e8f5d42 [file] [log] [blame]
spanickera5b95cb2017-03-10 22:42:551<!DOCTYPE HTML>
2<meta charset=utf-8>
3<title>LongTask Timing: long task in nested child iframe</title>
4<body>
5
6<script src="/resources/testharness.js"></script>
7<script src="/resources/testharnessreport.js"></script>
8
9<h1>Long Task in Nested Child Iframe</h1>
10<div id="log"></div>
11<script>
npm@chromium.org71ff8882017-08-15 17:22:0112 const initialTime = performance.now();
spanickera5b95cb2017-03-10 22:42:5513 async_test(function (t) {
Nicolas Penacd751192018-07-10 21:05:2714 if (typeof PerformanceLongTaskTiming === 'undefined') {
15 assert_unreached("Longtasks are not supported.");
16 t.done();
17 }
npm@chromium.org71ff8882017-08-15 17:22:0118 const observer = new PerformanceObserver(
spanickera5b95cb2017-03-10 22:42:5519 t.step_func(function (entryList) {
npm@chromium.org71ff8882017-08-15 17:22:0120 const entries = entryList.getEntries();
spanickera5b95cb2017-03-10 22:42:5521 assert_equals(entries.length, 1,
npm@chromium.org71ff8882017-08-15 17:22:0122 'Exactly one entry is expected.');
23 const longtask = entries[0];
24 assert_equals(longtask.entryType, 'longtask');
25 if (longtask.name == 'self' ||
26 longtask.name == 'multiple-contexts' ||
27 longtask.name == 'unknown')
28 return;
29
30 assert_equals(longtask.name, 'same-origin-descendant');
spanickera5b95cb2017-03-10 22:42:5531 assert_greater_than(longtask.duration, 50);
npm@chromium.org71ff8882017-08-15 17:22:0132 assert_greater_than_equal(longtask.startTime, initialTime);
33 const currentTime = performance.now();
34 assert_less_than_equal(longtask.startTime, currentTime);
spanickera5b95cb2017-03-10 22:42:5535
36 // Assert the TaskAttributionTiming entry in attribution.
37 assert_equals(longtask.attribution.length, 1,
npm@chromium.org71ff8882017-08-15 17:22:0138 'Exactly one attribution entry is expected');
39 const attribution = longtask.attribution[0];
40 assert_equals(attribution.entryType, 'taskattribution');
Nicolas Pena4309ceb2018-11-15 20:00:4441 assert_equals(attribution.name, 'unknown');
spanickera5b95cb2017-03-10 22:42:5542 assert_equals(attribution.duration, 0);
43 assert_equals(attribution.startTime, 0);
npm@chromium.org71ff8882017-08-15 17:22:0144 assert_equals(attribution.containerId, 'child-iframe-id');
45 assert_equals(attribution.containerName, 'child-iframe-name');
46 assert_equals(attribution.containerSrc, 'resources/subframe-with-longtask.html');
spanickera5b95cb2017-03-10 22:42:5547 observer.disconnect();
48 t.done();
49 })
50 );
npm@chromium.org71ff8882017-08-15 17:22:0151 observer.observe({entryTypes: ['longtask']});
Nicolas Pena930d2ef2018-07-16 20:18:1352 window.onload = () => {
53 const iframe = document.createElement('iframe');
54 iframe.id = 'child-iframe-id';
55 iframe.name = 'child-iframe-name';
56 document.body.appendChild(iframe);
57 iframe.src = 'resources/subframe-with-longtask.html';
58 };
npm@chromium.org71ff8882017-08-15 17:22:0159}, 'Performance longtask entries in child iframe are observable in parent.');
spanickera5b95cb2017-03-10 22:42:5560</script>
61
npm@chromium.org71ff8882017-08-15 17:22:0162</body>