Files
element-x-android/features
hayyaksi 7341feeed8 Model the fake voice recorder on a cancellable recording job (#7466)
* Model the fake voice recorder on a cancellable recording job

FakeVoiceRecorder pushed a whole recording synchronously from a single
suspending call, which made it both weaker and stricter than
DefaultVoiceRecorder.

Every level emission carried the same elapsed time and the emissions were
coalesced by Molecule, so no intermediate recording state was observable and
the level-limit test had to skip half the emissions to compensate. Each level
now advances the test time source and suspends for its share of the recording
duration, so the states arrive one at a time and that magic number is gone.

Call verification moved to the constructor lambdas the rest of the repo uses,
in place of hand-rolled counters and assertCalls. The counters discarded the
argument, so nothing pinned that cancelling a recording stops it with
cancelled = true; that is now asserted. Truth is no longer needed by the
fixture module.

A second startRecord() no longer raises an error where production only warns
and returns, and stopping or deleting terminates an in-flight emission loop
the way cancelling the real recording job does, so a stale recording state can
no longer arrive after the recording has finished.

* Keep each recording's level loop to its own recording

The level loop checked a single isRecording flag, which cannot tell "this
recording was cancelled" from "a later recording has started". After a cancel
followed by a new start, the first loop resumed, saw the flag set again, and
advanced the shared test time source, so the new recording reported the elapsed
time of both. Each recording now carries an id and its loop stops as soon as
that id is no longer the active one.
2026-08-19 13:44:11 +02:00
..
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 12:10:39 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00
2026-08-17 11:34:52 +02:00