blob: b1f837cd4b26514597e918b997e7eb14496aa90f [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Resource Timing - Serialization</title>
<link rel="help" href="http://yoavweiss.github.io/resource-timing/#performanceresourcetiming">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/rt-utilities.sub.js"></script>
</head>
<body>
<h1>Resource Timing: Serialization</h1>
<div id="log"></div>
<script>
test(function(t) {
assert_true(typeof PerformanceResourceTiming.prototype.toJSON === "function", "PerformanceResourceTiming has toJSON serializer");
let entries = performance.getEntriesByType("resource");
let serializedEntries = JSON.parse(JSON.stringify(entries));
assert_true(serializedEntries instanceof Array, "JSON.stringify and JSON.parse should have produced an object");
assert_greater_than_equal(serializedEntries.length, 2, "serialization should have serialized all entries");
let entry = entries[0];
let serializedEntry = serializedEntries[0];
let properties = new Map([
["name", "string"],
["entryType", "string"],
["startTime", "number"],
["duration", "number"],
["initiatorType", "string"],
["nextHopProtocol", "string"],
["workerStart", "number"],
["redirectStart", "number"],
["redirectEnd", "number"],
["fetchStart", "number"],
["domainLookupStart", "number"],
["domainLookupEnd", "number"],
["connectStart", "number"],
["connectEnd", "number"],
["secureConnectionStart", "number"],
["requestStart", "number"],
["responseStart", "number"],
["responseEnd", "number"],
["transferSize", "number"],
["encodedBodySize", "number"],
["decodedBodySize", "number"],
]);
let count = 0;
for (let [property, type] of properties) {
if (property in entry) {
assert_true(property in serializedEntry, `readonly property '${property}' should have been serialized`);
assert_equals(typeof serializedEntry[property], type, `property '${property}' had unexpected serialized type`);
count++;
}
}
assert_true(count >= 7, "more properties should have been serialized");
});
</script>
</body>
</html>