summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/element-timing/image-TAO.sub.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/element-timing/image-TAO.sub.html
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/element-timing/image-TAO.sub.html')
-rw-r--r--testing/web-platform/tests/element-timing/image-TAO.sub.html54
1 files changed, 54 insertions, 0 deletions
diff --git a/testing/web-platform/tests/element-timing/image-TAO.sub.html b/testing/web-platform/tests/element-timing/image-TAO.sub.html
new file mode 100644
index 0000000000..7b455dfa4c
--- /dev/null
+++ b/testing/web-platform/tests/element-timing/image-TAO.sub.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML>
+<meta charset=utf-8>
+<title>Element Timing: observe cross origin images with various Timing-Allow-Origin headers</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/element-timing-helpers.js"></script>
+<script>
+ async_test(t => {
+ assert_implements(window.PerformanceElementTiming, "PerformanceElementTiming is not implemented");
+ const beforeRender = performance.now();
+ const remote_img = 'http://{{domains[www]}}:{{ports[http][1]}}/element-timing/resources/TAOImage.py?'
+ + 'origin=' + window.location.origin +'&tao=';
+ const valid_tao = ['wildcard', 'origin', 'multi', 'multi_wildcard', 'match_origin', 'match_wildcard'];
+ function addImage(tao) {
+ const img = document.createElement('img');
+ img.src = remote_img + tao;
+ img.setAttribute('elementtiming', tao);
+ img.id = 'id_' + tao;
+ document.body.appendChild(img);
+ }
+ valid_tao.forEach(tao => {
+ addImage(tao);
+ });
+ const invalid_tao = ['null', 'space', 'uppercase'];
+ invalid_tao.forEach(tao => {
+ addImage(tao);
+ });
+ let img_count = 0;
+ const total_images = valid_tao.length + invalid_tao.length;
+ new PerformanceObserver(
+ t.step_func(entryList => {
+ entryList.getEntries().forEach(entry => {
+ img_count++;
+ const tao = entry.identifier;
+ const img = document.getElementById('id_' + tao);
+ if (valid_tao.includes(tao)) {
+ checkElement(entry, remote_img + tao, tao, 'id_' + tao, beforeRender, img);
+ } else if (invalid_tao.includes(tao)) {
+ assert_equals(entry.renderTime, 0, 'Entry with tao=' + tao + ' must have a renderTime of 0');
+ checkElement(entry, remote_img + tao, tao, 'id_' + tao, 0, img);
+ }
+ else {
+ assert_unreached('Should be in one of valid_tao OR invalid_tao');
+ }
+ checkNaturalSize(entry, 100, 100);
+ if (img_count == total_images)
+ t.done();
+ });
+ })
+ ).observe({type: 'element', buffered: true});
+ }, 'Cross-origin elements with valid TAO have correct renderTime, with invalid TAO have renderTime set to 0.');
+</script>
+</body>