CNA-VGAP-007: The SDL3 camera provider, system-tray icon and file-dialog result path have no test that drives them
Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.
Sdl3Camera.cpp, Sdl3Tray.cpp and the SDL3 dialog trampoline are exercised by no test beyond capability presence and empty-callback refusal, and the CNA::Devices suites above them use canned platforms.
- Identifier
CNA-VGAP-007- Category
- Verification gap
- Subsystem
- Platforms
- Status
- Open
- Verified against
- CNA
009d40f5(009d40f5dd085c4e674d3479675fac84b12b3e0a) - Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- Yes: see Current tests
- Affected contract
- The SDL3 camera provider and sessions, tray icons and file dialogs (Sdl3CameraProvider, Sdl3Tray, Sdl3Dialogs) behind CNA::Devices::Camera, SystemTray and FileDialog
Expected behaviour
Each platform service that backs a public CNA::Devices class has at least a headless or dummy-driver test of its own contract: permission-state mapping and row compaction for the camera, entry callbacks and icon lifetime for the tray, result delivery (including the failure case) for dialogs.
Actual behaviour at TARGET
No test refers to Sdl3Camera or Sdl3CameraProvider; Sdl3PlatformTests.cpp and PlatformConformanceTests.cpp only check that GetCamera() and GetTray() are non-null exactly when the capability is set. Sdl3SystemServicesTests.cpp checks that the file dialogs refuse an empty callback; nothing reaches ResultTrampoline. The tray's entry trampoline, its callback storage and the thread its callbacks run on are covered by no test. CameraTests, SystemTrayTests and FileDialogTests use CannedCameraPlatform, CannedTrayPlatform and CannedDialogPlatform, so they prove the wrappers' forwarding, not SDL3 behaviour. The native X11 tray and the X11 and Wayland portal dialogs, by contrast, have live tests.
Source locations
modules/platform/src/Sdl3/Sdl3Camera.cpp— session state latching, TryAcquireFrame and row compactionmodules/platform/src/Sdl3/Sdl3Tray.cpp— EntryClickTrampoline, callback storage, IsSupportedmodules/platform/src/Sdl3/Sdl3SystemServices.cpp— Sdl3Dialogs and ResultTrampolinemodules/platform/tests/CNA/Platform/Sdl3PlatformTests.cpp— service presence onlymodules/platform/tests/CNA/Platform/Sdl3SystemServicesTests.cpp— FileDialogsAreSupportedAndRejectAMissingCallbackmodules/devices-ext/tests/CNA/Devices/CameraTests.cpp— runs against the canned camera platformmodules/platform/tests/CNA/Platform/X11TrayTests.cpp— the live tray tests the SDL3 tray lacks
Evidence
Checked by searching the TARGET test tree for the SDL3 camera, tray and dialog types and reading the matching tests at 009d40f5; not executed. The devices-ext internals page states the same for the camera provider.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
As listed above: presence checks, the empty-callback refusal, canned-platform wrapper suites, and live X11/Wayland tests for the non-SDL services.
Regression test
A camera test against an SDL camera driver usable in CI, where the pinned SDL offers one (not checked here), covering permission states and a compacted RGBA frame; a tray test that creates an icon and fires an entry through SDL on a host with a tray; a dialog test that drives ResultTrampoline's null-list and empty-list cases through a seam, without showing a real dialog.
Blast radius
Evidence only: real SDL3 camera capture, tray menus and dialog result delivery on desktop hosts are unproven by CNA's own suites. The wrappers' logic and the X11/Wayland native services have tests.
Workaround
No workaround is known.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- Tests and validation
- SDL3 platform internals: tests
- Deep dives
- Host devices: what the tests can show
- Known issues
- Verification gap index