RESOLVED FIXED 181269
Swipe Back gesture to previous page causes lag in rendering
https://bugs.webkit.org/show_bug.cgi?id=181269
Summary Swipe Back gesture to previous page causes lag in rendering
Cagdas Tulek
Reported 2018-01-03 18:00:31 PST
Created attachment 330426 [details] iOS 10.3 video capture This bug probably happens for single page web apps. I have attached 2 video shots for iOS 10.3 and iOS 11.1 to show the difference in behavior. I can reproduce the issue at outschool.com: - Go to https://outschool.com/online-classes - Click one of the class images to see the class detail page - Use swipe back gesture to go to previous page - Previous page renders empty for a couple of seconds and then appears fully rendered Other remarks: - This issue does not happen on iOS 10.3. There is still a short freeze of full UI but more acceptable than the current situation on iOS 11.1 - This issue does not happen for websites which are not single page apps. Try news.ycombinator.com as an example. - This issue does not happen when regular back button is used instead of swiping
Attachments
iOS 10.3 video capture (5.03 MB, video/mp4)
2018-01-03 18:00 PST, Cagdas Tulek
no flags
iOS 11.1 video capture (3.90 MB, video/mp4)
2018-01-03 18:01 PST, Cagdas Tulek
no flags
Patch (19.86 KB, patch)
2018-01-09 20:30 PST, Tim Horton
no flags
Patch (20.45 KB, patch)
2018-01-10 10:06 PST, Tim Horton
no flags
Patch (22.43 KB, patch)
2018-01-10 10:27 PST, Tim Horton
no flags
Patch (22.14 KB, patch)
2018-01-10 10:34 PST, Tim Horton
no flags
Archive of layout-test-results from ews107 for mac-sierra-wk2 (2.69 MB, application/zip)
2018-01-10 12:09 PST, EWS Watchlist
no flags
Patch (22.79 KB, patch)
2018-01-10 15:34 PST, Tim Horton
thorton: commit-queue-
Cagdas Tulek
Comment 1 2018-01-03 18:01:05 PST
Created attachment 330427 [details] iOS 11.1 video capture
Tim Horton
Comment 2 2018-01-03 18:09:01 PST
Tim Horton
Comment 3 2018-01-09 20:21:36 PST
My fix for twitter seems to fix this site too, so I’ll use this bug (I’ve also confirmed that this site uses scrollRestoration and pushState, so it makes sense).
Tim Horton
Comment 4 2018-01-09 20:30:34 PST
Tim Horton
Comment 5 2018-01-10 10:06:16 PST
Tim Horton
Comment 6 2018-01-10 10:27:22 PST
Tim Horton
Comment 7 2018-01-10 10:34:06 PST
Simon Fraser (smfr)
Comment 8 2018-01-10 11:09:53 PST
Comment on attachment 330930 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=330930&action=review > Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:321 > + std::optional<uint64_t> _firstTransactionIDAfterPageRestore; We really need a typedef for transactionIDs, or maybe use Identified or something. > LayoutTests/swipe/pushstate-with-manual-scrollrestoration.html:9 > +history.scrollRestoration = "manual"; Maybe you should have a basic swipe test without scrollRestoration as well. > LayoutTests/swipe/pushstate-with-manual-scrollrestoration.html:29 > + measuredDurationShouldBeLessThan("snapshotRemoval", 1000, "Because we're using the page cache, it shouldn't be long between the gesture completing and the snapshot being removed.") I wonder how flakey this will be on bots.
Tim Horton
Comment 9 2018-01-10 11:26:35 PST
(In reply to Simon Fraser (smfr) from comment #8) > Comment on attachment 330930 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=330930&action=review > > > Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:321 > > + std::optional<uint64_t> _firstTransactionIDAfterPageRestore; > > We really need a typedef for transactionIDs, or maybe use Identified or > something. Yes. > > LayoutTests/swipe/pushstate-with-manual-scrollrestoration.html:9 > > +history.scrollRestoration = "manual"; > > Maybe you should have a basic swipe test without scrollRestoration as well. Probably! > > LayoutTests/swipe/pushstate-with-manual-scrollrestoration.html:29 > > + measuredDurationShouldBeLessThan("snapshotRemoval", 1000, "Because we're using the page cache, it shouldn't be long between the gesture completing and the snapshot being removed.") > > I wonder how flakey this will be on bots. If it comes up, we can replace this with a bit that disables the watchdog, and just let the test time out altogether.
EWS Watchlist
Comment 10 2018-01-10 12:09:09 PST
Comment on attachment 330930 [details] Patch Attachment 330930 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/6023578 New failing tests: swipe/pushstate-with-manual-scrollrestoration.html
EWS Watchlist
Comment 11 2018-01-10 12:09:10 PST
Created attachment 330946 [details] Archive of layout-test-results from ews107 for mac-sierra-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews107 Port: mac-sierra-wk2 Platform: Mac OS X 10.12.6
Tim Horton
Comment 12 2018-01-10 15:26:28 PST
Bug tracking the test failing on Mac (it’s pretty specific to the test): https://bugs.webkit.org/show_bug.cgi?id=181502. Going to skip the test on Mac for now.
Tim Horton
Comment 13 2018-01-10 15:34:41 PST
Tim Horton
Comment 14 2018-01-10 18:19:01 PST
Radar WebKit Bug Importer
Comment 15 2018-01-10 18:20:25 PST
Note You need to log in before you can comment on or make changes to this bug.