summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/tests/unit/event_target_test.ts20
-rw-r--r--op_crates/web/01_event.js1
2 files changed, 21 insertions, 0 deletions
diff --git a/cli/tests/unit/event_target_test.ts b/cli/tests/unit/event_target_test.ts
index 10293a0e9..34271b470 100644
--- a/cli/tests/unit/event_target_test.ts
+++ b/cli/tests/unit/event_target_test.ts
@@ -223,3 +223,23 @@ unitTest(
assertEquals(callCount, 2);
},
);
+unitTest(function eventTargetDispatchShouldSetTargetNoListener(): void {
+ const target = new EventTarget();
+ const event = new Event("foo");
+ assertEquals(event.target, null);
+ target.dispatchEvent(event);
+ assertEquals(event.target, target);
+});
+
+unitTest(function eventTargetDispatchShouldSetTargetInListener(): void {
+ const target = new EventTarget();
+ const event = new Event("foo");
+ assertEquals(event.target, null);
+ let called = false;
+ target.addEventListener("foo", (e) => {
+ assertEquals(e.target, target);
+ called = true;
+ });
+ target.dispatchEvent(event);
+ assertEquals(called, true);
+});
diff --git a/op_crates/web/01_event.js b/op_crates/web/01_event.js
index 9067361fd..8a4e79059 100644
--- a/op_crates/web/01_event.js
+++ b/op_crates/web/01_event.js
@@ -936,6 +936,7 @@
const listeners = eventTargetData.get(self).listeners;
if (!(event.type in listeners)) {
+ setTarget(event, this);
return true;
}