1<!doctype html>
2<html>
3<head>
4<script src="/resources/testharness.js"></script>
5<script src="/resources/testharnessreport.js"></script>
6</head>
7<body>
8<script>
9const keys = [
10  'name',
11  'entryType',
12  'startTime',
13  'duration',
14];
15test(() => {
16  performance.mark('a');
17  const markEntries = performance.getEntriesByType('mark');
18  assert_equals(1, markEntries.length);
19  const markEntry = markEntries[0];
20  assert_equals(markEntry.entryType, 'mark');
21  assert_equals(typeof(markEntry.toJSON), 'function');
22  const markJSON = markEntry.toJSON();
23  assert_equals(typeof(markJSON), 'object');
24  for (const key of keys) {
25    assert_equals(markJSON[key], markEntry[key], `PerformanceMark ${key} entry does not match its toJSON value`);
26  }
27}, 'Test toJSON() in PerformanceMark');
28
29test(() => {
30  performance.measure('m');
31  const measureEntries = performance.getEntriesByType('measure');
32  assert_equals(1, measureEntries.length);
33  const measureEntry = measureEntries[0];
34  assert_equals(measureEntry.entryType, 'measure');
35  assert_equals(typeof(measureEntry.toJSON), 'function');
36  const measureJSON = measureEntry.toJSON();
37  assert_equals(typeof(measureJSON), 'object');
38  for (const key of keys) {
39    assert_equals(measureJSON[key], measureEntry[key], `PerformanceMeasure ${key} entry does not match its toJSON value`);
40  }
41}, 'Test toJSON() in PerformanceMeasure');
42</script>
43</body>
44</html>
45