Charles, could you take a look? This is to fix b/533278409
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
edgeToEdgeManager.setContentFitsWindowInsets(true);I don't think this is the right fix, because others could have tokens. I think the issue is actually that the status bar color just doesn't get set in the CCT.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
edgeToEdgeManager.setContentFitsWindowInsets(true);I don't think this is the right fix, because others could have tokens. I think the issue is actually that the status bar color just doesn't get set in the CCT.
Yeah, I'm seeing the status bar color going through correctly, I think the issue is that the display cutout controller doesn't want to draw this page edge-to-edge.
edgeToEdgeManager.setContentFitsWindowInsets(true);Charles HagerI don't think this is the right fix, because others could have tokens. I think the issue is actually that the status bar color just doesn't get set in the CCT.
Yeah, I'm seeing the status bar color going through correctly, I think the issue is that the display cutout controller doesn't want to draw this page edge-to-edge.
you're right on both counts, the controller decides "not edge-to-edge" for that CCT page and then force-resets `contentFitsWindowInsets(true)` on every update, stomping whatever `EdgeToEdgeControllerImpl` set. that's the actual offline-CCT break, not the color path.
updated this CL to address your token concern:
also tracked down the fullscreen-PWA -> CCT toolbar overlap from the issue (https://issues.chromium.org/issues/407420295#comment95). that was a separate bug from disabling `EdgeToEdgeLayoutCoordinator` for the whole WebappActivity lifetime. split the fix into:
naive me thinks these make 8111480 unnecessary, the everywhere check there force-writes `contentFits=false` on every update, while this keeps the state owner-specific and restores toolbar insets when leaving app mode. sorry this turned into edge-to-edge archaeology :/. PTAL.
sorry for putting so much work on your side :(
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
edgeToEdgeManager.setContentFitsWindowInsets(true);Charles HagerI don't think this is the right fix, because others could have tokens. I think the issue is actually that the status bar color just doesn't get set in the CCT.
Helmut JanuschkaYeah, I'm seeing the status bar color going through correctly, I think the issue is that the display cutout controller doesn't want to draw this page edge-to-edge.
you're right on both counts, the controller decides "not edge-to-edge" for that CCT page and then force-resets `contentFitsWindowInsets(true)` on every update, stomping whatever `EdgeToEdgeControllerImpl` set. that's the actual offline-CCT break, not the color path.
updated this CL to address your token concern:
- flag off: helper never acquires, never writes -> true no-op, fixes the offline CCT on all devices (incl. pre-15 bottom-chin, where an `isEdgeToEdgeEverywhereEnabled` check wouldn't help)
- flag on: writes only on its own acquire/release transitions, and release checks `EdgeToEdgeStateProvider.isEdgeToEdgeEnabledForWindow()` so remaining token holders (immersive mode etc.) keep their state
also tracked down the fullscreen-PWA -> CCT toolbar overlap from the issue (https://issues.chromium.org/issues/407420295#comment95). that was a separate bug from disabling `EdgeToEdgeLayoutCoordinator` for the whole WebappActivity lifetime. split the fix into:
- [8117612](https://chromium-review.googlesource.com/c/chromium/src/+/8117612): dynamic inset fitting in the edge-to-edge root layout
- [8117613](https://chromium-review.googlesource.com/c/chromium/src/+/8117613): keep the wrapper installed and switch its insets with the page cutout state; adds standalone + fullscreen off-origin toolbar regression tests
naive me thinks these make 8111480 unnecessary, the everywhere check there force-writes `contentFits=false` on every update, while this keeps the state owner-specific and restores toolbar insets when leaving app mode. sorry this turned into edge-to-edge archaeology :/. PTAL.
sorry for putting so much work on your side :(
quick update: new PS on 8117613 kills your token concern for good, wrapper now just follows the *aggregate* `EdgeToEdgeStateProvider` token state.
last token released = content-fits restored, doesn't matter who held it.
no more per-component writes racing each other.
bonus finds from device testing: `ImmersiveModeController` supplier created a fresh instance per `get()` so `exitImmersiveMode()` was a no-op, memoized now. and immersive yields when browser controls show up in app mode (contextual search child tab).
full sampler suite manually tested and green.
get prebuild APKS: https://static.januschka.com/i-407420295/index.html
(includes this CL + 8117612 + 8117613)
PTAL!