<!DOCTYPE html>
<html>
<meta charset=utf-8 />
<title>Event Timing: first-input entry should be buffered even without observer</title>
<button id='button'>Generate a 'click' event</button>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/testdriver.js></script>
<script src=/resources/testdriver-vendor.js></script>

<script src=resources/event-timing-test-utils.js></script>

<script>
  async_test(function(t) {
    assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.');
    function testEntries() {
      // First callback is not ensured to have the entry.
      if (performance.getEntriesByType('first-input').length === 0) {
        t.step_timeout(testEntries, 10);
        return;
      }
      assert_equals(performance.getEntriesByType('first-input').length, 1,
        "There should be a first-input entry in the performance timeline");
      const entry = performance.getEntriesByType('first-input')[0];
      assert_equals(entry.name, 'mousedown');
      assert_equals(entry.entryType, 'first-input');
      assert_greater_than_equal(entry.duration, 104,
        "The first input was a long one.");
      t.done();
    }
    clickAndBlockMain('button').then(wait).then(t.step_func(testEntries));
  },
  "Event Timing: check first-input after onload, observer, click, click."
  );
</script>
</html>
