71 lines
2.1 KiB
HTML
71 lines
2.1 KiB
HTML
<!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',
|
|
'renderBlockingStatus',
|
|
'responseStatus',
|
|
'contentType',
|
|
];
|
|
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>
|