summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/element-timing/redirects-tao-star.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/element-timing/redirects-tao-star.html')
-rw-r--r--testing/web-platform/tests/element-timing/redirects-tao-star.html53
1 files changed, 53 insertions, 0 deletions
diff --git a/testing/web-platform/tests/element-timing/redirects-tao-star.html b/testing/web-platform/tests/element-timing/redirects-tao-star.html
new file mode 100644
index 0000000000..e5067d3d6b
--- /dev/null
+++ b/testing/web-platform/tests/element-timing/redirects-tao-star.html
@@ -0,0 +1,53 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta charset="utf-8" />
+<title>This test validates element timing information for cross-origin redirect chain images.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/element-timing-helpers.js"></script>
+<script src=/common/get-host-info.sub.js></script>
+</head>
+<body>
+<script>
+async_test(t => {
+ assert_implements(window.PerformanceElementTiming, "PerformanceElementTiming is not implemented");
+ let destUrl = get_host_info().HTTP_REMOTE_ORIGIN
+ + '/resource-timing/resources/multi_redirect.py?';
+ destUrl += 'page_origin=' + get_host_info().HTTP_ORIGIN;
+ destUrl += '&cross_origin=' + get_host_info().HTTP_REMOTE_ORIGIN;
+ destUrl += '&final_resource=' + '/element-timing/resources/circle-tao.svg';
+ destUrl += '&timing_allow=1';
+ destUrl += '&tao_steps=';
+ for (let taoSteps=0; taoSteps < 4; taoSteps++) {
+ const image = document.createElement('img');
+ image.src = destUrl + taoSteps;
+ image.setAttribute('elementtiming', taoSteps);
+ image.setAttribute('id', 'id' + taoSteps)
+ document.body.appendChild(image);
+ }
+ let numObserved = 0;
+ let observedMap = [false, false, false, false];
+ const beforeRender = performance.now();
+ new PerformanceObserver(t.step_func(entries => {
+ entries.getEntries().forEach(entry => {
+ const taoSteps = entry.identifier;
+ assert_false(observedMap[taoSteps], 'Should observe each image once');
+ observedMap[taoSteps] = true;
+ if (taoSteps !== '3') {
+ assert_equals(entry.renderTime, 0,
+ 'renderTime should be 0 when there is ' + taoSteps + ' tao steps');
+ }
+ const bound = taoSteps === '3' ? beforeRender : 0;
+ checkElement(entry, destUrl + taoSteps, taoSteps, 'id' + taoSteps, bound,
+ document.getElementById(taoSteps));
+ });
+ numObserved += entries.getEntries().length;
+ if (numObserved === 4)
+ t.done();
+ })).observe({type: 'element', buffered: true});
+}, 'Cross-origin image without TAO should not have its renderTime set, with full TAO it should.');
+</script>
+</body>
+</html>
+