blob: 0bb9898a6446c2b8d1e1673d4bdc5b21db1f1a81 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Resource Timing - Entries per Frame</title>
<link rel="help" href="https://w3c.github.io/resource-timing/#processing-model">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/rt-utilities.sub.js"></script>
</head>
<body>
<h1>Resource Timing: Entries per Frame</h1>
<div id="log"></div>
<iframe id="iframe1" src="resources/rt-iframe-1.html"></iframe>
<iframe id="iframe2" src="resources/rt-iframe-2.html"></iframe>
<script>
setup({explicit_done: true});
window.addEventListener("load", function() {
let mainFrameWindow = window;
let iframe1Window = document.getElementById("iframe1").contentWindow;
let iframe2Window = document.getElementById("iframe2").contentWindow;
let promises = [];
mainFrameWindow.performance.clearResourceTimings();
promises.push(mainFrameWindow.loadResources(3));
wait(); // Ensure a DOMHighResTimeStamp change.
iframe1Window.performance.clearResourceTimings();
promises.push(iframe1Window.loadResources(2));
wait(); // Ensure a DOMHighResTimeStamp change.
iframe2Window.performance.clearResourceTimings();
promises.push(iframe2Window.loadResources(15));
Promise.all(promises).then(function() {
let mainFrameEntries = mainFrameWindow.performance.getEntriesByType("resource");
let iframe1Entries = iframe1Window.performance.getEntriesByType("resource");
let iframe2Entries = iframe2Window.performance.getEntriesByType("resource");
function checkContainsURL(url, list) {
for (let entry of list) {
if (entry.name === url)
return true;
}
return false;
}
function assertDisjointEntries(list, otherList1, otherList2) {
for (let entry of list) {
assert_false(checkContainsURL(entry.name, otherList1), "a resource that should have been unique was not unique across contexts");
assert_false(checkContainsURL(entry.name, otherList2), "a resource that should have been unique was not unique across contexts");
}
}
test(function(t) {
assert_equals(mainFrameEntries.length, 3, "window should have 3 resource entries");
assertDisjointEntries(mainFrameEntries, iframe1Entries, iframe2Entries);
}, "main frame resources differ from other frames");
test(function(t) {
assert_equals(iframe1Entries.length, 2, "iframe1 should have 2 resource entries");
assertDisjointEntries(iframe1Entries, mainFrameEntries, iframe2Entries);
}, "iframe1 resources differ from other frames");
test(function(t) {
assert_equals(iframe2Entries.length, 15, "iframe2 should have 15 resource entries");
assertDisjointEntries(iframe2Entries, iframe1Entries, mainFrameEntries);
}, "iframe2 resources differ from other frames");
done();
});
});
</script>
</body>
</html>