Skip to content

Commit

Permalink
[iOS] svh/dvh units are unexpectedly equal when Safari tab bar is…
Browse files Browse the repository at this point in the history
… not visible

https://bugs.webkit.org/show_bug.cgi?id=261185
rdar://115085360

Reviewed by Wenson Hsieh.

The SPI `-[WKWebView _overrideLayoutParametersWithMinimumLayoutSize:maximumUnobscuredSizeOverride:]`
is underspecified, and clients calling into this method conflate
`minimumLayoutSize` as _the_ current layout size. This is not appropriate
for us to use as the `minimumUnobscuredSizeOverride` because the current
layout size may not be computed in light of the fact that some dynamic
UI of a client is not visible.

To address this issue, we update the SPI signature to include a new
`minimumUnobscuredSizeOverride` argument, following the precedence set
by the `maximumUnobscuredSizeOverride` parameter, which callers should
populate with the minimum unobscured layout size assuming all dynamic UI
is expanded.

We also update some API tests that call this SPI and reflect the
semantics of the new argument in the updated test expectations.

* Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:
* Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm:
(-[WKWebView _overrideLayoutParametersWithMinimumLayoutSize:maximumUnobscuredSizeOverride:]):
(-[WKWebView _overrideLayoutParametersWithMinimumLayoutSize:minimumUnobscuredSizeOverride:maximumUnobscuredSizeOverride:]):
* Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(WebKit::WKWebViewState::applyTo):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/AnimatedResize.mm:
(TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm:
(TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/FixedLayoutSize.mm:
(TEST):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/RestoreScrollPosition.mm:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/ios/ScrollViewInsetTests.mm:
(TestWebKitAPI::TEST):
* Tools/TestWebKitAPI/Tests/ios/ScrollViewScrollabilityTests.mm:
(TestWebKitAPI::TEST):
* Tools/WebKitTestRunner/ios/PlatformWebViewIOS.mm:
(-[PlatformWebViewController viewWillTransitionToSize:withTransitionCoordinator:]):

Canonical link: https://commits.webkit.org/270652@main
  • Loading branch information
aprotyas committed Nov 13, 2023
1 parent 5e24910 commit 4314874
Show file tree
Hide file tree
Showing 10 changed files with 56 additions and 44 deletions.
5 changes: 4 additions & 1 deletion Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
Original file line number Diff line number Diff line change
Expand Up @@ -559,6 +559,8 @@ typedef NS_OPTIONS(NSUInteger, WKDisplayCaptureSurfaces) {
// DERECATED: The setters of the three following function are deprecated, please use overrideLayoutParameters.
// Define the smallest size a page take with a regular viewport.
@property (nonatomic, readonly) CGSize _minimumLayoutSizeOverride;
// Define the smallest size the unobscured area can get for the current view bounds. This value is used to define viewport units.
@property (nonatomic, readonly) CGSize _minimumUnobscuredSizeOverride WK_API_AVAILABLE(ios(WK_IOS_TBA));
// Define the largest size the unobscured area can get for the current view bounds. This value is used to define viewport units.
@property (nonatomic, readonly) CGSize _maximumUnobscuredSizeOverride;

Expand Down Expand Up @@ -622,7 +624,8 @@ typedef NS_OPTIONS(NSUInteger, WKDisplayCaptureSurfaces) {
- (void)_snapshotRectAfterScreenUpdates:(BOOL)afterScreenUpdates rectInViewCoordinates:(CGRect)rectInViewCoordinates intoImageOfWidth:(CGFloat)imageWidth completionHandler:(void(^)(CGImageRef))completionHandler WK_API_AVAILABLE(ios(16.0));
- (void)_snapshotRect:(CGRect)rectInViewCoordinates intoImageOfWidth:(CGFloat)imageWidth completionHandler:(void(^)(CGImageRef))completionHandler;

- (void)_overrideLayoutParametersWithMinimumLayoutSize:(CGSize)minimumLayoutSize maximumUnobscuredSizeOverride:(CGSize)maximumUnobscuredSizeOverride WK_API_AVAILABLE(ios(9_0));
- (void)_overrideLayoutParametersWithMinimumLayoutSize:(CGSize)minimumLayoutSize maximumUnobscuredSizeOverride:(CGSize)maximumUnobscuredSizeOverride WK_API_DEPRECATED_WITH_REPLACEMENT("-_overrideLayoutParametersWithMinimumLayoutSize:minimumUnobscuredSizeOverride:maximumUnobscuredSizeOverride:", ios(9.0, WK_IOS_TBA));
- (void)_overrideLayoutParametersWithMinimumLayoutSize:(CGSize)minimumLayoutSize minimumUnobscuredSizeOverride:(CGSize)minimumUnobscuredSizeOverride maximumUnobscuredSizeOverride:(CGSize)maximumUnobscuredSizeOverride WK_API_AVAILABLE(ios(WK_IOS_TBA));
- (void)_clearOverrideLayoutParameters WK_API_AVAILABLE(ios(11.0));
- (void)_overrideViewportWithArguments:(NSDictionary<NSString *, NSString *> *)arguments WK_API_AVAILABLE(ios(13.0));

Expand Down
9 changes: 7 additions & 2 deletions Source/WebKit/UIProcess/API/ios/WKWebViewIOS.mm
Original file line number Diff line number Diff line change
Expand Up @@ -4132,13 +4132,18 @@ - (void)_snapshotRect:(CGRect)rectInViewCoordinates intoImageOfWidth:(CGFloat)im

- (void)_overrideLayoutParametersWithMinimumLayoutSize:(CGSize)minimumLayoutSize maximumUnobscuredSizeOverride:(CGSize)maximumUnobscuredSizeOverride
{
LOG_WITH_STREAM(VisibleRects, stream << "-[WKWebView " << _page->identifier() << " _overrideLayoutParametersWithMinimumLayoutSize:" << WebCore::FloatSize(minimumLayoutSize) << " maximumUnobscuredSizeOverride:" << WebCore::FloatSize(maximumUnobscuredSizeOverride) << "]");
[self _overrideLayoutParametersWithMinimumLayoutSize:minimumLayoutSize minimumUnobscuredSizeOverride:minimumLayoutSize maximumUnobscuredSizeOverride:maximumUnobscuredSizeOverride];
}

- (void)_overrideLayoutParametersWithMinimumLayoutSize:(CGSize)minimumLayoutSize minimumUnobscuredSizeOverride:(CGSize)minimumUnobscuredSizeOverride maximumUnobscuredSizeOverride:(CGSize)maximumUnobscuredSizeOverride
{
LOG_WITH_STREAM(VisibleRects, stream << "-[WKWebView " << _page->identifier() << " _overrideLayoutParametersWithMinimumLayoutSize:" << WebCore::FloatSize(minimumLayoutSize) << " minimumUnobscuredSizeOverride:" << WebCore::FloatSize(minimumUnobscuredSizeOverride) << " maximumUnobscuredSizeOverride:" << WebCore::FloatSize(maximumUnobscuredSizeOverride) << "]");

if (minimumLayoutSize.width < 0 || minimumLayoutSize.height < 0)
RELEASE_LOG_FAULT(VisibleRects, "%s: Error: attempting to override layout parameters with negative width or height: %@", __PRETTY_FUNCTION__, NSStringFromCGSize(minimumLayoutSize));

[self _setViewLayoutSizeOverride:CGSizeMake(std::max<CGFloat>(0, minimumLayoutSize.width), std::max<CGFloat>(0, minimumLayoutSize.height))];
[self _setMinimumUnobscuredSizeOverride:minimumLayoutSize];
[self _setMinimumUnobscuredSizeOverride:minimumUnobscuredSizeOverride];
[self _setMaximumUnobscuredSizeOverride:maximumUnobscuredSizeOverride];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ void applyTo(WKWebView* webView)
[webView _resetUnobscuredSafeAreaInsets];

if (_savedHasOverriddenLayoutParameters && _savedMinimumUnobscuredSizeOverride && _savedMaximumUnobscuredSizeOverride)
[webView _overrideLayoutParametersWithMinimumLayoutSize:*_savedMinimumUnobscuredSizeOverride maximumUnobscuredSizeOverride:*_savedMaximumUnobscuredSizeOverride];
[webView _overrideLayoutParametersWithMinimumLayoutSize:*_savedMinimumUnobscuredSizeOverride minimumUnobscuredSizeOverride:*_savedMinimumUnobscuredSizeOverride maximumUnobscuredSizeOverride:*_savedMaximumUnobscuredSizeOverride];
else
[webView _clearOverrideLayoutParameters];

Expand Down
15 changes: 10 additions & 5 deletions Tools/TestWebKitAPI/Tests/WebKitCocoa/AnimatedResize.mm
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,8 @@ - (void)_webView:(WKWebView *)webView didChangeSafeAreaShouldAffectObscuredInset
auto webView = createAnimatedResizeWebView();
[webView setUIDelegate:webView.get()];

[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(200, 50) maximumUnobscuredSizeOverride:CGSizeMake(200, 50)];
auto layoutSize = CGSizeMake(200, 50);
[webView _overrideLayoutParametersWithMinimumLayoutSize:layoutSize minimumUnobscuredSizeOverride:layoutSize maximumUnobscuredSizeOverride:layoutSize];

[webView loadHTMLString:@"<head><meta name='viewport' content='initial-scale=1'></head>" baseURL:nil];
auto navigationDelegate = adoptNS([[TestNavigationDelegate alloc] init]);
Expand All @@ -214,7 +215,8 @@ - (void)_webView:(WKWebView *)webView didChangeSafeAreaShouldAffectObscuredInset
[webView setFrame:CGRectMake(0, 0, [webView frame].size.width + 100, 400)];
}];

[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(100, 200) maximumUnobscuredSizeOverride:CGSizeMake(100, 200)];
layoutSize = CGSizeMake(100, 200);
[webView _overrideLayoutParametersWithMinimumLayoutSize:layoutSize minimumUnobscuredSizeOverride:layoutSize maximumUnobscuredSizeOverride:layoutSize];
[webView _endAnimatedResize];

__block bool didReadLayoutSize = false;
Expand All @@ -239,7 +241,8 @@ - (void)_webView:(WKWebView *)webView didChangeSafeAreaShouldAffectObscuredInset
auto webView = createAnimatedResizeWebView();
[webView setUIDelegate:webView.get()];

[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(200, 50) maximumUnobscuredSizeOverride:CGSizeMake(200, 50)];
auto layoutSize = CGSizeMake(200, 50);
[webView _overrideLayoutParametersWithMinimumLayoutSize:layoutSize minimumUnobscuredSizeOverride:layoutSize maximumUnobscuredSizeOverride:layoutSize];

[webView loadHTMLString:@"<head><meta name='viewport' content='initial-scale=1'></head>" baseURL:nil];
[webView _test_waitForDidFinishNavigation];
Expand Down Expand Up @@ -270,7 +273,8 @@ - (void)_webView:(WKWebView *)webView didChangeSafeAreaShouldAffectObscuredInset
auto webView = createAnimatedResizeWebView();
[webView setUIDelegate:webView.get()];

[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(100, 100) maximumUnobscuredSizeOverride:CGSizeMake(100, 100)];
auto layoutSize = CGSizeMake(100, 100);
[webView _overrideLayoutParametersWithMinimumLayoutSize:layoutSize minimumUnobscuredSizeOverride:layoutSize maximumUnobscuredSizeOverride:layoutSize];

[webView loadHTMLString:@"<head><meta name='viewport' content='initial-scale=1'></head>" baseURL:nil];
[webView _test_waitForDidFinishNavigation];
Expand All @@ -280,7 +284,8 @@ - (void)_webView:(WKWebView *)webView didChangeSafeAreaShouldAffectObscuredInset
[window setHidden:NO];

[webView _killWebContentProcessAndResetState];
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(200, 50) maximumUnobscuredSizeOverride:CGSizeMake(200, 50)];
layoutSize = CGSizeMake(200, 50);
[webView _overrideLayoutParametersWithMinimumLayoutSize:layoutSize minimumUnobscuredSizeOverride:layoutSize maximumUnobscuredSizeOverride:layoutSize];

[webView loadHTMLString:@"<head><meta name='viewport' content='initial-scale=1'></head>" baseURL:nil];
[webView _test_waitForDidFinishNavigation];
Expand Down
52 changes: 24 additions & 28 deletions Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm
Original file line number Diff line number Diff line change
Expand Up @@ -1128,8 +1128,7 @@ static void changeCSSPropertyOfElements(RetainPtr<TestWKWebView>& webView, NSStr
[webView setMinimumViewportInset:CocoaEdgeInsetsMake(11, 21, 31, 41) maximumViewportInset:CocoaEdgeInsetsMake(12, 22, 32, 42)];
[webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"];

[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5)
maximumUnobscuredSizeOverride:CGSizeMake(30.5, 40.5)];
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5) minimumUnobscuredSizeOverride:CGSizeMake(10.5, 30.5) maximumUnobscuredSizeOverride:CGSizeMake(30.5, 40.5)];

[webView waitForNextPresentationUpdate];

Expand All @@ -1141,10 +1140,10 @@ static void changeCSSPropertyOfElements(RetainPtr<TestWKWebView>& webView, NSStr
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vi"));

EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svb"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svb"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svi"));

EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw"));
Expand Down Expand Up @@ -1172,8 +1171,7 @@ static void changeCSSPropertyOfElements(RetainPtr<TestWKWebView>& webView, NSStr
[webView setMinimumViewportInset:CocoaEdgeInsetsZero maximumViewportInset:CocoaEdgeInsetsMake(12, 22, 32, 42)];
[webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"];

[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5)
maximumUnobscuredSizeOverride:CGSizeMake(30.5, 40.5)];
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5) minimumUnobscuredSizeOverride:CGSizeMake(10.5, 30.5) maximumUnobscuredSizeOverride:CGSizeMake(30.5, 40.5)];

[webView waitForNextPresentationUpdate];

Expand All @@ -1185,10 +1183,10 @@ static void changeCSSPropertyOfElements(RetainPtr<TestWKWebView>& webView, NSStr
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vi"));

EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svb"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svb"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svi"));

EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw"));
Expand All @@ -1213,8 +1211,7 @@ static void changeCSSPropertyOfElements(RetainPtr<TestWKWebView>& webView, NSStr
TEST(CSSViewportUnits, EmptyUnobscuredSizeOverrides)
{
auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]);
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5)
maximumUnobscuredSizeOverride:CGSizeZero];
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5) minimumUnobscuredSizeOverride:CGSizeZero maximumUnobscuredSizeOverride:CGSizeZero];
[webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"];
[webView waitForNextPresentationUpdate];

Expand Down Expand Up @@ -1359,8 +1356,8 @@ static void changeCSSPropertyOfElements(RetainPtr<TestWKWebView>& webView, NSStr
TEST(CSSViewportUnits, SameUnobscuredSizeOverrides)
{
auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]);
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5)
maximumUnobscuredSizeOverride:CGSizeMake(10.5, 20.5)];
auto unobscuredSizeOverride = CGSizeMake(10.5, 20.5);
[webView _overrideLayoutParametersWithMinimumLayoutSize:unobscuredSizeOverride minimumUnobscuredSizeOverride:unobscuredSizeOverride maximumUnobscuredSizeOverride:unobscuredSizeOverride];
[webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"];
[webView waitForNextPresentationUpdate];

Expand Down Expand Up @@ -1505,8 +1502,7 @@ static void changeCSSPropertyOfElements(RetainPtr<TestWKWebView>& webView, NSStr
TEST(CSSViewportUnits, DifferentUnobscuredSizeOverrides)
{
auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]);
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5)
maximumUnobscuredSizeOverride:CGSizeMake(30.5, 40.5)];
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5) minimumUnobscuredSizeOverride:CGSizeMake(10.5, 30.5) maximumUnobscuredSizeOverride:CGSizeMake(30.5, 40.5)];
[webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"];
[webView waitForNextPresentationUpdate];

Expand All @@ -1518,10 +1514,10 @@ static void changeCSSPropertyOfElements(RetainPtr<TestWKWebView>& webView, NSStr
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vi"));

EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svb"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svb"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svi"));

EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw"));
Expand Down Expand Up @@ -1553,10 +1549,10 @@ static void changeCSSPropertyOfElements(RetainPtr<TestWKWebView>& webView, NSStr
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vi"));

EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svb"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svb"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svi"));

EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw"));
Expand Down Expand Up @@ -1588,11 +1584,11 @@ static void changeCSSPropertyOfElements(RetainPtr<TestWKWebView>& webView, NSStr
EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vi"));

EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svb"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svi"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svi"));

EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw"));
EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvh"));
Expand Down Expand Up @@ -1623,10 +1619,10 @@ static void changeCSSPropertyOfElements(RetainPtr<TestWKWebView>& webView, NSStr
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vi"));

EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svh"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svb"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svmax"));
EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"svb"));
EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svi"));

EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw"));
Expand Down
2 changes: 1 addition & 1 deletion Tools/TestWebKitAPI/Tests/WebKitCocoa/FixedLayoutSize.mm
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
TEST(WebKit, OverrideMinimumLayoutSizeWithNegativeHeight)
{
auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]);
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(320, -1000) maximumUnobscuredSizeOverride:CGSizeMake(0, 0)];
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(320, -1000) minimumUnobscuredSizeOverride:CGSizeZero maximumUnobscuredSizeOverride:CGSizeZero];
[webView synchronouslyLoadHTMLString:@"<meta name='viewport' content='width=device-width, initial-scale=1'><body>Hello</body>"];
EXPECT_GE([webView _fixedLayoutSize].height, 0);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@
[webView scrollView].contentOffset = CGPointMake(0, -topInset);

[webView waitForNextPresentationUpdate];
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(375, 727) maximumUnobscuredSizeOverride:CGSizeMake(375, 727)];
auto layoutSize = CGSizeMake(375, 727);
[webView _overrideLayoutParametersWithMinimumLayoutSize:layoutSize minimumUnobscuredSizeOverride:layoutSize maximumUnobscuredSizeOverride:layoutSize];

[webView scrollView].contentInset = UIEdgeInsetsMake(1024, 0, 0, 0);
[webView waitForNextPresentationUpdate];
Expand Down
4 changes: 2 additions & 2 deletions Tools/TestWebKitAPI/Tests/ios/ScrollViewInsetTests.mm
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ static void waitUntilInnerHeightIs(TestWKWebView *webView, CGFloat expectedValue

auto minimumLayoutSize = CGSizeMake(390, 664);
auto maxUnobscuredLayoutSize = CGSizeMake(390, 745);
[webView _overrideLayoutParametersWithMinimumLayoutSize:minimumLayoutSize maximumUnobscuredSizeOverride:maxUnobscuredLayoutSize];
[webView _overrideLayoutParametersWithMinimumLayoutSize:minimumLayoutSize minimumUnobscuredSizeOverride:minimumLayoutSize maximumUnobscuredSizeOverride:maxUnobscuredLayoutSize];

[webView synchronouslyLoadHTMLString:@"<meta name='viewport' content='width=device-width, initial-scale=1'><style> body { overflow: hidden; height: 2000px; } </style>"];
[webView waitForNextPresentationUpdate];
Expand All @@ -368,7 +368,7 @@ static void waitUntilInnerHeightIs(TestWKWebView *webView, CGFloat expectedValue
[webView _setObscuredInsets:insets];

auto unobscuredLayoutSize = CGSizeMake(390, 797);
[webView _overrideLayoutParametersWithMinimumLayoutSize:unobscuredLayoutSize maximumUnobscuredSizeOverride:unobscuredLayoutSize];
[webView _overrideLayoutParametersWithMinimumLayoutSize:unobscuredLayoutSize minimumUnobscuredSizeOverride:unobscuredLayoutSize maximumUnobscuredSizeOverride:unobscuredLayoutSize];

[webView synchronouslyLoadHTMLString:@"<meta name='viewport' content='width=device-width, initial-scale=1'><style> body { overflow: hidden; height: 2000px; } </style>"];
[webView waitForNextPresentationUpdate];
Expand Down
Loading

0 comments on commit 4314874

Please sign in to comment.