<!DOCTYPE html>
<meta charset="utf-8">
<title>Window extends EventTarget</title>
<link rel="help" href="https://github.com/jsdom/jsdom/issues/2830">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<body>
<script>
"use strict";

test(() => {

  assert_equals(window.addEventListener, EventTarget.prototype.addEventListener);
  assert_equals(window.removeEventListener, EventTarget.prototype.removeEventListener);
  assert_equals(window.dispatchEvent, EventTarget.prototype.dispatchEvent);

}, "EventTarget methods on Window instances are inherited from the EventTarget prototype");

test(() => {

  const kCustom = "custom-event";
  const customEvent = new CustomEvent(kCustom, {
    bubbles: true
  });

  let target;
  window.addEventListener.call(document.body, kCustom, function () {
    target = this;
  });

  document.body.dispatchEvent(customEvent);

  assert_equals(target, document.body);

}, "window.addEventListener respects custom `this`");

test(() => {

  const kCustom = "custom-event";
  const customEvent = new CustomEvent(kCustom, {
    bubbles: true
  });

  let target;
  window.addEventListener.call(null, kCustom, function () {
    target = this;
  });

  document.body.dispatchEvent(customEvent);

  assert_equals(target, window);

}, "window.addEventListener treats nullish `this` as `window`");
</script>
