haikuwebkit/LayoutTests/fast/viewport
Wenson Hsieh 20586209d4 [watchOS] Make a few additional adjustments to support system minimum layout margins
https://bugs.webkit.org/show_bug.cgi?id=227859
rdar://80113612

Reviewed by Tim Horton.

Source/WebCore:

Reduce the default minimum viewport scale on watchOS to avoid horizontal scrolling when loading wide fixed-
viewport-width web content. See WebKit ChangeLog for more details.

* page/ViewportConfiguration.cpp:
(WebCore::platformDeviceWidthOverride):
(WebCore::platformMinimumScaleForWebpage):
(WebCore::shouldOverrideShrinkToFitArgument):
(WebCore::ViewportConfiguration::nativeWebpageParametersWithShrinkToFit):
(WebCore::ViewportConfiguration::webpageParameters):

Source/WebKit:

Make a couple of minor adjustments to deal with the fact that `-contentInset` includes system content insets
(specifically, `-_contentScrollInset`) on watchOS, due to method swizzling that happens in PepperUICore. See
changes below for more detail.

Test: fast/viewport/watchos/viewport-with-system-minimum-layout-margins.html

* UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView _computedContentInset]):

Only apply `-safeAreaInsets` on top of `-contentInset` when computing the total scroll view content inset on
watchOS (as opposed to applying both `-safeAreaInsets` and `-_contentScrollInset`); this is because
`-contentInset` on watchOS is actually equivalent to `-_effectiveContentInset` on other iOS-family platforms, so
additionally adding `-_contentScrollInset` here would result in the scroll content inset being double-counted.

* UIProcess/ios/WKScrollView.mm:
(-[WKScrollView setContentInset:]):
(-[WKScrollView _setContentScrollInsetInternal:]):
(-[WKScrollView _updateContentScrollInset]):

In the case where the WebKit client explicitly sets the scroll view's content insets using `-[WKScrollView
setContentInset:]`, set a flag (`_contentInsetWasExternallyOverridden`) and immediately revert any internally
specified `-_contentScrollInset` on WKScrollView. Due to the swizzled implementation of `-[UIScrollView
contentInset]` described above, it's practically impossible for any client to use `-setContentInset:` correctly
when there is a nonzero `-_contentScrollInset` on watchOS, so preferable to simply get out of the way of the
client in this scenario.

In the context of _SFNanoBrowserViewController, this ensures that scroll view content inset adjustment logic in
Safari doesn't inadvertently cause horizontal content insets to increase by `-_contentScrollInset` every time
`-[WKScrollView setContentInset:]` is invoked by the client.

Tools:

Add support for simulating arbitrary horizontal (trailing and leading) values for `-systemMinimumLayoutMargin`
in WebKitTestRunner, via a new "horizontalSystemMinimumLayoutMargin" test option. By default, this is 0.

* WebKitTestRunner/TestOptions.cpp:
(WTR::TestOptions::defaults):
(WTR::TestOptions::keyTypeMapping):
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::horizontalSystemMinimumLayoutMargin const):
* WebKitTestRunner/ios/PlatformWebViewIOS.mm:
(-[PlatformWebViewController systemMinimumLayoutMargins]):

Override this UIViewController method and replace the leading and trailing layout margin values with the values
from test options.

(WTR::PlatformWebView::PlatformWebView):
* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformResetStateToConsistentValues):

Additionally make a slight adjustment here to avoid calling `-setContentInset` on the scroll view in between
tests if the content insets aren't changing. This is needed in order for the new layout test to work on watchOS.

LayoutTests:

Add a new layout test that uses the new test option to verify that nonzero horizontal system minimum layout
margins shrink the width of the viewport on watchOS (this test also disables watchOS device adaptations and uses
a device-width viewport with `initial-scale=1` such that we can simply check the value of `innerWidth`).

* fast/viewport/watchos/viewport-with-system-minimum-layout-margins-expected.txt: Added.
* fast/viewport/watchos/viewport-with-system-minimum-layout-margins.html: Added.


Canonical link: https://commits.webkit.org/239591@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@279830 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-07-12 16:15:13 +00:00
..
ios
watchos [watchOS] Make a few additional adjustments to support system minimum layout margins 2021-07-12 16:15:13 +00:00
scroll-delegates-switch-on-page-with-no-composition-mode-asserts-expected.txt
scroll-delegates-switch-on-page-with-no-composition-mode-asserts.html
viewport-1-expected.txt
viewport-1.html
viewport-2-expected.txt
viewport-2.html
viewport-3-expected.txt
viewport-3.html
viewport-4-expected.txt
viewport-4.html
viewport-5-expected.txt
viewport-5.html
viewport-6-expected.txt
viewport-6.html
viewport-7-expected.txt
viewport-7.html
viewport-8-expected.txt
viewport-8.html
viewport-9-expected.txt
viewport-9.html
viewport-10-expected.txt
viewport-10.html
viewport-11-expected.txt
viewport-11.html
viewport-12-expected.txt
viewport-12.html
viewport-13-expected.txt
viewport-13.html
viewport-14-expected.txt
viewport-14.html
viewport-15-expected.txt
viewport-15.html
viewport-16-expected.txt
viewport-16.html
viewport-17-expected.txt
viewport-17.html
viewport-18-expected.txt
viewport-18.html
viewport-19-expected.txt
viewport-19.html
viewport-20-expected.txt
viewport-20.html
viewport-21-expected.txt
viewport-21.html
viewport-22-expected.txt
viewport-22.html
viewport-23-expected.txt
viewport-23.html
viewport-24-expected.txt
viewport-24.html
viewport-25-expected.txt
viewport-25.html
viewport-26-expected.txt
viewport-26.html
viewport-27-expected.txt
viewport-27.html
viewport-28-expected.txt
viewport-28.html
viewport-29-expected.txt
viewport-29.html
viewport-30-expected.txt
viewport-30.html
viewport-31-expected.txt
viewport-31.html
viewport-32-expected.txt
viewport-32.html
viewport-33-expected.txt
viewport-33.html
viewport-34-expected.txt
viewport-34.html
viewport-35-expected.txt
viewport-35.html
viewport-36-expected.txt
viewport-36.html
viewport-37-expected.txt
viewport-37.html
viewport-38-expected.txt
viewport-38.html
viewport-39-expected.txt
viewport-39.html
viewport-40-expected.txt
viewport-40.html
viewport-41-expected.txt
viewport-41.html
viewport-42-expected.txt
viewport-42.html
viewport-43-expected.txt
viewport-43.html
viewport-44-expected.txt
viewport-44.html
viewport-45-expected.txt
viewport-45.html
viewport-46-expected.txt
viewport-46.html
viewport-47-expected.txt
viewport-47.html
viewport-48-expected.txt
viewport-48.html
viewport-49-expected.txt
viewport-49.html
viewport-50-expected.txt
viewport-50.html
viewport-51-expected.txt
viewport-51.html
viewport-52-expected.txt
viewport-52.html
viewport-53-expected.txt
viewport-53.html
viewport-54-expected.txt
viewport-54.html
viewport-55-expected.txt
viewport-55.html
viewport-56-expected.txt
viewport-56.html
viewport-57-expected.txt
viewport-57.html
viewport-58-expected.txt
viewport-58.html
viewport-59-expected.txt
viewport-59.html
viewport-60-expected.txt
viewport-60.html
viewport-61-expected.txt
viewport-61.html
viewport-62-expected.txt
viewport-62.html
viewport-63-expected.txt
viewport-63.html
viewport-64-expected.txt
viewport-64.html
viewport-65-expected.txt
viewport-65.html
viewport-66-expected.txt
viewport-66.html
viewport-67-expected.txt
viewport-67.html
viewport-68-expected.txt
viewport-68.html
viewport-69-expected.txt
viewport-69.html
viewport-70-expected.txt
viewport-70.html
viewport-71-expected.txt
viewport-71.html
viewport-72-expected.txt
viewport-72.html
viewport-73-expected.txt
viewport-73.html
viewport-74-expected.txt
viewport-74.html
viewport-75-expected.txt
viewport-75.html
viewport-76-expected.txt
viewport-76.html
viewport-77-expected.txt
viewport-77.html
viewport-78-expected.txt
viewport-78.html
viewport-79-expected.txt
viewport-79.html
viewport-80-expected.txt
viewport-80.html
viewport-81-expected.txt
viewport-81.html
viewport-82-expected.txt
viewport-82.html
viewport-83-expected.txt
viewport-83.html
viewport-84-expected.txt
viewport-84.html
viewport-85-expected.txt
viewport-85.html
viewport-86-expected.txt
viewport-86.html
viewport-87-expected.txt
viewport-87.html
viewport-88-expected.txt
viewport-88.html
viewport-90-expected.txt
viewport-90.html
viewport-91-expected.txt
viewport-91.html
viewport-100-expected.txt
viewport-100.html
viewport-101-expected.txt
viewport-101.html
viewport-102-expected.txt
viewport-102.html
viewport-103-expected.txt
viewport-103.html
viewport-104-expected.txt
viewport-104.html
viewport-105-expected.txt
viewport-105.html
viewport-106-expected.txt
viewport-106.html
viewport-107-expected.txt
viewport-107.html
viewport-108-expected.txt
viewport-108.html
viewport-109-expected.txt
viewport-109.html
viewport-110-expected.txt
viewport-110.html
viewport-111-expected.txt
viewport-111.html
viewport-112-expected.txt
viewport-112.html
viewport-113-expected.txt
viewport-113.html
viewport-114-expected.txt
viewport-114.html
viewport-115-expected.txt
viewport-115.html
viewport-116-expected.txt
viewport-116.html
viewport-117-expected.txt
viewport-117.html
viewport-118-expected.txt
viewport-118.html
viewport-119-expected.txt
viewport-119.html
viewport-120-expected.txt
viewport-120.html
viewport-121-expected.txt
viewport-121.html
viewport-122-expected.txt
viewport-122.html
viewport-123-expected.txt
viewport-123.html
viewport-124-expected.txt
viewport-124.html
viewport-125-expected.txt
viewport-125.html
viewport-126-expected.txt
viewport-126.html
viewport-127-expected.txt
viewport-127.html
viewport-128-expected.txt
viewport-128.html
viewport-129-expected.txt
viewport-129.html
viewport-130-expected.txt
viewport-130.html
viewport-131-expected.txt
viewport-131.html
viewport-132-expected.txt
viewport-132.html
viewport-133-expected.txt
viewport-133.html
viewport-134-expected.txt
viewport-134.html
viewport-legacy-handheldfriendly-expected.txt LayoutTestController.dumpConfigurationForViewport should move to Internals 2012-07-10 07:55:50 +00:00
viewport-legacy-handheldfriendly.html
viewport-legacy-mobileoptimized-2-expected.txt
viewport-legacy-mobileoptimized-2.html
viewport-legacy-mobileoptimized-3-expected.txt
viewport-legacy-mobileoptimized-3.html
viewport-legacy-mobileoptimized-expected.txt
viewport-legacy-mobileoptimized.html
viewport-legacy-ordering-1-expected.txt
viewport-legacy-ordering-1.html
viewport-legacy-ordering-2-expected.txt
viewport-legacy-ordering-2.html
viewport-legacy-ordering-3-expected.txt
viewport-legacy-ordering-3.html
viewport-legacy-ordering-4-expected.txt
viewport-legacy-ordering-4.html
viewport-legacy-ordering-5-expected.txt
viewport-legacy-ordering-5.html
viewport-legacy-ordering-6-expected.txt
viewport-legacy-ordering-6.html
viewport-legacy-ordering-7-expected.txt
viewport-legacy-ordering-7.html
viewport-legacy-ordering-8-expected.txt
viewport-legacy-ordering-8.html
viewport-legacy-ordering-9-expected.txt
viewport-legacy-ordering-9.html
viewport-legacy-xhtmlmp-expected.txt
viewport-legacy-xhtmlmp-misplaced-doctype-expected.txt LayoutTestController.dumpConfigurationForViewport should move to Internals 2012-07-10 07:55:50 +00:00
viewport-legacy-xhtmlmp-misplaced-doctype.html
viewport-legacy-xhtmlmp-ordering-expected.txt LayoutTestController.dumpConfigurationForViewport should move to Internals 2012-07-10 07:55:50 +00:00
viewport-legacy-xhtmlmp-ordering.html
viewport-legacy-xhtmlmp-remove-and-add-expected.txt
viewport-legacy-xhtmlmp-remove-and-add.html Methods on window.internals shouldn't pass a document. 2013-10-28 16:15:45 +00:00
viewport-legacy-xhtmlmp.html
viewport-limits-adjusted-for-no-user-scale-control-expected.txt
viewport-limits-adjusted-for-no-user-scale-control.html Methods on window.internals shouldn't pass a document. 2013-10-28 16:15:45 +00:00
viewport-limits-adjusted-for-no-user-scale-expected.txt Chromium should call restrictScaleFactorToInitialScaleIfNotUserScalable unless/until userScalable is supported directly. 2012-09-06 07:35:43 +00:00
viewport-limits-adjusted-for-no-user-scale.html
viewport-warnings-1-expected.txt
viewport-warnings-1.html
viewport-warnings-2-expected.txt
viewport-warnings-2.html
viewport-warnings-3-expected.txt
viewport-warnings-3.html
viewport-warnings-4-expected.txt
viewport-warnings-4.html
viewport-warnings-5-expected.txt
viewport-warnings-5.html
viewport-warnings-6-expected.txt
viewport-warnings-6.html
viewport-warnings-7-expected.txt
viewport-warnings-7.html