| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8" /> |
| <title>Navigation Timing 2 WPT</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| setup({ single_test: true }); |
| var reload_frame; |
| |
| // Array of navigation timing entries dependent on Document Load Timing. |
| var navTimingAttributes = [ |
| 'fetchStart', |
| 'loadEventEnd', |
| 'loadEventStart', |
| 'redirectCount', |
| 'redirectEnd', |
| 'redirectStart', |
| 'responseEnd', |
| 'unloadEventEnd', |
| 'unloadEventStart', |
| ]; |
| |
| // Function to run the test when the page loads. |
| function onload_test() { |
| reload_frame = document.getElementById("frameContext"); |
| reload_frame.onload = function() { |
| step_timeout(do_test, 0); |
| } |
| step_timeout(reload_the_frame, 0); |
| } |
| |
| /* |
| Function to reload the iframe and observe values for navigation timing entries: |
| redirectStart, redirectEnd and redirectCount dependent on Document Load Timing. |
| */ |
| function reload_the_frame() { |
| reload_frame.contentWindow.location.href = |
| "/common/redirect.py?location=/navigation-timing/resources/blank-page-green.html"; |
| } |
| |
| /* |
| Function to obtain navigation timing entries and, |
| check if the values are greater than 0. |
| */ |
| function do_test() { |
| var nav_frame = document.getElementById("frameContext").contentWindow; |
| var pnt1 = nav_frame.performance.getEntriesByType("navigation")[0]; |
| for (i in navTimingAttributes) { |
| assert_greater_than(pnt1[navTimingAttributes[i]], 0, |
| `Expected navigation timing entries: ${navTimingAttributes[i]} greater than 0`); |
| } |
| step_timeout(remove, 0); |
| done(); // Avoids scripting errors |
| } |
| |
| /* |
| Function to remove the iframe from the parent body and, |
| check if the navigation timing entries of detached iframe are 0. |
| */ |
| function remove() { |
| var nav_frame = document.getElementById("frameContext").contentWindow; |
| var pnt1 = nav_frame.performance.getEntriesByType("navigation")[0]; |
| document.body.removeChild(document.getElementById("frameContext")); |
| for (i in navTimingAttributes) { |
| assert_equals(pnt1[navTimingAttributes[i]], 0, |
| `${navTimingAttributes[i]} dependent on Document Load Timing: returns 0`); |
| } |
| } |
| </script> |
| </head> |
| <body onload="onload_test();"> |
| <h1>Description</h1> |
| <p>This test observes values of navigation timing entries,</p> |
| <p>dependent on Document Load Timing for a detached iframe.</p> |
| <br /> |
| <p>This page should be loaded with a green background frame below,</p> |
| <p>which disappears after the iframe is detached.</p> |
| <br /> |
| <iframe id="frameContext" |
| src="/navigation-timing/resources/blank-page-green.html" |
| style="width: 250px; height: 250px;"></iframe> |
| </body> |
| </html> |