<!doctype html>
<html>
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
const keys = [
  'name',
  'entryType',
  'startTime',
  'duration',
];
test(() => {
  performance.mark('a');
  const markEntries = performance.getEntriesByType('mark');
  assert_equals(1, markEntries.length);
  const markEntry = markEntries[0];
  assert_equals(markEntry.entryType, 'mark');
  assert_equals(typeof(markEntry.toJSON), 'function');
  const markJSON = markEntry.toJSON();
  assert_equals(typeof(markJSON), 'object');
  for (const key of keys) {
    assert_equals(markJSON[key], markEntry[key], `PerformanceMark ${key} entry does not match its toJSON value`);
  }
}, 'Test toJSON() in PerformanceMark');

test(() => {
  performance.measure('m');
  const measureEntries = performance.getEntriesByType('measure');
  assert_equals(1, measureEntries.length);
  const measureEntry = measureEntries[0];
  assert_equals(measureEntry.entryType, 'measure');
  assert_equals(typeof(measureEntry.toJSON), 'function');
  const measureJSON = measureEntry.toJSON();
  assert_equals(typeof(measureJSON), 'object');
  for (const key of keys) {
    assert_equals(measureJSON[key], measureEntry[key], `PerformanceMeasure ${key} entry does not match its toJSON value`);
  }
}, 'Test toJSON() in PerformanceMeasure');
</script>
</body>
</html>
