[webkit-changes] [WebKit/WebKit] 9b11ab: [ iOS BigSur+ ] fast/loader/stateobjects/popstate-...

Chris Dumez noreply at github.com
Sun Feb 5 15:03:28 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 9b11ab322031299fd6af1cc22b20c882818756eb
      https://github.com/WebKit/WebKit/commit/9b11ab322031299fd6af1cc22b20c882818756eb
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2023-02-05 (Sun, 05 Feb 2023)

  Changed paths:
    M LayoutTests/fast/loader/stateobjects/popstate-does-not-fire-with-page-cache-expected.txt
    M LayoutTests/fast/loader/stateobjects/popstate-does-not-fire-with-page-cache.html
    M LayoutTests/fast/loader/stateobjects/resources/popstate-does-not-fire-with-page-cache-1.html
    M LayoutTests/fast/loader/stateobjects/resources/popstate-does-not-fire-with-page-cache-2.html
    M LayoutTests/platform/mac/TestExpectations

  Log Message:
  -----------
  [ iOS BigSur+ ] fast/loader/stateobjects/popstate-does-not-fire-with-page-cache.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=251312
rdar://104775065

Reviewed by Ryosuke Niwa.

The test would:
1. open a popup and load popstate-does-not-fire-with-page-cache-1.html in it
2. Call history.pushState() to create an extra history item in the popup
   (popstate-does-not-fire-with-page-cache-1.html#)
3. Navigate the popup to popstate-does-not-fire-with-page-cache-2.html
4. Call history.back() to go back to popstate-does-not-fire-with-page-cache-1.html#
5. Since the item would load from the back/forward cache, the test was relying
   on the `pageshow` event inside the popup to determinate when the navigation
   back had occurred (since no load event would fire).
6. When getting the `pageshow` event, the test would call history.back() again
   in the popup to go back to the initial popstate-does-not-fire-with-page-cache-1.html
7. The test would then expect a popstate event to get fired.

The test would flakily fail because the step 6 would trigger at the wrong time.

The issue was that we had set the pageshow event listener on popstate-does-not-fire-with-page-cache-2.html
instead of popstate-does-not-fire-with-page-cache-1.html. Because we would call `history.back()`
in a setTimeout(10), we would sometimes have navigated back to popstate-does-not-fire-with-page-cache-1.html#
but not always. We really wanted to know when the back/forward cache navigation back to
popstate-does-not-fire-with-page-cache-1.html# had occurred so that `pageshow` event listener
needs to be on popstate-does-not-fire-with-page-cache-1.html.

* LayoutTests/fast/loader/stateobjects/popstate-does-not-fire-with-page-cache-expected.txt:
* LayoutTests/fast/loader/stateobjects/popstate-does-not-fire-with-page-cache.html:
* LayoutTests/fast/loader/stateobjects/resources/popstate-does-not-fire-with-page-cache-1.html:
* LayoutTests/fast/loader/stateobjects/resources/popstate-does-not-fire-with-page-cache-2.html:
* LayoutTests/platform/mac/TestExpectations:

Canonical link: https://commits.webkit.org/259873@main




More information about the webkit-changes mailing list