Changeset 286350 in webkit
- Timestamp:
- Nov 30, 2021 10:32:24 PM (8 months ago)
- Location:
- trunk
- Files:
-
- 6 edited
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/page/FrameView.cpp (modified) (4 diffs)
-
Source/WebCore/page/FrameView.h (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.html (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r286349 r286350 1 2021-11-30 Devin Rousso <drousso@apple.com> 2 3 [css-values-4] Dynamic `dv*` viewport units should not respect the page scale 4 https://bugs.webkit.org/show_bug.cgi?id=233291 5 6 Reviewed by Simon Fraser. 7 8 According to the spec (<https://drafts.csswg.org/css-values-4/#viewport-relative-lengths>): 9 > The viewport-percentage lengths are relative to the size of the initial containing block. 10 As such, we should really be using the layout viewport, not the visual viewport. 11 12 Tests: CSSViewportUnits.AllSame 13 CSSViewportUnits.EmptyUnobscuredSizeOverrides 14 CSSViewportUnits.SameUnobscuredSizeOverrides 15 CSSViewportUnits.DifferentUnobscuredSizeOverrides 16 17 * page/FrameView.h: 18 * page/FrameView.cpp: 19 (WebCore::FrameView::availableContentSizeChanged): 20 (WebCore::FrameView::layoutOrVisualViewportChanged): 21 (WebCore::FrameView::unobscuredContentSizeChanged): 22 (WebCore::FrameView::sizeForCSSDynamicViewportUnits() const): 23 Make sure to notify elements using CSS viewport units of changes to the layout viewport. 24 1 25 2021-11-30 Chris Dumez <cdumez@apple.com> 2 26 -
trunk/Source/WebCore/page/FrameView.cpp
r286119 r286350 2793 2793 // way of handling potential recursive layouts when the viewport is resized to accomodate 2794 2794 // the content but the content always overflows the viewport. See webkit.org/b/165781. 2795 if ( !(layoutContext().layoutPhase() == FrameViewLayoutContext::LayoutPhase::InViewSizeAdjust && useFixedLayout()))2795 if (layoutContext().layoutPhase() == FrameViewLayoutContext::LayoutPhase::InViewSizeAdjust) 2796 2796 document->updateViewportUnitsOnResize(); 2797 2797 } … … 2897 2897 void FrameView::layoutOrVisualViewportChanged() 2898 2898 { 2899 if (!frame().settings().visualViewportAPIEnabled()) 2900 return; 2901 2902 if (auto* window = frame().window()) 2903 window->visualViewport().update(); 2904 2905 if (auto scrollingCoordinator = this->scrollingCoordinator()) 2906 scrollingCoordinator->frameViewVisualViewportChanged(*this); 2899 if (frame().settings().visualViewportAPIEnabled()) { 2900 if (auto* window = frame().window()) 2901 window->visualViewport().update(); 2902 2903 if (auto scrollingCoordinator = this->scrollingCoordinator()) 2904 scrollingCoordinator->frameViewVisualViewportChanged(*this); 2905 } 2906 2907 auto layoutViewportSize = layoutViewportRect().size(); 2908 if (layoutViewportSize != m_lastLayoutViewportSize) { 2909 if (auto* document = frame().document()) 2910 document->updateViewportUnitsOnResize(); 2911 2912 m_lastLayoutViewportSize = layoutViewportSize; 2913 } 2907 2914 } 2908 2915 … … 2912 2919 updateTiledBackingAdaptiveSizing(); 2913 2920 #endif 2914 2915 if (auto* document = frame().document())2916 document->updateViewportUnitsOnResize();2917 2921 } 2918 2922 … … 5675 5679 FloatSize FrameView::sizeForCSSDynamicViewportUnits() const 5676 5680 { 5677 return unobscuredContentRectIncludingScrollbars().size();5681 return rectForFixedPositionLayout().size(); 5678 5682 } 5679 5683 -
trunk/Source/WebCore/page/FrameView.h
r286119 r286350 923 923 924 924 LayoutPoint m_layoutViewportOrigin; 925 LayoutSize m_lastLayoutViewportSize; 925 926 std::optional<LayoutRect> m_layoutViewportOverrideRect; 926 927 std::optional<LayoutRect> m_visualViewportOverrideRect; // Used when the iOS keyboard is showing. -
trunk/Tools/ChangeLog
r286329 r286350 1 2021-11-30 Devin Rousso <drousso@apple.com> 2 3 [css-values-4] Dynamic `dv*` viewport units should not respect the page scale 4 https://bugs.webkit.org/show_bug.cgi?id=233291 5 6 Reviewed by Simon Fraser. 7 8 * TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.html: 9 * TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm: 10 (evaluateForNumber): 11 (dimensionOfElement): Added. 12 (widthOfElementWithID): Added. 13 (heightOfElementWithID): ADded. 14 (viewportUnitLength): Added. 15 (TEST.CSSViewportUnits.AllSame): 16 (TEST.CSSViewportUnits.EmptyUnobscuredSizeOverrides): 17 (TEST.CSSViewportUnits.SameUnobscuredSizeOverrides): 18 (TEST.CSSViewportUnits.DifferentUnobscuredSizeOverrides): 19 (getElementHeight): Deleted. 20 1 21 2021-11-30 BJ Burg <bburg@apple.com> 2 22 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.html
r284628 r286350 14 14 </head> 15 15 <body> 16 <div id="fixed" style="position: fixed; width: 100%; height: 100%;"></div> 17 16 18 <div id="vw" style="height: 100vw;"></div> 17 19 <div id="vh" style="height: 100vh;"></div> -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm
r285345 r286350 31 31 #import <wtf/RetainPtr.h> 32 32 33 static double evaluateForNumber( WKWebView *webView, NSString *script)33 static double evaluateForNumber(RetainPtr<TestWKWebView>& webView, NSString *script) 34 34 { 35 35 return [(NSNumber *)[webView objectByEvaluatingJavaScript:script] doubleValue]; 36 36 } 37 37 38 static double getElementHeight(WKWebView *webView, NSString *elementID) 39 { 40 return evaluateForNumber(webView, [NSString stringWithFormat:@"document.getElementById('%@').getBoundingClientRect().height", elementID]); 38 static double dimensionOfElement(RetainPtr<TestWKWebView>& webView, NSString *element, NSString *dimension) 39 { 40 return evaluateForNumber(webView, [NSString stringWithFormat:@"%@.getBoundingClientRect().%@", element, dimension]); 41 } 42 43 static double widthOfElementWithID(RetainPtr<TestWKWebView>& webView, NSString *elementID) 44 { 45 return dimensionOfElement(webView, [NSString stringWithFormat:@"document.getElementById('%@')", elementID], @"width"); 46 } 47 48 static double heightOfElementWithID(RetainPtr<TestWKWebView>& webView, NSString *elementID) 49 { 50 return dimensionOfElement(webView, [NSString stringWithFormat:@"document.getElementById('%@')", elementID], @"height"); 51 } 52 53 static double viewportUnitLength(RetainPtr<TestWKWebView>& webView, NSString *viewportUnit) 54 { 55 return heightOfElementWithID(webView, viewportUnit); 41 56 } 42 57 … … 45 60 auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]); 46 61 [webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"]; 47 48 EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"vw")); 49 EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"vh")); 50 EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"vmin")); 51 EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"vmax")); 52 53 EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"svw")); 54 EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"svh")); 55 EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"svmin")); 56 EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"svmax")); 57 58 EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"lvw")); 59 EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"lvh")); 60 EXPECT_FLOAT_EQ(320, getElementHeight(webView.get(), @"lvmin")); 61 EXPECT_FLOAT_EQ(500, getElementHeight(webView.get(), @"lvmax")); 62 63 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvw")); 64 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvh")); 65 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvmin")); 66 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvmax")); 62 [webView waitForNextPresentationUpdate]; 63 64 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vw")); 65 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vh")); 66 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vmin")); 67 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vmax")); 68 69 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svw")); 70 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svh")); 71 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svmin")); 72 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svmax")); 73 74 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvw")); 75 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvh")); 76 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvmin")); 77 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvmax")); 78 79 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw")); 80 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh")); 81 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin")); 82 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax")); 83 84 #if PLATFORM(IOS_FAMILY) 85 [webView scrollView].zoomScale = 2; 86 #elif PLATFORM(MAC) 87 [webView setAllowsMagnification:YES]; 88 [webView setMagnification:2]; 89 #endif 90 [webView waitForNextPresentationUpdate]; 91 92 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vw")); 93 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vh")); 94 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vmin")); 95 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vmax")); 96 97 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svw")); 98 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svh")); 99 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svmin")); 100 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svmax")); 101 102 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvw")); 103 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvh")); 104 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvmin")); 105 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvmax")); 106 107 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw")); 108 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh")); 109 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin")); 110 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax")); 67 111 } 68 112 … … 75 119 maximumUnobscuredSizeOverride:CGSizeZero]; 76 120 [webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"]; 77 78 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"vw")); 79 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"vh")); 80 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"vmin")); 81 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"vmax")); 82 83 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svw")); 84 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svh")); 85 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svmin")); 86 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svmax")); 87 88 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"lvw")); 89 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"lvh")); 90 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"lvmin")); 91 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"lvmax")); 92 93 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvw")); 94 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvh")); 95 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvmin")); 96 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvmax")); 121 [webView waitForNextPresentationUpdate]; 122 123 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vw")); 124 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vh")); 125 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin")); 126 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vmax")); 127 128 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 129 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 130 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 131 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 132 133 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw")); 134 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvh")); 135 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin")); 136 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvmax")); 137 138 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw")); 139 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh")); 140 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin")); 141 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax")); 142 143 [webView scrollView].zoomScale = 2; 144 [webView waitForNextPresentationUpdate]; 145 146 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vw")); 147 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vh")); 148 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin")); 149 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vmax")); 150 151 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 152 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 153 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 154 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 155 156 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw")); 157 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvh")); 158 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin")); 159 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvmax")); 160 161 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw")); 162 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh")); 163 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin")); 164 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax")); 97 165 } 98 166 … … 103 171 maximumUnobscuredSizeOverride:CGSizeMake(10.5, 20.5)]; 104 172 [webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"]; 105 106 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"vw")); 107 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"vh")); 108 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"vmin")); 109 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"vmax")); 110 111 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svw")); 112 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svh")); 113 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svmin")); 114 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svmax")); 115 116 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"lvw")); 117 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"lvh")); 118 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"lvmin")); 119 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"lvmax")); 120 121 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvw")); 122 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvh")); 123 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvmin")); 124 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvmax")); 173 [webView waitForNextPresentationUpdate]; 174 175 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vw")); 176 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vh")); 177 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin")); 178 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vmax")); 179 180 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 181 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 182 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 183 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 184 185 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw")); 186 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvh")); 187 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin")); 188 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvmax")); 189 190 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw")); 191 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh")); 192 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin")); 193 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax")); 194 195 [webView scrollView].zoomScale = 2; 196 [webView waitForNextPresentationUpdate]; 197 198 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vw")); 199 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vh")); 200 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin")); 201 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vmax")); 202 203 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 204 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 205 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 206 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 207 208 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw")); 209 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvh")); 210 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin")); 211 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvmax")); 212 213 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw")); 214 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh")); 215 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin")); 216 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax")); 125 217 } 126 218 … … 131 223 maximumUnobscuredSizeOverride:CGSizeMake(30.5, 40.5)]; 132 224 [webView synchronouslyLoadTestPageNamed:@"CSSViewportUnits"]; 133 134 EXPECT_FLOAT_EQ(30.5, getElementHeight(webView.get(), @"vw")); 135 EXPECT_FLOAT_EQ(40.5, getElementHeight(webView.get(), @"vh")); 136 EXPECT_FLOAT_EQ(30.5, getElementHeight(webView.get(), @"vmin")); 137 EXPECT_FLOAT_EQ(40.5, getElementHeight(webView.get(), @"vmax")); 138 139 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svw")); 140 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svh")); 141 EXPECT_FLOAT_EQ(10.5, getElementHeight(webView.get(), @"svmin")); 142 EXPECT_FLOAT_EQ(20.5, getElementHeight(webView.get(), @"svmax")); 143 144 EXPECT_FLOAT_EQ(30.5, getElementHeight(webView.get(), @"lvw")); 145 EXPECT_FLOAT_EQ(40.5, getElementHeight(webView.get(), @"lvh")); 146 EXPECT_FLOAT_EQ(30.5, getElementHeight(webView.get(), @"lvmin")); 147 EXPECT_FLOAT_EQ(40.5, getElementHeight(webView.get(), @"lvmax")); 148 149 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvw")); 150 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvh")); 151 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerWidth"), getElementHeight(webView.get(), @"dvmin")); 152 EXPECT_FLOAT_EQ(evaluateForNumber(webView.get(), @"window.innerHeight"), getElementHeight(webView.get(), @"dvmax")); 225 [webView waitForNextPresentationUpdate]; 226 227 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vw")); 228 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vh")); 229 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vmin")); 230 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vmax")); 231 232 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 233 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 234 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 235 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 236 237 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw")); 238 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvh")); 239 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvmin")); 240 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvmax")); 241 242 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw")); 243 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh")); 244 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin")); 245 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax")); 246 247 [webView scrollView].zoomScale = 2; 248 [webView waitForNextPresentationUpdate]; 249 250 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vw")); 251 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vh")); 252 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vmin")); 253 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vmax")); 254 255 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 256 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 257 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 258 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 259 260 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw")); 261 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvh")); 262 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvmin")); 263 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvmax")); 264 265 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvw")); 266 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvh")); 267 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmin")); 268 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), viewportUnitLength(webView, @"dvmax")); 153 269 } 154 270
Note: See TracChangeset
for help on using the changeset viewer.