<!DOCTYPE html>
<html>
<head>
  <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/utils.js"></script>
</head>
<body>
  <h1>Test for click activation trigger</h1>
  <p>Tests user activation from a mouse click.</p>
  <ol id="instructions">
    <li>Click anywhere in the document.
  </ol>
  <script>
    promise_test(async () => {
        test_driver.click(document.body);

        let mousedown_event = getEvent('mousedown');
        let mouseup_event = getEvent('mouseup');
        let click_event = getEvent('click');

        await mousedown_event;
        let consumed = await consumeTransientActivation();
        assert_true(consumed,
                    "mousedown event should result in activation");

        await mouseup_event;
        consumed = await consumeTransientActivation();
        assert_false(consumed,
                     "mouseup should have no activation after mousedown consumption");

        await click_event;
        consumed = await consumeTransientActivation();
        assert_false(consumed,
                     "click should have no activation after mousedown consumption");
    }, "Activation through left-click mouse event");
  </script>
</body>
</html>
