| <!doctype html> |
| <html> |
| <head> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <script> |
| |
| test(() => { |
| // Check Performance attributes. |
| assert_equals(typeof(performance.toJSON), 'function'); |
| const json = performance.toJSON(); |
| assert_equals(typeof(json), 'object'); |
| assert_equals(json.timeOrigin, performance.timeOrigin, |
| 'performance.toJSON().timeOrigin should match performance.timeOrigin'); |
| |
| // Check PerformanceTiming toJSON. |
| const jsonTiming = json.timing; |
| const timing = performance.timing; |
| assert_equals(typeof(timing.toJSON), 'function'); |
| const timingJSON = timing.toJSON(); |
| assert_equals(typeof(timingJSON), 'object'); |
| // Check PerformanceTiming attributes, from both: |
| // 1) |jsonTiming| from Performance. |
| // 2) |timingJSON| from PerformanceTiming. |
| const performanceTimingKeys = [ |
| 'navigationStart', |
| 'unloadEventStart', |
| 'unloadEventEnd', |
| 'redirectStart', |
| 'redirectEnd', |
| 'fetchStart', |
| 'domainLookupStart', |
| 'domainLookupEnd', |
| 'connectStart', |
| 'connectEnd', |
| 'secureConnectionStart', |
| 'requestStart', |
| 'responseStart', |
| 'responseEnd', |
| 'domLoading', |
| 'domInteractive', |
| 'domContentLoadedEventStart', |
| 'domContentLoadedEventEnd', |
| 'domComplete', |
| 'loadEventStart', |
| 'loadEventEnd' |
| ]; |
| for (const key of performanceTimingKeys) { |
| assert_equals(jsonTiming[key], timing[key], |
| `performance.toJSON().timing.${key} should match performance.timing.${key}`); |
| assert_equals(timingJSON[key], timing[key], |
| `performance.timing.toJSON().${key} should match performance.timing.${key}`); |
| } |
| |
| // Check PerformanceNavigation toJSON. |
| const jsonNavigation = json.navigation; |
| const navigation = performance.navigation; |
| assert_equals(typeof(navigation.toJSON), 'function'); |
| const navigationJSON = navigation.toJSON(); |
| assert_equals(typeof(navigationJSON), 'object'); |
| // Check PerformanceNavigation attributes, from both: |
| // 1) |jsonNavigation| from Performance. |
| // 2) |navigationJSON| from PerformanceNavigation. |
| let performanceNavigationKeys = ['type', 'redirectCount']; |
| for (const key of performanceNavigationKeys) { |
| assert_equals(jsonNavigation[key], navigation[key], |
| `performance.toJSON().navigation.${key} should match performance.navigation.${key}`); |
| assert_equals(navigationJSON[key], navigation[key], |
| `performance.navigation.toJSON().${key} should match performance.navigation.${key}`); |
| } |
| }, 'Test performance.toJSON()'); |
| </script> |
| </body> |
| </html> |