From 7ba4a43adf554c3c92ff74ae960466dca76066a1 Mon Sep 17 00:00:00 2001 From: Kk Shinkai Date: Wed, 2 Oct 2024 01:40:10 +0800 Subject: [PATCH 1/2] Correctly trigger the `onDidAddListener` event in emitter options --- src/vs/base/common/event.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vs/base/common/event.ts b/src/vs/base/common/event.ts index 33c834929c02..f369e8adccbb 100644 --- a/src/vs/base/common/event.ts +++ b/src/vs/base/common/event.ts @@ -1155,6 +1155,7 @@ export class Emitter { } else { this._listeners.push(contained); } + this._options?.onDidAddListener?.(this); this._size++; From 2e48a0fe05e3a8970750e8ac67f9e57ad1b86311 Mon Sep 17 00:00:00 2001 From: Kk Shinkai Date: Thu, 3 Oct 2024 14:20:35 +0800 Subject: [PATCH 2/2] Add test for `Emitter.onDidAddListener` --- src/vs/base/test/common/event.test.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/vs/base/test/common/event.test.ts b/src/vs/base/test/common/event.test.ts index 9f08b1441338..476f0ca375c4 100644 --- a/src/vs/base/test/common/event.test.ts +++ b/src/vs/base/test/common/event.test.ts @@ -308,6 +308,27 @@ suite('Event', function () { assert.strictEqual(lastCount, 1); }); + test('onDidAddListener', () => { + let count = 0; + const a = ds.add(new Emitter({ + onDidAddListener() { count += 1; } + })); + + assert.strictEqual(count, 0); + + let subscription = ds.add(a.event(function () { })); + assert.strictEqual(count, 1); + + subscription.dispose(); + assert.strictEqual(count, 1); + + subscription = ds.add(a.event(function () { })); + assert.strictEqual(count, 2); + + subscription.dispose(); + assert.strictEqual(count, 2); + }); + test('onWillRemoveListener', () => { let count = 0; const a = ds.add(new Emitter({