[Feature] Work filePickerPathBaseline down from 7 to 0 #528
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#528
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The gate from #505 landed with a baseline of seven files that take a filesystem path from
FilePickerwithout naming a platform flag themselves. The baseline is a record, not an approval — each entry needs its own decision.Gated at the caller (4).
open_presentation_dialog,slide_finder_dialog,import_slides_dialog,save_destination_dialog. These are correct today: the callers (shell_actions.dart,slide_list_panel.dart",deck_provider.dart`) carry the gate. The file itself cannot prove it, which is exactly the fragility — move the gate into the dialog, or give the dialog a required flag, so the guarantee is local.Services reading
.path(2 files, 5 sites).lib/services/file_service.dart:518,957andlib/services/image_service.dart:239,265,276. The second is the more interesting: this is the service that maintainsmem:keys for browser-held images, so a.pathread there is either dead on web or a live blob:-URL leak. Establish which before touching it.Open bug (1).
image_carousel_picker_actions.dart— tracked as #526.Work them one at a time, each with its own reasoning; do not batch. Removing an entry from
filePickerPathBaselineis the proof, andmake check-conventionsreports a stale entry, so the list cannot rot silently.Done in #565 — the baseline is empty.
Each of the seven got its own decision, as asked, and they came out three different ways.
The four caller-gated dialogs were correct today; the gate now sits inside the method, so the file proves its own guarantee instead of borrowing one.
image_servicewas not a baseline entry but a live bug. The issue asked to establish first whether a.pathread on web is dead code or a blob:-URL leak. It is neither:PlatformFile.paththrows a bare String there (file_picker 5.5.0,platform_file.dartline 37). Anyone pressing "Bestand kiezen" on a video or audio slide in the web build got an uncaught error, and none of the four callers gated. Two places incheck_conventions.dartasserted the blob story — the rule header and the failure message a developer actually reads — and both are corrected with the date and the source.settings_dialogandfile_servicehit the class-size ratchet, which turned out to be a hint rather than an obstacle: the gate belonged once per library in a top-level function, not once per picker.FileService2885 → 2879, locked in.No test can prove any of this —
kIsWebis always false underflutter test, which is why the gate is static. The proof is the empty list, andmake check-conventionsreporting a stale entry itself (which it did three times on the way, each time confirming a fix had landed).Closing.