BUG: When a page with a non-sticky reason navigates, it may clear that
reason in `pagehide`. If that page is restored and gets a non-sticky
reason again, clearing the reason in pagehide did not work the second
time.
CAUSE: When a page is navigating, we do a pre-pagehide check to see if
there are blocking reasons. This ignores non-sticky reasons. If there
ar e none, the page enters BFCache and we do a post-entry check to
make sure that there are no blocking reasons of any
kind. `PageLifecycleStateManager::did_receive_back_forward_cache_ack_`
tracks whether the page has fully entered BFCache and is used to
decide which kind of check we perform. This bit was not reset on
leaving BFCache so the pre-pagehide check was using the post-entry
criteria, second time around.
FIX: Reset `did_receive_back_forward_cache_ack_` on leaving BFCache.
This puts the fix behind a flag (default on) so that we can measure
the impact.
Bug: 360183659
Change-Id: Ie7d94e5d64b2b7a483a5d4c9bfb6d56582fe6615
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6087162
Auto-Submit: Fergal Daly <fergal@chromium.org>
Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
Commit-Queue: Rakina Zata Amni <rakina@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1395838}