From da4976c291e0e5322b486272a7d9b0f62b7b6dd0 Mon Sep 17 00:00:00 2001 From: Yangjunjie Lin Date: Sat, 29 Aug 2026 23:57:04 +0100 Subject: [PATCH] fix: make ScannerSession disposal terminal --- .../dist/scanner/scanner-session.d.ts.map | 2 +- .../browser/dist/scanner/scanner-session.js | 52 ++++- .../dist/scanner/scanner-session.js.map | 2 +- .../browser/src/scanner/scanner-session.ts | 46 ++++- tests/unit/scanner-lifecycle.test.ts | 184 +++++++++++++++++- 5 files changed, 269 insertions(+), 17 deletions(-) diff --git a/packages/browser/dist/scanner/scanner-session.d.ts.map b/packages/browser/dist/scanner/scanner-session.d.ts.map index 8fb2b78..5224c26 100644 --- a/packages/browser/dist/scanner/scanner-session.d.ts.map +++ b/packages/browser/dist/scanner/scanner-session.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"scanner-session.d.ts","sourceRoot":"","sources":["../../src/scanner/scanner-session.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"scanner-session.d.ts","sourceRoot":"","sources":["../../src/scanner/scanner-session.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/browser/dist/scanner/scanner-session.js b/packages/browser/dist/scanner/scanner-session.js index b74a052..526d706 100644 --- a/packages/browser/dist/scanner/scanner-session.js +++ b/packages/browser/dist/scanner/scanner-session.js @@ -172,6 +172,17 @@ function geometryFor(result, frame) { function isNoResult(outcome) { return !outcome.ok && ["no_symbol_found", "timeout", "cancelled", "unsupported_format"].includes(outcome.error.code); } +const scannerSessionTerminalLifecycles = new WeakMap(); +function terminalLifecycleFor(session) { + const lifecycle = scannerSessionTerminalLifecycles.get(session); + if (!lifecycle) + throw new Error("Scanner session terminal lifecycle is unavailable."); + return lifecycle; +} +function assertScannerSessionNotDisposed(session) { + if (terminalLifecycleFor(session).disposed) + throw new SdkException(sdkError("session_disposed", "Scanner session has been disposed.")); +} export class ScannerSession { state = "idle"; source; @@ -214,6 +225,7 @@ export class ScannerSession { cameraTrackEndings: 0, cameraGenerationInvalidations: 0, }; constructor(options) { + scannerSessionTerminalLifecycles.set(this, { disposed: false, disposePromise: null }); this.source = options.source; this.decoder = options.decoder ?? new BrowserScannerFrameDecoder(options.decoderOptions); this.ownsDecoder = !options.decoder; @@ -239,6 +251,7 @@ export class ScannerSession { } getState() { return this.state; } async start() { + assertScannerSessionNotDisposed(this); if (this.state === "scanning" || this.state === "starting") return; if (this.state === "stopping") @@ -287,6 +300,7 @@ export class ScannerSession { this.setState("scanning"); } async switchSource(source, capabilityController) { + assertScannerSessionNotDisposed(this); const restart = this.state === "scanning" || this.state === "paused" || this.state === "starting"; await this.stop(); // stop() drains the active scheduler task. A decoder may complete after @@ -346,6 +360,7 @@ export class ScannerSession { } } reset() { + assertScannerSessionNotDisposed(this); if (this.state === "scanning" || this.state === "starting" || this.state === "paused") throw new Error("Stop the scanner session before reset()."); this.lifecycleGeneration += 1; @@ -368,8 +383,33 @@ export class ScannerSession { this.counters = { capturedFrames: 0, admittedFrames: 0, droppedFrames: 0, qualityRejectedFrames: 0, periodicProbeFrames: 0, fastAttempts: 0, balancedAttempts: 0, robustAttempts: 0, decodeSuccesses: 0, confirmedEvents: 0, emittedEvents: 0, suppressedRepeats: 0, staleResultsDiscarded: 0, staleEvents: 0, lostEvents: 0, cameraTrackEndings: 0, cameraGenerationInvalidations: 0 }; this.setState("idle"); } - async dispose() { await this.stop(); if (this.ownsDecoder) - await this.decoder.dispose(); this.resultListeners.clear(); this.observationSetListeners.clear(); this.stateListeners.clear(); this.diagnosticListeners.clear(); } + async dispose() { + const lifecycle = terminalLifecycleFor(this); + if (lifecycle.disposePromise) { + await lifecycle.disposePromise; + return; + } + lifecycle.disposed = true; + const operation = (async () => { + try { + await this.stop(); + } + finally { + try { + if (this.ownsDecoder) + await this.decoder.dispose(); + } + finally { + this.resultListeners.clear(); + this.observationSetListeners.clear(); + this.stateListeners.clear(); + this.diagnosticListeners.clear(); + } + } + })(); + lifecycle.disposePromise = operation; + await operation; + } getStatistics() { const scheduler = this.scheduler.getStatistics(); const decoder = this.decoder.getStatistics?.(); @@ -600,7 +640,7 @@ export class ScannerSession { event(type, barcode, frameId, timestamp, observationCount, geometry, physicalInstanceId, suppressionReason) { return { id: `scan-event-${++this.eventSequence}`, type, barcode, frameId, timestamp, observationCount, ...(geometry ? { geometry } : {}), ...(physicalInstanceId ? { physicalInstanceId } : {}), ...(suppressionReason ? { suppressionReason } : {}) }; } - canPublishGeneration(generation) { return generation === this.generation && (this.state === "starting" || this.state === "scanning"); } + canPublishGeneration(generation) { return !terminalLifecycleFor(this).disposed && generation === this.generation && (this.state === "starting" || this.state === "scanning"); } emitObservationSet(set) { if (!this.canPublishGeneration(set.generation)) return; @@ -749,13 +789,15 @@ export class ScannerSession { this.emitDiagnostic({ type: "error", timestamp: Date.now(), error }); } setState(state) { if (this.state === state) - return; this.state = state; for (const listener of this.stateListeners) { + return; this.state = state; if (terminalLifecycleFor(this).disposed) + return; for (const listener of this.stateListeners) { try { listener(state); } catch { /* listener failures do not own session state */ } } } - emitDiagnostic(diagnostic) { for (const listener of this.diagnosticListeners) { + emitDiagnostic(diagnostic) { if (terminalLifecycleFor(this).disposed) + return; for (const listener of this.diagnosticListeners) { try { listener(diagnostic); } diff --git a/packages/browser/dist/scanner/scanner-session.js.map b/packages/browser/dist/scanner/scanner-session.js.map index d279fd0..eb733ef 100644 --- a/packages/browser/dist/scanner/scanner-session.js.map +++ b/packages/browser/dist/scanner/scanner-session.js.map @@ -1 +1 @@ -{"version":3,"file":"scanner-session.js","sourceRoot":"","sources":["../../src/scanner/scanner-session.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"scanner-session.js","sourceRoot":"","sources":["../../src/scanner/scanner-session.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/browser/src/scanner/scanner-session.ts b/packages/browser/src/scanner/scanner-session.ts index 3609c57..10af941 100644 --- a/packages/browser/src/scanner/scanner-session.ts +++ b/packages/browser/src/scanner/scanner-session.ts @@ -251,6 +251,23 @@ function isNoResult(outcome: ScanOutcome): boolean { return !outcome.ok && ["no_symbol_found", "timeout", "cancelled", "unsupported_format"].includes(outcome.error.code); } +interface ScannerSessionTerminalLifecycle { + disposed: boolean; + disposePromise: Promise | null; +} + +const scannerSessionTerminalLifecycles = new WeakMap(); + +function terminalLifecycleFor(session: object): ScannerSessionTerminalLifecycle { + const lifecycle = scannerSessionTerminalLifecycles.get(session); + if (!lifecycle) throw new Error("Scanner session terminal lifecycle is unavailable."); + return lifecycle; +} + +function assertScannerSessionNotDisposed(session: object): void { + if (terminalLifecycleFor(session).disposed) throw new SdkException(sdkError("session_disposed", "Scanner session has been disposed.")); +} + export class ScannerSession { private state: ScannerSessionState = "idle"; private source: CameraFrameSource; @@ -294,6 +311,7 @@ export class ScannerSession { }; constructor(options: ScannerSessionOptions) { + scannerSessionTerminalLifecycles.set(this, { disposed: false, disposePromise: null }); this.source = options.source; this.decoder = options.decoder ?? new BrowserScannerFrameDecoder(options.decoderOptions); this.ownsDecoder = !options.decoder; @@ -321,6 +339,7 @@ export class ScannerSession { getState(): ScannerSessionState { return this.state; } async start(): Promise { + assertScannerSessionNotDisposed(this); if (this.state === "scanning" || this.state === "starting") return; if (this.state === "stopping") throw new Error("Scanner session is stopping."); if (this.state === "failed" || this.state === "stopped") this.reset(); @@ -358,6 +377,7 @@ export class ScannerSession { } async switchSource(source: CameraFrameSource, capabilityController?: CameraCapabilityController): Promise { + assertScannerSessionNotDisposed(this); const restart = this.state === "scanning" || this.state === "paused" || this.state === "starting"; await this.stop(); // stop() drains the active scheduler task. A decoder may complete after @@ -401,6 +421,7 @@ export class ScannerSession { } reset(): void { + assertScannerSessionNotDisposed(this); if (this.state === "scanning" || this.state === "starting" || this.state === "paused") throw new Error("Stop the scanner session before reset()."); this.lifecycleGeneration += 1; this.generation += 1; this.candidates.reset(); this.repeats.reset(); this.roi.reset(); this.trackingRuntime?.reset(); this.escalation.reset(); this.quality.reset(); this.scheduler.reset(); this.cameraRecovery.reset(); this.backgroundPaused = false; this.decodeLatencies = []; this.firstDecodeAt = undefined; this.firstConfirmedAt = undefined; this.startedAt = 0; this.peakControlledMemory = 0; this.currentWorkerMemory = 0; @@ -408,7 +429,24 @@ export class ScannerSession { this.setState("idle"); } - async dispose(): Promise { await this.stop(); if (this.ownsDecoder) await this.decoder.dispose(); this.resultListeners.clear(); this.observationSetListeners.clear(); this.stateListeners.clear(); this.diagnosticListeners.clear(); } + async dispose(): Promise { + const lifecycle = terminalLifecycleFor(this); + if (lifecycle.disposePromise) { await lifecycle.disposePromise; return; } + lifecycle.disposed = true; + const operation = (async () => { + try { + await this.stop(); + } finally { + try { + if (this.ownsDecoder) await this.decoder.dispose(); + } finally { + this.resultListeners.clear(); this.observationSetListeners.clear(); this.stateListeners.clear(); this.diagnosticListeners.clear(); + } + } + })(); + lifecycle.disposePromise = operation; + await operation; + } getStatistics(): ScannerSessionStatistics { const scheduler = this.scheduler.getStatistics(); const decoder = this.decoder.getStatistics?.(); @@ -588,7 +626,7 @@ export class ScannerSession { private event(type: ScanEvent["type"], barcode: DecodedBarcode, frameId: number, timestamp: number, observationCount: number, geometry?: BarcodeGeometry, physicalInstanceId?: string, suppressionReason?: string): ScanEvent { return { id: `scan-event-${++this.eventSequence}`, type, barcode, frameId, timestamp, observationCount, ...(geometry ? { geometry } : {}), ...(physicalInstanceId ? { physicalInstanceId } : {}), ...(suppressionReason ? { suppressionReason } : {}) }; } - private canPublishGeneration(generation: number): boolean { return generation === this.generation && (this.state === "starting" || this.state === "scanning"); } + private canPublishGeneration(generation: number): boolean { return !terminalLifecycleFor(this).disposed && generation === this.generation && (this.state === "starting" || this.state === "scanning"); } private emitObservationSet(set: BarcodeObservationSet): void { if (!this.canPublishGeneration(set.generation)) return; this.trackingRuntime?.observe(set); @@ -685,8 +723,8 @@ export class ScannerSession { this.setState("failed"); this.activeDecodeController?.abort(); this.decoder.cancel(); void this.scheduler.stop(); void this.source.stop(); this.emitDiagnostic({ type: "error", timestamp: Date.now(), error }); } - private setState(state: ScannerSessionState): void { if (this.state === state) return; this.state = state; for (const listener of this.stateListeners) { try { listener(state); } catch { /* listener failures do not own session state */ } } } - private emitDiagnostic(diagnostic: ScannerDiagnostic): void { for (const listener of this.diagnosticListeners) { try { listener(diagnostic); } catch { /* diagnostics are observational */ } } } + private setState(state: ScannerSessionState): void { if (this.state === state) return; this.state = state; if (terminalLifecycleFor(this).disposed) return; for (const listener of this.stateListeners) { try { listener(state); } catch { /* listener failures do not own session state */ } } } + private emitDiagnostic(diagnostic: ScannerDiagnostic): void { if (terminalLifecycleFor(this).disposed) return; for (const listener of this.diagnosticListeners) { try { listener(diagnostic); } catch { /* diagnostics are observational */ } } } } function releaseFrame(frame: NormalizedFrame): void { frame.dispose?.(); } diff --git a/tests/unit/scanner-lifecycle.test.ts b/tests/unit/scanner-lifecycle.test.ts index d3e15ab..0f3d508 100644 --- a/tests/unit/scanner-lifecycle.test.ts +++ b/tests/unit/scanner-lifecycle.test.ts @@ -10,19 +10,41 @@ class DeferredStartSource implements CameraFrameSource { stops = 0; private finishStart!: () => void; private readonly startGate = new Promise((resolve) => { this.finishStart = resolve; }); + private onFrame?: Parameters[0]; + private onError?: Parameters[1]; private onEnded?: () => void; + private onLifecycle?: Parameters[3]; - async start(_onFrame: Parameters[0], _onError: Parameters[1], onEnded: () => void): Promise { - this.starts += 1; this.onEnded = onEnded; await this.startGate; + async start(onFrame: Parameters[0], onError: Parameters[1], onEnded: () => void, onLifecycle?: Parameters[3]): Promise { + this.starts += 1; this.onFrame = onFrame; this.onError = onError; this.onEnded = onEnded; this.onLifecycle = onLifecycle; await this.startGate; } stop(): void { this.stops += 1; } resolveStart(): void { this.finishStart(); } end(): void { this.onEnded?.(); } + error(error: unknown): void { this.onError?.(error); } + lifecycle(): void { this.onLifecycle?.({ reason: "orientation-change", timestamp: Date.now() }); } + emit(id: string) { + const dispose = vi.fn(); + const frame = createRgbaFrame(new Uint8ClampedArray(4 * 4 * 4), 4, 4, { + id, + timestampMs: 1, + sourceType: "camera", + ownership: "owned", + dispose, + }); + void this.onFrame?.(frame); + return dispose; + } } class RetainedCallbackSource implements CameraFrameSource { private onFrame?: Parameters[0]; - async start(onFrame: Parameters[0]): Promise { this.onFrame = onFrame; } + private onError?: Parameters[1]; + private onEnded?: Parameters[2]; + private onLifecycle?: Parameters[3]; + async start(onFrame: Parameters[0], onError: Parameters[1], onEnded: Parameters[2], onLifecycle?: Parameters[3]): Promise { + this.onFrame = onFrame; this.onError = onError; this.onEnded = onEnded; this.onLifecycle = onLifecycle; + } stop(): void {} emit(id: string) { const dispose = vi.fn(); @@ -36,11 +58,15 @@ class RetainedCallbackSource implements CameraFrameSource { void this.onFrame?.(frame); return dispose; } + error(): void { this.onError?.(new Error("late source failure")); } + end(): void { this.onEnded?.(); } + lifecycle(): void { this.onLifecycle?.({ reason: "orientation-change", timestamp: Date.now() }); } } class PushFrameSource implements CameraFrameSource { starts = 0; stops = 0; + lastDispose?: ReturnType; private onFrame?: Parameters[0]; async start(onFrame: Parameters[0]): Promise { this.starts += 1; this.onFrame = onFrame; } @@ -52,7 +78,8 @@ class PushFrameSource implements CameraFrameSource { const value = (index / 4) % 2 === 0 ? 20 : 235; data[index] = value; data[index + 1] = value; data[index + 2] = value; data[index + 3] = 255; } - const frame = createRgbaFrame(data, 32, 32, { id, timestampMs: 1, sourceType: "camera", ownership: "owned", dispose: vi.fn() }); + const dispose = vi.fn(); this.lastDispose = dispose; + const frame = createRgbaFrame(data, 32, 32, { id, timestampMs: 1, sourceType: "camera", ownership: "owned", dispose }); return Promise.resolve(this.onFrame(frame)); } } @@ -96,11 +123,35 @@ class DeferredSuccessfulDecoder implements ScannerFrameDecoder { }; return { ok: true, results: [primary], primary, frameId: frame.id, scenarioId: "fast", attemptCount: 1, timing: { totalMs: 1 } }; } - cancel(): void {} - dispose(): void {} + cancel = vi.fn(); + dispose = vi.fn(); release(): void { this.releaseGate(); } } +class RestartableSource implements CameraFrameSource { + starts = 0; + stops = 0; + async start(): Promise { this.starts += 1; } + stop(): void { this.stops += 1; } +} + +class PassiveDecoder implements ScannerFrameDecoder { + cancel = vi.fn(); + dispose = vi.fn(); + async decode(frame: NormalizedFrame): Promise { + return { ok: false, error: sdkError("no_symbol_found", "Passive test miss."), frameId: frame.id, scenarioId: "fast", attemptCount: 1, timing: { totalMs: 1 } }; + } +} + +async function captureRejection(operation: Promise): Promise { + try { + await operation; + return undefined; + } catch (error) { + return error; + } +} + it("switches a running camera source without retaining the old source", async () => { class Source implements CameraFrameSource { starts = 0; stops = 0; async start(): Promise { this.starts += 1; } stop(): void { this.stops += 1; } } const first = new Source(); const second = new Source(); const third = new Source(); const session = new ScannerSession({ source: first }); @@ -187,3 +238,124 @@ it("stops when the source ends before start completes", async () => { expect(session.getState()).toBe("stopped"); expect(states).toEqual(["starting", "stopping", "stopped"]); expect(source.stops).toBe(1); await session.dispose(); }); + +describe("ScannerSession terminal disposal", () => { + it("LIFE-D1 blocks restart after disposing the default owned decoder", async () => { + const source = new RestartableSource(); const session = new ScannerSession({ source }); + await session.start(); expect(session.getState()).toBe("scanning"); + await session.dispose(); + const error = await captureRejection(session.start()); + expect(error).toMatchObject({ name: "SdkException", error: { code: "session_disposed" } }); + expect(session.getState()).not.toBe("scanning"); + await session.stop(); + }); + + it("LIFE-D2 makes dispose from idle terminal", async () => { + const source = new RestartableSource(); const session = new ScannerSession({ source }); + await session.dispose(); + const error = await captureRejection(session.start()); + expect(error).toMatchObject({ name: "SdkException", error: { code: "session_disposed" } }); + expect(source.starts).toBe(0); + await session.stop(); + }); + + it("LIFE-D3 preserves restart after stop", async () => { + const source = new RestartableSource(); const session = new ScannerSession({ source }); + await session.start(); await session.stop(); await session.start(); + expect(session.getState()).toBe("scanning"); + expect(source.starts).toBe(2); expect(source.stops).toBe(1); + await session.dispose(); + }); + + it("makes dispose from stopped terminal without stopping the source twice", async () => { + const source = new RestartableSource(); const session = new ScannerSession({ source }); + await session.start(); await session.stop(); await session.dispose(); + const error = await captureRejection(session.start()); + expect(error).toMatchObject({ name: "SdkException", error: { code: "session_disposed" } }); + expect(source.starts).toBe(1); expect(source.stops).toBe(1); expect(session.getState()).toBe("stopped"); + }); + + it("LIFE-D4 coalesces repeated disposal and owned decoder cleanup", async () => { + const source = new RestartableSource(); const session = new ScannerSession({ source }); + const ownedDecoder = (session as unknown as { decoder: ScannerFrameDecoder }).decoder; + const decoderDispose = vi.spyOn(ownedDecoder, "dispose"); + await session.start(); + await Promise.all([session.dispose(), session.dispose()]); + await session.dispose(); + expect(source.stops).toBe(1); + expect(decoderDispose).toHaveBeenCalledOnce(); + }); + + it("LIFE-D5 keeps dispose terminal when a pending start completes late", async () => { + const source = new DeferredStartSource(); const session = new ScannerSession({ source }); + const stateListener = vi.fn(); const resultListener = vi.fn(); const observationListener = vi.fn(); const diagnosticListener = vi.fn(); + session.onStateChange(stateListener); session.onResult(resultListener); session.onObservations(observationListener); session.onDiagnostics(diagnosticListener); + const starting = session.start(); + await session.dispose(); + const listenerCounts = [stateListener, resultListener, observationListener, diagnosticListener].map((listener) => listener.mock.calls.length); + const release = source.emit("late-pending-start-frame"); source.error(new Error("late")); source.end(); source.lifecycle(); + source.resolveStart(); await starting; await Promise.resolve(); + expect(session.getState()).toBe("stopped"); + expect(release).toHaveBeenCalledOnce(); + expect([stateListener, resultListener, observationListener, diagnosticListener].map((listener) => listener.mock.calls.length)).toEqual(listenerCounts); + expect(session.getStatistics()).toMatchObject({ activeDecodeCount: 0, pendingFrameCount: 0, emittedEvents: 0 }); + }); + + it("LIFE-D6 aborts and drains an active decode without late publication", async () => { + const source = new PushFrameSource(); const decoder = new DeferredSuccessfulDecoder(); + const session = new ScannerSession({ source, decoder, confirmation: { mode: "immediate" }, quality: { blurThreshold: 0, contrastThreshold: 0 } }); + const resultListener = vi.fn(); const observationListener = vi.fn(); const diagnosticListener = vi.fn(); const stateListener = vi.fn(); + session.onResult(resultListener); session.onObservations(observationListener); session.onDiagnostics(diagnosticListener); session.onStateChange(stateListener); + await session.start(); + const processing = source.emit("dispose-active-decode"); await decoder.started; + expect(session.getStatistics().activeDecodeCount).toBe(1); + const countsAtDispose = [resultListener, observationListener, diagnosticListener, stateListener].map((listener) => listener.mock.calls.length); + const disposing = session.dispose(); + expect(decoder.cancel).toHaveBeenCalledOnce(); + const restartError = await captureRejection(session.start()); + expect(restartError).toMatchObject({ name: "SdkException", error: { code: "session_disposed" } }); + decoder.release(); await Promise.all([processing, disposing]); + expect(source.lastDispose).toHaveBeenCalledOnce(); + expect([resultListener, observationListener, diagnosticListener, stateListener].map((listener) => listener.mock.calls.length)).toEqual(countsAtDispose); + expect(session.getStatistics()).toMatchObject({ activeDecodeCount: 0, pendingFrameCount: 0, activeTaskCount: 0, emittedEvents: 0, finalControlledMemory: 0 }); + }); + + it("LIFE-D7 rejects source switching after dispose", async () => { + const first = new RestartableSource(); const second = new RestartableSource(); const session = new ScannerSession({ source: first }); + await session.start(); await session.dispose(); + const error = await captureRejection(session.switchSource(second)); + expect(error).toMatchObject({ name: "SdkException", error: { code: "session_disposed" } }); + expect(second.starts).toBe(0); expect(session.getState()).toBe("stopped"); + }); + + it("LIFE-D8 rejects reset after dispose", async () => { + const session = new ScannerSession({ source: new RestartableSource() }); + await session.dispose(); + let error: unknown; + try { session.reset(); } catch (caught) { error = caught; } + expect(error).toMatchObject({ name: "SdkException", error: { code: "session_disposed" } }); + const startError = await captureRejection(session.start()); + expect(startError).toMatchObject({ name: "SdkException", error: { code: "session_disposed" } }); + }); + + it("LIFE-D9 preserves an injected decoder while making its session terminal", async () => { + const source = new RestartableSource(); const decoder = new PassiveDecoder(); const session = new ScannerSession({ source, decoder }); + await session.start(); await session.dispose(); + expect(decoder.dispose).not.toHaveBeenCalled(); + const error = await captureRejection(session.start()); + expect(error).toMatchObject({ name: "SdkException", error: { code: "session_disposed" } }); + expect(source.starts).toBe(1); expect(session.getState()).toBe("stopped"); + }); + + it("LIFE-D10 clears listeners and suppresses retained source callbacks after dispose", async () => { + const source = new RetainedCallbackSource(); const session = new ScannerSession({ source }); + const stateListener = vi.fn(); const resultListener = vi.fn(); const observationListener = vi.fn(); const diagnosticListener = vi.fn(); + session.onStateChange(stateListener); session.onResult(resultListener); session.onObservations(observationListener); session.onDiagnostics(diagnosticListener); + await session.start(); await session.dispose(); + const listenerCounts = [stateListener, resultListener, observationListener, diagnosticListener].map((listener) => listener.mock.calls.length); + const release = source.emit("late-disposed-frame"); source.error(); source.end(); source.lifecycle(); await Promise.resolve(); + expect(release).toHaveBeenCalledOnce(); + expect([stateListener, resultListener, observationListener, diagnosticListener].map((listener) => listener.mock.calls.length)).toEqual(listenerCounts); + expect(session.getState()).toBe("stopped"); + }); +});