| id | REF-042 | |||||
|---|---|---|---|---|---|---|
| workflow | github | |||||
| github_issue | emulebb/emulebb#22 | |||||
| title | Consolidate WinInet download helpers and review URL shortcut intake | |||||
| status | OPEN | |||||
| priority | Minor | |||||
| category | refactor | |||||
| labels |
|
|||||
| milestone | future-release | |||||
| created | 2026-05-18 | |||||
| source | 2026-05-18 frozen-surface disposition pass |
Workflow status is tracked in GitHub: emulebb/emulebb#22. This local document is retained as an engineering spec/evidence record.
Keep the existing WinInet download paths for the current release, but plan a future consolidation pass. The app now has hardened direct-download ownership, timeouts, and cancellation behavior, yet several callers still expose the same basic network-download pattern through separate local entry points.
This item should unify those helper paths only after the current release line is stable. It is not a 0.7.3 RC1 gate.
Relevant surfaces to revalidate before implementation:
DirectDownloadand its WinInet handle/cancellation ownership.- GeoLocation and IPFilter refresh downloads, including temporary-file promotion and shutdown cancellation.
- Server-list, IP-filter, or update-style download flows that still carry local WinInet setup, validation, or cleanup logic.
.url/ Internet Shortcut drop intake fromDropTarget.cpp. This path is kept for compatibility, but should be reviewed later for strict scheme, parsing, and local-file handling boundaries.
- Keep successful download behavior and proxy behavior unchanged.
- Prefer one owned download helper with a clear timeout, cancellation, and handle-closing contract.
- Preserve caller-specific validation and atomic promotion rules; do not flatten every update flow into a single post-download policy.
- Review
.urlintake as compatibility input, not as a new rich-content parser.
- Replacing WinInet with a new HTTP stack in the same slice.
- Reopening the removed MSHTML/rich drag-drop parser.
- Adding new remote-update product behavior.
- Changing REST/controller download semantics.
- Common WinInet setup, timeout, cancellation, and close ownership are expressed through one small helper or wrapper.
- GeoLocation and IPFilter refreshes still cancel cleanly during shutdown.
- Failed downloads preserve the previous live data files.
.urlintake accepts only the intended safe link forms and does not revive HTML/rich parsing.- Targeted tests cover at least one successful download, one cancellation or
timeout path, one failed-promotion path, and one
.urlintake boundary.
- Run focused direct-download and refresh-worker tests through the supported workspace CLI.
- Run Release x64 app build after implementation.
- If
.urlbehavior changes, add a narrow parser/intake regression test before touching UI drag/drop behavior.