| <!doctype html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>This test validates that PerformanceResourceTiming's toJSON method | |
| contains all of the entry's attributes.</title> | |
| <link rel="author" title="Google" href="http://www.google.com/" /> | |
| <link rel="help" | |
| href="https://www.w3.org/TR/resource-timing-2/#dom-performanceresourcetiming-tojson"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| </head> | |
| <body> | |
| <script> | |
| promise_test(() => { | |
| return new Promise((resolve, reject) => { | |
| const po = new PerformanceObserver(list => { | |
| const entries = list.getEntries(); | |
| if (entries.length < 1) { | |
| throw new Error(`No entries to run the test with.`); | |
| } | |
| assert_greater_than_equal(entries.length, 1); | |
| const entry = entries[0]; | |
| assert_equals(typeof(entry.toJSON), 'function'); | |
| const json = entry.toJSON(); | |
| assert_equals(typeof(json), 'object'); | |
| const performanceResourceTimingKeys = [ | |
| 'name', | |
| 'entryType', | |
| 'startTime', | |
| 'duration', | |
| 'initiatorType', | |
| 'nextHopProtocol', | |
| 'workerStart', | |
| 'redirectStart', | |
| 'redirectEnd', | |
| 'fetchStart', | |
| 'domainLookupStart', | |
| 'domainLookupEnd', | |
| 'connectStart', | |
| 'connectEnd', | |
| 'secureConnectionStart', | |
| 'requestStart', | |
| 'responseStart', | |
| 'responseEnd', | |
| 'transferSize', | |
| 'encodedBodySize', | |
| 'decodedBodySize' | |
| ]; | |
| for (const key of performanceResourceTimingKeys) { | |
| try { | |
| assert_false(json[key] === undefined, | |
| `entry.toJSON().${key} is undefined`); | |
| assert_equals(json[key], entry[key], | |
| `entry.toJSON().${key} should match entry.${key}`); | |
| } catch(e) { | |
| reject(e); | |
| } | |
| } | |
| resolve(); | |
| }); | |
| po.observe({type: "resource", buffered: true}); | |
| }); | |
| }, 'Test toJSON() in PerformanceResourceTiming'); | |
| </script> | |
| </body> | |
| </html> |