diff options
Diffstat (limited to 'testing/web-platform/tests/web-bundle/subresource-loading/resource-timing-attributes-consistent.https.tentative.sub.html')
-rw-r--r-- | testing/web-platform/tests/web-bundle/subresource-loading/resource-timing-attributes-consistent.https.tentative.sub.html | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/testing/web-platform/tests/web-bundle/subresource-loading/resource-timing-attributes-consistent.https.tentative.sub.html b/testing/web-platform/tests/web-bundle/subresource-loading/resource-timing-attributes-consistent.https.tentative.sub.html new file mode 100644 index 0000000000..3231d69ae9 --- /dev/null +++ b/testing/web-platform/tests/web-bundle/subresource-loading/resource-timing-attributes-consistent.https.tentative.sub.html @@ -0,0 +1,88 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title> + Resource timing attributes are consistent for the same-origin subresources. +</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../resources/test-helpers.js"></script> +<body> + <script> + setup(() => { + assert_true(HTMLScriptElement.supports("webbundle")); + }); + + promise_test(async (t) => { + const bundle_url = + "https://{{domains[]}}:{{ports[https][0]}}/web-bundle/resources/wbn/dynamic1.wbn?pipe=trickle(d0.5)"; + const script_url = + "https://{{domains[]}}:{{ports[https][0]}}/web-bundle/resources/wbn/dynamic/resource1.js"; + const element = createWebBundleElement( + "../resources/wbn/dynamic1.wbn?pipe=trickle(d0.5)", + /*resources=*/ [script_url] + ); + document.body.appendChild(element); + var script_entries = 0; + var web_bundle_entries = 0; + var web_bundle_entry, script_entry; + const promise = new Promise((resolve) => { + new PerformanceObserver( + t.step_func((entryList) => { + var entries = entryList.getEntriesByType("resource"); + for (var i = 0; i < entries.length; ++i) { + if (entries[i].name === script_url) { + script_entry = entries[i]; + script_entries++; + } + + if (entries[i].name === bundle_url) { + web_bundle_entry = entries[i]; + web_bundle_entries++; + } + } + + if (web_bundle_entries > 0 && script_entries > 0) { + // Check timestamps. + assert_greater_than_equal( + script_entry.responseStart, + script_entry.requestStart + 500 + ); + assert_greater_than_equal( + script_entry.responseStart, + web_bundle_entry.responseStart + ); + assert_greater_than_equal( + script_entry.responseEnd, + script_entry.responseStart + ); + assert_greater_than_equal( + script_entry.requestStart, + script_entry.connectEnd + ); + assert_greater_than_equal( + script_entry.responseEnd, + script_entry.responseStart + ); + // Check sizes. + assert_greater_than(script_entry.encodedBodySize, 0); + assert_equals( + script_entry.transferSize, + script_entry.encodedBodySize + 300 + ); + assert_equals( + script_entry.encodedBodySize, + script_entry.decodedBodySize + ); + resolve(); + } + }) + ).observe({ entryTypes: ["resource"] }); + }); + const script = document.createElement("script"); + script.type = "module"; + script.src = script_url; + document.body.appendChild(script); + return promise; + }, "Timestamp attributes filled in resource timing entries should be consistent."); + </script> +</body> |