| <!DOCTYPE html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <body> |
| <script> |
| function numberOfDownloads(url) { |
| let absoluteURL = new URL(url, location.href).href; |
| return performance.getEntriesByName(absoluteURL).length; |
| } |
| |
| function waitForSubFrameLoad() { |
| return new Promise((resolve) => { |
| window.subFrameLoaded = () => { |
| window.subFrameLoaded = null; |
| resolve(); |
| }; |
| }); |
| } |
| |
| function runTest(type) { |
| performance.clearResourceTimings(); |
| let elem = document.createElement(type); |
| if (type === 'object') |
| elem.data = 'resources/self_navigation.html?' + type; |
| else |
| elem.src = 'resources/self_navigation.html?' + type; |
| document.body.appendChild(elem); |
| return waitForSubFrameLoad().then(() => { |
| let resources = performance.getEntriesByType('resource'); |
| assert_equals(numberOfDownloads('resources/self_navigation.html?' + type), 1); |
| assert_equals(numberOfDownloads('resources/notify_parent.html?redirected'), 0); |
| document.body.removeChild(elem); |
| }); |
| } |
| |
| promise_test( |
| () => runTest('iframe'), |
| "Subsequent <iframe> navigations don't appear in the resource-timing buffer."); |
| |
| promise_test( |
| () => runTest('frame'), |
| "Subsequent <frame> navigations don't appear in the resource-timing buffer."); |
| |
| promise_test( |
| () => runTest('embed'), |
| "Subsequent <embed> navigations don't appear in the resource-timing buffer."); |
| |
| promise_test( |
| () => runTest('object'), |
| "Subsequent <object> navigations don't appear in the resource-timing buffer."); |
| |
| </script> |
| </body> |