diff options
-rw-r--r-- | cli/tests/unit/event_target_test.ts | 20 | ||||
-rw-r--r-- | op_crates/web/01_event.js | 1 |
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; } |