Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm (286349 => 286350)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm 2021-12-01 06:11:56 UTC (rev 286349)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm 2021-12-01 06:32:24 UTC (rev 286350)
@@ -30,40 +30,84 @@
#import <WebKit/WKWebViewPrivate.h>
#import <wtf/RetainPtr.h>
-static double evaluateForNumber(WKWebView *webView, NSString *script)
+static double evaluateForNumber(RetainPtr<TestWKWebView>& webView, NSString *script)
{
return [(NSNumber *)[webView objectByEvaluatingJavaScript:script] doubleValue];
}
-static double getElementHeight(WKWebView *webView, NSString *elementID)
+static double dimensionOfElement(RetainPtr<TestWKWebView>& webView, NSString *element, NSString *dimension)
{
- return evaluateForNumber(webView, [NSString stringWithFormat:@"document.getElementById('%@').getBoundingClientRect().height", elementID]);
+ return evaluateForNumber(webView, [NSString stringWithFormat:@"%@.getBoundingClientRect().%@", element, dimension]);
}
+static double widthOfElementWithID(RetainPtr<TestWKWebView>& webView, NSString *elementID)
+{
+ return dimensionOfElement(webView, [NSString stringWithFormat:@"document.getElementById('%@')", elementID], @"width");
+}
+
+static double heightOfElementWithID(RetainPtr<TestWKWebView>& webView, NSString *elementID)
+{
+ return dimensionOfElement(webView, [NSString stringWithFormat:@"document.getElementById('%@')", elementID], @"height");
+}
+
+static double viewportUnitLength(RetainPtr<TestWKWebView>& webView, NSString *viewportUnit)
+{
+ return heightOfElementWithID(webView, viewportUnit);
+}
+
TEST(CSSViewportUnits, AllSame)
{
auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]);
[webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"];
+ [webView waitForNextPresentationUpdate];
- EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"vw"));
- EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"vh"));
- EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"vmin"));
- EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"vmax"));
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vw"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vh"));
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vmin"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vmax"));
- EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"svw"));
- EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"svh"));
- EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"svmin"));
- EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"svmax"));
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svw"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svh"));
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svmin"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svmax"));
- EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"lvw"));
- EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"lvh"));
- EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"lvmin"));
- EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"lvmax"));
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvw"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvh"));
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvmin"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvmax"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvw"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvh"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvmin"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvmax"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax"));
+
+#if PLATFORM(IOS_FAMILY)
+ [webView scrollView].zoomScale = 2;
+#elif PLATFORM(MAC)
+ [webView setAllowsMagnification:YES];
+ [webView setMagnification:2];
+#endif
+ [webView waitForNextPresentationUpdate];
+
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vw"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vh"));
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vmin"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vmax"));
+
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svw"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svh"));
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svmin"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svmax"));
+
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvw"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvh"));
+ EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvmin"));
+ EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvmax"));
+
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax"));
}
#if PLATFORM(IOS_FAMILY)
@@ -74,26 +118,50 @@
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5)
maximumUnobscuredSizeOverride:CGSizeZero];
[webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"];
+ [webView waitForNextPresentationUpdate];
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"vw"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"vh"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"vmin"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"vmax"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vmax"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svw"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svh"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svmin"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svmax"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"lvw"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"lvh"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"lvmin"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"lvmax"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvmax"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvw"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvh"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvmin"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvmax"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax"));
+
+ [webView scrollView].zoomScale = 2;
+ [webView waitForNextPresentationUpdate];
+
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vmax"));
+
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax"));
+
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvmax"));
+
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax"));
}
TEST(CSSViewportUnits, SameUnobscuredSizeOverrides)
@@ -102,26 +170,50 @@
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5)
maximumUnobscuredSizeOverride:CGSizeMake(10.5, 20.5)];
[webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"];
+ [webView waitForNextPresentationUpdate];
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"vw"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"vh"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"vmin"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"vmax"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vmax"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svw"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svh"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svmin"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svmax"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"lvw"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"lvh"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"lvmin"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"lvmax"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvmax"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvw"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvh"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvmin"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvmax"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax"));
+
+ [webView scrollView].zoomScale = 2;
+ [webView waitForNextPresentationUpdate];
+
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vmax"));
+
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax"));
+
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvh"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin"));
+ EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvmax"));
+
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax"));
}
TEST(CSSViewportUnits, DifferentUnobscuredSizeOverrides)
@@ -130,26 +222,50 @@
[webView _overrideLayoutParametersWithMinimumLayoutSize:CGSizeMake(10.5, 20.5)
maximumUnobscuredSizeOverride:CGSizeMake(30.5, 40.5)];
[webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"];
+ [webView waitForNextPresentationUpdate];
- EXPECT_FLOAT_EQ(30.5, getElementHeight(webView.get(), @"vw"));
- EXPECT_FLOAT_EQ(40.5, getElementHeight(webView.get(), @"vh"));
- EXPECT_FLOAT_EQ(30.5, getElementHeight(webView.get(), @"vmin"));
- EXPECT_FLOAT_EQ(40.5, getElementHeight(webView.get(), @"vmax"));
+ EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vw"));
+ EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vh"));
+ EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vmin"));
+ EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vmax"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svw"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svh"));
- EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svmin"));
- EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svmax"));
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
+ EXPECT_FLOAT_EQ(20.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, getElementHeight(webView.get(), @"lvw"));
- EXPECT_FLOAT_EQ(40.5, getElementHeight(webView.get(), @"lvh"));
- EXPECT_FLOAT_EQ(30.5, getElementHeight(webView.get(), @"lvmin"));
- EXPECT_FLOAT_EQ(40.5, getElementHeight(webView.get(), @"lvmax"));
+ EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw"));
+ EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvh"));
+ EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvmin"));
+ EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvmax"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvw"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvh"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvmin"));
- EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvmax"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax"));
+
+ [webView scrollView].zoomScale = 2;
+ [webView waitForNextPresentationUpdate];
+
+ EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vw"));
+ EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vh"));
+ EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vmin"));
+ EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vmax"));
+
+ EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw"));
+ EXPECT_FLOAT_EQ(20.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, @"lvw"));
+ EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvh"));
+ EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvmin"));
+ EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvmax"));
+
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh"));
+ EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin"));
+ EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax"));
}
#endif // PLATFORM(IOS_FAMILY)