<!DOCTYPE HTML>
<meta charset=utf-8>
<title>User Timing: L2 vs L3 feature detection</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
  test(() => {
    // Feature detection for PerformanceMark.
    assert_equals(typeof(PerformanceMark.prototype), "object");
    // Test for UserTiming L3.
    if (PerformanceMark.prototype.hasOwnProperty('detail')) {
      assert_equals(typeof(performance.mark("mark")), "object",
        "performance.mark should return an object in UserTiming L3.");
    }
    // Test for UserTiming L2.
    else {
      assert_equals(typeof(performance.mark("mark")), "undefined",
        "performance.mark should be void in UserTiming L2.");
    }
  }, "Test PerformanceMark existence and feature detection");

  test(() => {
    // Feature detection for PerformanceMeasure.
    assert_equals(typeof(PerformanceMeasure.prototype), "object");
    // Test for UserTiming L3.
    if (PerformanceMeasure.prototype.hasOwnProperty('detail')) {
      assert_equals(typeof(performance.measure("measure")), "object",
        "performance.measure should return an object in UserTiming L3.");
    }
    // Test for UserTiming L2.
    else {
      assert_equals(typeof(performance.measure("measure")), "undefined",
        "performance.measure should be void in UserTiming L2.");
    }
  }, "Test PerformanceMeasure existence and feature detection");
</script>
