Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b59d14452d4ba35b25178124996ce560ea32d139 https://github.com/WebKit/WebKit/commit/b59d14452d4ba35b25178124996ce560ea32d139 Author: Wenson Hsieh <wenson_hs...@apple.com> Date: 2023-03-31 (Fri, 31 Mar 2023)
Changed paths: M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm M Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm Log Message: ----------- [iOS] Rakuten cellular data activation portal is sometimes clipped when presented in a web sheet https://bugs.webkit.org/show_bug.cgi?id=254846 rdar://107301827 Reviewed by Chris Dumez. When activating a Rakuten cellular plan on Apple Watch via the Watch app on iOS 16.4, the web view can end up in a state where both `vw` and `vh` units are always 0. This causes main, scrollable container element with `height: 100vh;` on the page to become much, much shorter than intended, which makes interacting with the activation portal difficult. Some more important context: in the Watch app, the web view starts out at size `(0, 0)`, and is resized to fill the entire window only after the first navigation is complete. Rakuten's portal redirects cross-origin from a landing page, such that this size adjustment races against the second cross-origin navigation (which initiates a process swap). While the immediate cause of this is still unknown, the root cause is that during a process swap (in this particular case, from <login.account.rakuten.com> to <entitlement.devicem.rm-n.jp>), it's possible for UIKit to call `-setFrame:` with the first non-empty frame after the new web process has been launched and `WebPageCreationParameters` are created, but before the process swap actually finishes. This causes: 1. A viewport size of `(0, 0)` to be sent to the newly created page via `WebPageCreationParameters`. 2. The newly updated, non-zero viewport size to be sent to the *old* page, via an IPC message. As such, the new webpage is stuck in a state where it thinks the viewport size is still `(0, 0)`. To fix this, we simply propagate the new viewport layout size to a provisional page upon process swap. Test: ProcessSwap.ChangeViewSizeDuringNavigationActionPolicyDecision * Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize): * Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm: Canonical link: https://commits.webkit.org/262453@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes