11cb0ef41Sopenharmony_ci<!doctype html> 21cb0ef41Sopenharmony_ci<html> 31cb0ef41Sopenharmony_ci<head> 41cb0ef41Sopenharmony_ci<script src="/resources/testharness.js"></script> 51cb0ef41Sopenharmony_ci<script src="/resources/testharnessreport.js"></script> 61cb0ef41Sopenharmony_ci</head> 71cb0ef41Sopenharmony_ci<body> 81cb0ef41Sopenharmony_ci<script> 91cb0ef41Sopenharmony_ci 101cb0ef41Sopenharmony_citest(() => { 111cb0ef41Sopenharmony_ci // Check Performance attributes. 121cb0ef41Sopenharmony_ci assert_equals(typeof(performance.toJSON), 'function'); 131cb0ef41Sopenharmony_ci const json = performance.toJSON(); 141cb0ef41Sopenharmony_ci assert_equals(typeof(json), 'object'); 151cb0ef41Sopenharmony_ci assert_equals(json.timeOrigin, performance.timeOrigin, 161cb0ef41Sopenharmony_ci 'performance.toJSON().timeOrigin should match performance.timeOrigin'); 171cb0ef41Sopenharmony_ci 181cb0ef41Sopenharmony_ci // Check PerformanceTiming toJSON. 191cb0ef41Sopenharmony_ci const jsonTiming = json.timing; 201cb0ef41Sopenharmony_ci const timing = performance.timing; 211cb0ef41Sopenharmony_ci assert_equals(typeof(timing.toJSON), 'function'); 221cb0ef41Sopenharmony_ci const timingJSON = timing.toJSON(); 231cb0ef41Sopenharmony_ci assert_equals(typeof(timingJSON), 'object'); 241cb0ef41Sopenharmony_ci // Check PerformanceTiming attributes, from both: 251cb0ef41Sopenharmony_ci // 1) |jsonTiming| from Performance. 261cb0ef41Sopenharmony_ci // 2) |timingJSON| from PerformanceTiming. 271cb0ef41Sopenharmony_ci const performanceTimingKeys = [ 281cb0ef41Sopenharmony_ci 'navigationStart', 291cb0ef41Sopenharmony_ci 'unloadEventStart', 301cb0ef41Sopenharmony_ci 'unloadEventEnd', 311cb0ef41Sopenharmony_ci 'redirectStart', 321cb0ef41Sopenharmony_ci 'redirectEnd', 331cb0ef41Sopenharmony_ci 'fetchStart', 341cb0ef41Sopenharmony_ci 'domainLookupStart', 351cb0ef41Sopenharmony_ci 'domainLookupEnd', 361cb0ef41Sopenharmony_ci 'connectStart', 371cb0ef41Sopenharmony_ci 'connectEnd', 381cb0ef41Sopenharmony_ci 'secureConnectionStart', 391cb0ef41Sopenharmony_ci 'requestStart', 401cb0ef41Sopenharmony_ci 'responseStart', 411cb0ef41Sopenharmony_ci 'responseEnd', 421cb0ef41Sopenharmony_ci 'domLoading', 431cb0ef41Sopenharmony_ci 'domInteractive', 441cb0ef41Sopenharmony_ci 'domContentLoadedEventStart', 451cb0ef41Sopenharmony_ci 'domContentLoadedEventEnd', 461cb0ef41Sopenharmony_ci 'domComplete', 471cb0ef41Sopenharmony_ci 'loadEventStart', 481cb0ef41Sopenharmony_ci 'loadEventEnd' 491cb0ef41Sopenharmony_ci ]; 501cb0ef41Sopenharmony_ci for (const key of performanceTimingKeys) { 511cb0ef41Sopenharmony_ci assert_equals(jsonTiming[key], timing[key], 521cb0ef41Sopenharmony_ci `performance.toJSON().timing.${key} should match performance.timing.${key}`); 531cb0ef41Sopenharmony_ci assert_equals(timingJSON[key], timing[key], 541cb0ef41Sopenharmony_ci `performance.timing.toJSON().${key} should match performance.timing.${key}`); 551cb0ef41Sopenharmony_ci } 561cb0ef41Sopenharmony_ci 571cb0ef41Sopenharmony_ci // Check PerformanceNavigation toJSON. 581cb0ef41Sopenharmony_ci const jsonNavigation = json.navigation; 591cb0ef41Sopenharmony_ci const navigation = performance.navigation; 601cb0ef41Sopenharmony_ci assert_equals(typeof(navigation.toJSON), 'function'); 611cb0ef41Sopenharmony_ci const navigationJSON = navigation.toJSON(); 621cb0ef41Sopenharmony_ci assert_equals(typeof(navigationJSON), 'object'); 631cb0ef41Sopenharmony_ci // Check PerformanceNavigation attributes, from both: 641cb0ef41Sopenharmony_ci // 1) |jsonNavigation| from Performance. 651cb0ef41Sopenharmony_ci // 2) |navigationJSON| from PerformanceNavigation. 661cb0ef41Sopenharmony_ci let performanceNavigationKeys = ['type', 'redirectCount']; 671cb0ef41Sopenharmony_ci for (const key of performanceNavigationKeys) { 681cb0ef41Sopenharmony_ci assert_equals(jsonNavigation[key], navigation[key], 691cb0ef41Sopenharmony_ci `performance.toJSON().navigation.${key} should match performance.navigation.${key}`); 701cb0ef41Sopenharmony_ci assert_equals(navigationJSON[key], navigation[key], 711cb0ef41Sopenharmony_ci `performance.navigation.toJSON().${key} should match performance.navigation.${key}`); 721cb0ef41Sopenharmony_ci } 731cb0ef41Sopenharmony_ci}, 'Test performance.toJSON()'); 741cb0ef41Sopenharmony_ci</script> 751cb0ef41Sopenharmony_ci</body> 761cb0ef41Sopenharmony_ci</html>