fix: avoid unbounded HTTP throttling and make buffer readout opt-in

This commit is contained in:
2026-10-11 11:52:48 +02:00
parent 13554a1574
commit 537e8e2624
6 changed files with 118 additions and 28 deletions
+17
View File
@@ -22,8 +22,20 @@ struct SystemPlaybackChecks {
let suite = "terebi.system-playback-check.\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suite)!
defer { defaults.removePersistentDomain(forName: suite) }
let initialModel = PlayerModel(defaults: defaults)
require(!initialModel.showsBufferInfo, "buffer readout defaults off before playback")
initialModel.setShowsBufferInfo(true)
require(initialModel.showsBufferInfo && initialModel.controlsVisible,
"buffer readout can be enabled before playback and reveals controls")
initialModel.shutdown()
let restoredModel = PlayerModel(defaults: defaults)
require(restoredModel.showsBufferInfo, "enabled buffer readout survives model recreation")
restoredModel.setShowsBufferInfo(false)
require(!restoredModel.showsBufferInfo, "buffer readout can be explicitly disabled")
restoredModel.shutdown()
let model = PlayerModel(defaults: defaults)
defer { model.shutdown() }
require(!model.showsBufferInfo, "explicitly disabled buffer readout survives model recreation")
model.setVolume(0)
let directory = URL(fileURLWithPath: CommandLine.arguments[1], isDirectory: true)
let center = MPNowPlayingInfoCenter.default()
@@ -73,6 +85,11 @@ struct SystemPlaybackChecks {
retainedSnapshot.buffered_end = min(retainedSnapshot.duration, retainedSnapshot.position + 1)
model.applyState(retainedSnapshot)
require(model.bufferedRange != nil, "loaded selection exposes retained media")
let retainedRange = model.bufferedRange
model.setShowsBufferInfo(true)
require(model.bufferedRange == retainedRange, "enabling buffer readout preserves retained media")
model.setShowsBufferInfo(false)
require(model.bufferedRange == retainedRange, "disabling buffer readout preserves retained media")
model.closeFile()
require(model.bufferedRange == nil, "accepted close immediately hides a stale retained-media snapshot")
require(center.nowPlayingInfo == nil && center.playbackState == .stopped,