diff --git a/server/lib/player-capabilities.js b/server/lib/player-capabilities.js index 5bcfad8..c0c2e67 100644 --- a/server/lib/player-capabilities.js +++ b/server/lib/player-capabilities.js @@ -72,7 +72,11 @@ const BASELINE = { 'display.rotation', 'remote.input', 'system.restart_player', - 'sync.clock', 'offline.cache', + 'sync.clock', + // NOT offline.cache: Tizen caches only the playlist JSON (st_payload_cache in localStorage). + // There is no service worker and no media cache, so the bytes still come from the network and + // content does NOT survive an outage. My first baseline claimed it — caught by the platform + // audit, and exactly the kind of optimistic claim this model exists to stop. ], brightsign: [ 'playback.video', 'playback.image', 'playback.widget', 'playback.youtube', diff --git a/server/test/player-capabilities.test.js b/server/test/player-capabilities.test.js index 7f9c10d..4e203ec 100644 --- a/server/test/player-capabilities.test.js +++ b/server/test/player-capabilities.test.js @@ -89,3 +89,11 @@ test('BrightSign claims display power and reboot; Tizen claims neither', () => { assert.equal(caps.supports(tizen, 'display.power'), false); assert.equal(caps.supports(tizen, 'system.reboot'), false); }); + +test('Tizen does NOT claim offline caching — it caches the playlist, not the media', () => { + // st_payload_cache holds the playlist JSON in localStorage; there is no service worker and no + // media cache, so an outage leaves the panel with a playlist it cannot play. The first version + // of this baseline claimed offline.cache, which is precisely the lie the model exists to stop. + assert.equal(caps.supports({ platform: 'Tizen 6.5' }, 'offline.cache'), false); + assert.ok(caps.supports({ client_type: 'apk' }, 'offline.cache'), 'Android really does cache media'); +});