summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/dom/events/EventTarget-constructible.any.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/dom/events/EventTarget-constructible.any.js')
-rw-r--r--testing/web-platform/tests/dom/events/EventTarget-constructible.any.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/testing/web-platform/tests/dom/events/EventTarget-constructible.any.js b/testing/web-platform/tests/dom/events/EventTarget-constructible.any.js
new file mode 100644
index 0000000000..b0e7614e62
--- /dev/null
+++ b/testing/web-platform/tests/dom/events/EventTarget-constructible.any.js
@@ -0,0 +1,62 @@
+"use strict";
+
+test(() => {
+ const target = new EventTarget();
+ const event = new Event("foo", { bubbles: true, cancelable: false });
+ let callCount = 0;
+
+ function listener(e) {
+ assert_equals(e, event);
+ ++callCount;
+ }
+
+ target.addEventListener("foo", listener);
+
+ target.dispatchEvent(event);
+ assert_equals(callCount, 1);
+
+ target.dispatchEvent(event);
+ assert_equals(callCount, 2);
+
+ target.removeEventListener("foo", listener);
+ target.dispatchEvent(event);
+ assert_equals(callCount, 2);
+}, "A constructed EventTarget can be used as expected");
+
+test(() => {
+ class NicerEventTarget extends EventTarget {
+ on(...args) {
+ this.addEventListener(...args);
+ }
+
+ off(...args) {
+ this.removeEventListener(...args);
+ }
+
+ dispatch(type, detail) {
+ this.dispatchEvent(new CustomEvent(type, { detail }));
+ }
+ }
+
+ const target = new NicerEventTarget();
+ const event = new Event("foo", { bubbles: true, cancelable: false });
+ const detail = "some data";
+ let callCount = 0;
+
+ function listener(e) {
+ assert_equals(e.detail, detail);
+ ++callCount;
+ }
+
+ target.on("foo", listener);
+
+ target.dispatch("foo", detail);
+ assert_equals(callCount, 1);
+
+ target.dispatch("foo", detail);
+ assert_equals(callCount, 2);
+
+ target.off("foo", listener);
+ target.dispatch("foo", detail);
+ assert_equals(callCount, 2);
+}, "EventTarget can be subclassed");