Repository navigation
Fix Emoji Browser retry image lifetime race - #7
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The pinned Emoji Browser refreshes its image cache after one retry image loads, revoking Blob URLs that other images are still decoding. Linux WebKit intermittently loses those images, so the six-card retry assertion fails. The unchanged main-CI retry passed, but a local Linux WebKit run reproduced 3 failures in 40 repetitions.
Add compatibility only for the exact reviewed Emoji Browser release: defer requested revocation while a DOM image references the URL, then release it after removal or source replacement. Unused URLs still revoke immediately. Original artifact verification and CSP are preserved; other apps and versions receive no override.
The regression checks loading, resolver-to-card handoff, cleanup and version isolation. The existing test still requires six cards and now checks six decoded images; its Resource mock also handles the individual downloads used by visible cards. No retries, longer timeouts or reduced assertions were added.
Validation:
Hosted CI has passed the full runtime suite (662 passed, 10 existing skips), Android/iOS native compilation, both platform exports, shared tests and the 100/100 quality gates. Remaining lab jobs are being retried on the unchanged commit after slow Ubuntu package downloads during Playwright setup. Overall CI remains pending on those installer jobs. PR CI and branch CI. Production signing, physical-device acceptance and release publication remain separate.