Repository navigation
Release FIAM display gate after invalid card construction - #16819
Conversation
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. |
|
[paulb777-bot] Thanks for splitting this out. This fixes #16817. We had independently confirmed on main that resetting |
|
Please address the failing tests |
|
The CI failure is caused by the test using timestamp 1000 for both checks: the first construction attempt advances lastDisplayTime, so the second check is rejected by the normal one-minute display interval before exercising the gate. Updated the clock stub to a mutable timestamp, advanced it by the configured display interval before the second check, and asserted that the unusable card was removed from the cache. Production behavior and the display interval remain unchanged. The original gate bug still prevents the second display even after the interval. clang-format 23.1.2 and git diff --check pass. Apple XCTest is unavailable locally; the updated native CI result is pending. |
|
Confirmed the revised test with an actual Apple XCTest before/after run. Using main executor 8d7687f with the PR's corrected fixture, testCardWithoutImageDoesNotBlockNextMessage fails three assertions: the invalid card is still cached and the following valid message cannot display. Restoring exact PR source c013cfd passes all 30 FIRIAMDisplayExecutorTests, zero failures: native XCTest results. The test advances the ordinary display interval and verifies cache removal; callback synchronization remains independently scoped to #16763. |
|
Thanks! |
Fixes #16817.
A card message without image data cannot be constructed. Previously that return left isMsgBeingDisplayed set, so later checks stopped before selecting another message.
Release the display gate and remove the unconstructable message from the cache, allowing a later foreground check after the normal display interval to display the following valid message. The regression queues a card with no images before a valid message and exercises both checks. Its image-loader fixture returns data only for image URLs actually present; its mutable test clock advances the configured interval before checking the following message and also verifies cache removal.
This is the independent nil-construction fix requested in the review of #16763; callback synchronization remains in that PR. No public API changes.
Validation: