Changeset 286458 in webkit
- Timestamp:
- Dec 2, 2021 3:26:22 PM (8 months ago)
- Location:
- trunk
- Files:
-
- 1 added
- 14 edited
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/css/CSSPrimitiveValue.cpp (modified) (24 diffs)
-
Source/WebCore/css/CSSPrimitiveValue.h (modified) (1 diff)
-
Source/WebCore/css/CSSUnits.cpp (modified) (1 diff)
-
Source/WebCore/css/CSSUnits.h (modified) (1 diff)
-
Source/WebCore/css/calc/CSSCalcCategoryMapping.cpp (modified) (3 diffs)
-
Source/WebCore/css/parser/CSSParserToken.cpp (modified) (4 diffs)
-
Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp (modified) (1 diff)
-
Source/WebInspectorUI/ChangeLog (modified) (1 diff)
-
Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js (modified) (3 diffs)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (modified) (4 diffs)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.html (modified) (4 diffs)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm (modified) (18 diffs)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.svg (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r286456 r286458 1 2021-12-02 Devin Rousso <drousso@apple.com> 2 3 [css-values-4] Support `*vi` (inline) and `*vb` (block) viewport units 4 https://bugs.webkit.org/show_bug.cgi?id=232895 5 <rdar://problem/85179134> 6 7 Reviewed by Simon Fraser. 8 9 `*vi` is equal to 1% of the size of the UA-default/large/small/dynamic viewport size in the direction of the root element’s inline axis. 10 `*vb` is equal to 1% of the size of the initial containing block UA-default/small/large/dynamic viewport size in the direction of the root element’s block axis. 11 As an example, on `about:blank`: 12 - `vi` would be equal to `vw` 13 - `vb` would be equal to `vh` 14 - `svi` would be equal to `svw` 15 - `svb` would be equal to `svh` 16 - `lvi` would be equal to `lvw` 17 - `lvb` would be equal to `lvh` 18 - `dvi` would be equal to `dvw` 19 - `dvb` would be equal to `dvh` 20 21 Spec: <https://drafts.csswg.org/css-values-4/#viewport-variants> 22 23 Tests: CSSViewportUnits.AllSame 24 CSSViewportUnits.EmptyUnobscuredSizeOverrides 25 CSSViewportUnits.SameUnobscuredSizeOverrides 26 CSSViewportUnits.DifferentUnobscuredSizeOverrides 27 CSSViewportUnits.SVGDocument 28 29 * css/CSSUnits.h: 30 * css/CSSUnits.cpp: 31 (WebCore::operator<<): 32 * css/CSSPrimitiveValue.h: 33 (WebCore::CSSPrimitiveValue::isViewportPercentageLength): 34 * css/CSSPrimitiveValue.cpp: 35 (WebCore::isValidCSSUnitTypeForDoubleConversion): 36 (WebCore::isStringType): 37 (WebCore::CSSPrimitiveValue::cleanup): 38 (WebCore::lengthOfViewportPhysicalAxisForLogicalAxis): Added. 39 (WebCore::CSSPrimitiveValue::computeUnzoomedNonCalcLengthDouble): 40 (WebCore::CSSPrimitiveValue::computeNonCalcLengthDouble): 41 (WebCore::CSSPrimitiveValue::unitTypeString): 42 (WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const): 43 (WebCore::CSSPrimitiveValue::equals const): 44 * css/parser/CSSParserToken.cpp: 45 (WebCore::cssPrimitiveValueUnitFromTrie): 46 * css/parser/CSSPropertyParserHelpers.cpp: 47 (WebCore::CSSPropertyParserHelpers::consumeLengthRawWithKnownTokenTypeDimension): 48 * css/calc/CSSCalcCategoryMapping.cpp: 49 (WebCore::calcUnitCategory): 50 (WebCore::calculationCategoryForCombination): 51 (WebCore::hasDoubleValue): 52 1 53 2021-12-02 Chris Dumez <cdumez@apple.com> 2 54 -
trunk/Source/WebCore/css/CSSPrimitiveValue.cpp
r285709 r286458 40 40 #include "FontCascade.h" 41 41 #include "Length.h" 42 #include "Node .h"42 #include "NodeRenderStyle.h" 43 43 #include "Pair.h" 44 44 #include "Rect.h" … … 63 63 case CSSUnitType::CSS_DEG: 64 64 case CSSUnitType::CSS_DIMENSION: 65 case CSSUnitType::CSS_DVB: 65 66 case CSSUnitType::CSS_DVH: 67 case CSSUnitType::CSS_DVI: 66 68 case CSSUnitType::CSS_DVMAX: 67 69 case CSSUnitType::CSS_DVMIN: … … 83 85 case CSSUnitType::CSS_Q: 84 86 case CSSUnitType::CSS_LHS: 87 case CSSUnitType::CSS_LVB: 85 88 case CSSUnitType::CSS_LVH: 89 case CSSUnitType::CSS_LVI: 86 90 case CSSUnitType::CSS_LVMAX: 87 91 case CSSUnitType::CSS_LVMIN: … … 92 96 case CSSUnitType::CSS_REMS: 93 97 case CSSUnitType::CSS_S: 98 case CSSUnitType::CSS_SVB: 94 99 case CSSUnitType::CSS_SVH: 100 case CSSUnitType::CSS_SVI: 95 101 case CSSUnitType::CSS_SVMAX: 96 102 case CSSUnitType::CSS_SVMIN: 97 103 case CSSUnitType::CSS_SVW: 98 104 case CSSUnitType::CSS_TURN: 105 case CSSUnitType::CSS_VB: 99 106 case CSSUnitType::CSS_VH: 107 case CSSUnitType::CSS_VI: 100 108 case CSSUnitType::CSS_VMAX: 101 109 case CSSUnitType::CSS_VMIN: … … 154 162 case CSSUnitType::CSS_DPI: 155 163 case CSSUnitType::CSS_DPPX: 164 case CSSUnitType::CSS_DVB: 156 165 case CSSUnitType::CSS_DVH: 166 case CSSUnitType::CSS_DVI: 157 167 case CSSUnitType::CSS_DVMAX: 158 168 case CSSUnitType::CSS_DVMIN: … … 168 178 case CSSUnitType::CSS_IN: 169 179 case CSSUnitType::CSS_KHZ: 180 case CSSUnitType::CSS_LVB: 170 181 case CSSUnitType::CSS_LVH: 182 case CSSUnitType::CSS_LVI: 171 183 case CSSUnitType::CSS_LVMAX: 172 184 case CSSUnitType::CSS_LVMIN: … … 191 203 case CSSUnitType::CSS_RGBCOLOR: 192 204 case CSSUnitType::CSS_S: 205 case CSSUnitType::CSS_SVB: 193 206 case CSSUnitType::CSS_SVH: 207 case CSSUnitType::CSS_SVI: 194 208 case CSSUnitType::CSS_SVMAX: 195 209 case CSSUnitType::CSS_SVMIN: … … 200 214 case CSSUnitType::CSS_UNKNOWN: 201 215 case CSSUnitType::CSS_VALUE_ID: 216 case CSSUnitType::CSS_VB: 202 217 case CSSUnitType::CSS_VH: 218 case CSSUnitType::CSS_VI: 203 219 case CSSUnitType::CSS_VMAX: 204 220 case CSSUnitType::CSS_VMIN: … … 555 571 case CSSUnitType::CSS_VMIN: 556 572 case CSSUnitType::CSS_VMAX: 573 case CSSUnitType::CSS_VB: 574 case CSSUnitType::CSS_VI: 557 575 case CSSUnitType::CSS_SVW: 558 576 case CSSUnitType::CSS_SVH: 559 577 case CSSUnitType::CSS_SVMIN: 560 578 case CSSUnitType::CSS_SVMAX: 579 case CSSUnitType::CSS_SVB: 580 case CSSUnitType::CSS_SVI: 561 581 case CSSUnitType::CSS_LVW: 562 582 case CSSUnitType::CSS_LVH: 563 583 case CSSUnitType::CSS_LVMIN: 564 584 case CSSUnitType::CSS_LVMAX: 585 case CSSUnitType::CSS_LVB: 586 case CSSUnitType::CSS_LVI: 565 587 case CSSUnitType::CSS_DVW: 566 588 case CSSUnitType::CSS_DVH: 567 589 case CSSUnitType::CSS_DVMIN: 568 590 case CSSUnitType::CSS_DVMAX: 591 case CSSUnitType::CSS_DVB: 592 case CSSUnitType::CSS_DVI: 569 593 case CSSUnitType::CSS_DPPX: 570 594 case CSSUnitType::CSS_X: … … 648 672 static constexpr double cmPerInch = 2.54; 649 673 static constexpr double QPerInch = 25.4 * 4.0; 674 675 static double lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis logicalAxis, const FloatSize& size, const RenderStyle* rootElementStyle) 676 { 677 if (!rootElementStyle) 678 return 0; 679 680 switch (mapLogicalAxisToPhysicalAxis(makeTextFlow(rootElementStyle->writingMode(), rootElementStyle->direction()), logicalAxis)) { 681 case BoxAxis::Horizontal: 682 return size.width(); 683 684 case BoxAxis::Vertical: 685 return size.height(); 686 } 687 688 ASSERT_NOT_REACHED(); 689 } 690 691 static double lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis logicalAxis, const FloatSize& size, const RenderView& renderView) 692 { 693 const auto* rootElement = renderView.document().documentElement(); 694 if (!rootElement) 695 return 0; 696 697 return lengthOfViewportPhysicalAxisForLogicalAxis(logicalAxis, size, rootElement->renderStyle()); 698 } 650 699 651 700 double CSSPrimitiveValue::computeUnzoomedNonCalcLengthDouble(CSSUnitType primitiveType, double value, CSSPropertyID propertyToCompute, const FontMetrics* fontMetrics, const FontCascadeDescription* fontDescription, const FontCascadeDescription* rootFontDescription, const RenderView* renderView) … … 703 752 case CSSUnitType::CSS_VMIN: 704 753 return renderView ? renderView->sizeForCSSDefaultViewportUnits().minDimension() / 100.0 * value : value; 754 case CSSUnitType::CSS_VB: 755 return renderView ? lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Block, renderView->sizeForCSSDefaultViewportUnits(), *renderView) / 100.0 * value : 0; 756 case CSSUnitType::CSS_VI: 757 return renderView ? lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Inline, renderView->sizeForCSSDefaultViewportUnits(), *renderView) / 100.0 * value : 0; 705 758 case CSSUnitType::CSS_SVH: 706 759 return renderView ? renderView->sizeForCSSSmallViewportUnits().height() / 100.0 * value : 0; … … 711 764 case CSSUnitType::CSS_SVMIN: 712 765 return renderView ? renderView->sizeForCSSSmallViewportUnits().minDimension() / 100.0 * value : value; 766 case CSSUnitType::CSS_SVB: 767 return renderView ? lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Block, renderView->sizeForCSSSmallViewportUnits(), *renderView) / 100.0 * value : 0; 768 case CSSUnitType::CSS_SVI: 769 return renderView ? lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Inline, renderView->sizeForCSSSmallViewportUnits(), *renderView) / 100.0 * value : 0; 713 770 case CSSUnitType::CSS_LVH: 714 771 return renderView ? renderView->sizeForCSSLargeViewportUnits().height() / 100.0 * value : 0; … … 719 776 case CSSUnitType::CSS_LVMIN: 720 777 return renderView ? renderView->sizeForCSSLargeViewportUnits().minDimension() / 100.0 * value : value; 778 case CSSUnitType::CSS_LVB: 779 return renderView ? lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Block, renderView->sizeForCSSLargeViewportUnits(), *renderView) / 100.0 * value : 0; 780 case CSSUnitType::CSS_LVI: 781 return renderView ? lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Inline, renderView->sizeForCSSLargeViewportUnits(), *renderView) / 100.0 * value : 0; 721 782 case CSSUnitType::CSS_DVH: 722 783 return renderView ? renderView->sizeForCSSDynamicViewportUnits().height() / 100.0 * value : 0; … … 727 788 case CSSUnitType::CSS_DVMIN: 728 789 return renderView ? renderView->sizeForCSSDynamicViewportUnits().minDimension() / 100.0 * value : value; 790 case CSSUnitType::CSS_DVB: 791 return renderView ? lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Block, renderView->sizeForCSSDynamicViewportUnits(), *renderView) / 100.0 * value : 0; 792 case CSSUnitType::CSS_DVI: 793 return renderView ? lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Inline, renderView->sizeForCSSDynamicViewportUnits(), *renderView) / 100.0 * value : 0; 729 794 default: 730 795 ASSERT_NOT_REACHED(); … … 784 849 return value * conversionData.defaultViewportFactor().minDimension(); 785 850 851 case CSSUnitType::CSS_VB: 852 return value * lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Block, conversionData.defaultViewportFactor(), conversionData.rootStyle()); 853 854 case CSSUnitType::CSS_VI: 855 return value * lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Inline, conversionData.defaultViewportFactor(), conversionData.rootStyle()); 856 786 857 case CSSUnitType::CSS_SVH: 787 858 return value * conversionData.smallViewportFactor().height(); … … 796 867 return value * conversionData.smallViewportFactor().minDimension(); 797 868 869 case CSSUnitType::CSS_SVB: 870 return value * lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Block, conversionData.smallViewportFactor(), conversionData.rootStyle()); 871 872 case CSSUnitType::CSS_SVI: 873 return value * lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Inline, conversionData.smallViewportFactor(), conversionData.rootStyle()); 874 798 875 case CSSUnitType::CSS_LVH: 799 876 return value * conversionData.largeViewportFactor().height(); … … 808 885 return value * conversionData.largeViewportFactor().minDimension(); 809 886 887 case CSSUnitType::CSS_LVB: 888 return value * lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Block, conversionData.largeViewportFactor(), conversionData.rootStyle()); 889 890 case CSSUnitType::CSS_LVI: 891 return value * lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Inline, conversionData.largeViewportFactor(), conversionData.rootStyle()); 892 810 893 case CSSUnitType::CSS_DVH: 811 894 return value * conversionData.dynamicViewportFactor().height(); … … 819 902 case CSSUnitType::CSS_DVMIN: 820 903 return value * conversionData.dynamicViewportFactor().minDimension(); 904 905 case CSSUnitType::CSS_DVB: 906 return value * lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Block, conversionData.dynamicViewportFactor(), conversionData.rootStyle()); 907 908 case CSSUnitType::CSS_DVI: 909 return value * lengthOfViewportPhysicalAxisForLogicalAxis(LogicalBoxAxis::Inline, conversionData.dynamicViewportFactor(), conversionData.rootStyle()); 821 910 822 911 case CSSUnitType::CSS_LHS: … … 1087 1176 case CSSUnitType::CSS_VMIN: return "vmin"; 1088 1177 case CSSUnitType::CSS_VMAX: return "vmax"; 1178 case CSSUnitType::CSS_VB: return "vb"; 1179 case CSSUnitType::CSS_VI: return "vi"; 1089 1180 case CSSUnitType::CSS_SVW: return "svw"; 1090 1181 case CSSUnitType::CSS_SVH: return "svh"; 1091 1182 case CSSUnitType::CSS_SVMIN: return "svmin"; 1092 1183 case CSSUnitType::CSS_SVMAX: return "svmax"; 1184 case CSSUnitType::CSS_SVB: return "svb"; 1185 case CSSUnitType::CSS_SVI: return "svi"; 1093 1186 case CSSUnitType::CSS_LVW: return "lvw"; 1094 1187 case CSSUnitType::CSS_LVH: return "lvh"; 1095 1188 case CSSUnitType::CSS_LVMIN: return "lvmin"; 1096 1189 case CSSUnitType::CSS_LVMAX: return "lvmax"; 1190 case CSSUnitType::CSS_LVB: return "lvb"; 1191 case CSSUnitType::CSS_LVI: return "lvi"; 1097 1192 case CSSUnitType::CSS_DVW: return "dvw"; 1098 1193 case CSSUnitType::CSS_DVH: return "dvh"; 1099 1194 case CSSUnitType::CSS_DVMIN: return "dvmin"; 1100 1195 case CSSUnitType::CSS_DVMAX: return "dvmax"; 1196 case CSSUnitType::CSS_DVB: return "dvb"; 1197 case CSSUnitType::CSS_DVI: return "dvi"; 1101 1198 case CSSUnitType::CSS_DPPX: return "dppx"; 1102 1199 case CSSUnitType::CSS_X: return "x"; … … 1261 1358 case CSSUnitType::CSS_VMAX: 1262 1359 return formatNumberValue("vmax"); 1360 case CSSUnitType::CSS_VB: 1361 return formatNumberValue("vb"); 1362 case CSSUnitType::CSS_VI: 1363 return formatNumberValue("vi"); 1263 1364 case CSSUnitType::CSS_SVW: 1264 1365 return formatNumberValue("svw"); … … 1269 1370 case CSSUnitType::CSS_SVMAX: 1270 1371 return formatNumberValue("svmax"); 1372 case CSSUnitType::CSS_SVB: 1373 return formatNumberValue("svb"); 1374 case CSSUnitType::CSS_SVI: 1375 return formatNumberValue("svi"); 1271 1376 case CSSUnitType::CSS_LVW: 1272 1377 return formatNumberValue("lvw"); … … 1277 1382 case CSSUnitType::CSS_LVMAX: 1278 1383 return formatNumberValue("lvmax"); 1384 case CSSUnitType::CSS_LVB: 1385 return formatNumberValue("lvb"); 1386 case CSSUnitType::CSS_LVI: 1387 return formatNumberValue("lvi"); 1279 1388 case CSSUnitType::CSS_DVW: 1280 1389 return formatNumberValue("dvw"); … … 1285 1394 case CSSUnitType::CSS_DVMAX: 1286 1395 return formatNumberValue("dvmax"); 1396 case CSSUnitType::CSS_DVB: 1397 return formatNumberValue("dvb"); 1398 case CSSUnitType::CSS_DVI: 1399 return formatNumberValue("dvi"); 1287 1400 case CSSUnitType::CSS_IDENT: 1288 1401 case CSSUnitType::CSS_UNICODE_RANGE: … … 1352 1465 case CSSUnitType::CSS_VMIN: 1353 1466 case CSSUnitType::CSS_VMAX: 1467 case CSSUnitType::CSS_VB: 1468 case CSSUnitType::CSS_VI: 1354 1469 case CSSUnitType::CSS_SVW: 1355 1470 case CSSUnitType::CSS_SVH: 1356 1471 case CSSUnitType::CSS_SVMIN: 1357 1472 case CSSUnitType::CSS_SVMAX: 1473 case CSSUnitType::CSS_SVB: 1474 case CSSUnitType::CSS_SVI: 1358 1475 case CSSUnitType::CSS_LVW: 1359 1476 case CSSUnitType::CSS_LVH: 1360 1477 case CSSUnitType::CSS_LVMIN: 1361 1478 case CSSUnitType::CSS_LVMAX: 1479 case CSSUnitType::CSS_LVB: 1480 case CSSUnitType::CSS_LVI: 1362 1481 case CSSUnitType::CSS_DVW: 1363 1482 case CSSUnitType::CSS_DVH: 1364 1483 case CSSUnitType::CSS_DVMIN: 1365 1484 case CSSUnitType::CSS_DVMAX: 1485 case CSSUnitType::CSS_DVB: 1486 case CSSUnitType::CSS_DVI: 1366 1487 case CSSUnitType::CSS_FR: 1367 1488 case CSSUnitType::CSS_Q: -
trunk/Source/WebCore/css/CSSPrimitiveValue.h
r285624 r286458 323 323 constexpr bool CSSPrimitiveValue::isViewportPercentageLength(CSSUnitType type) 324 324 { 325 return type >= CSSUnitType:: CSS_VW && type <= CSSUnitType::CSS_DVMAX;325 return type >= CSSUnitType::FirstViewportCSSUnitType && type <= CSSUnitType::LastViewporCSSUnitType; 326 326 } 327 327 -
trunk/Source/WebCore/css/CSSUnits.cpp
r284628 r286458 139 139 case CSSUnitType::CSS_VMIN: ts << "vmin"; break; 140 140 case CSSUnitType::CSS_VMAX: ts << "vmax"; break; 141 case CSSUnitType::CSS_VB: ts << "vb"; break; 142 case CSSUnitType::CSS_VI: ts << "vi"; break; 141 143 case CSSUnitType::CSS_SVW: ts << "svw"; break; 142 144 case CSSUnitType::CSS_SVH: ts << "svh"; break; 143 145 case CSSUnitType::CSS_SVMIN: ts << "svmin"; break; 144 146 case CSSUnitType::CSS_SVMAX: ts << "svmax"; break; 147 case CSSUnitType::CSS_SVB: ts << "svb"; break; 148 case CSSUnitType::CSS_SVI: ts << "svi"; break; 145 149 case CSSUnitType::CSS_LVW: ts << "lvw"; break; 146 150 case CSSUnitType::CSS_LVH: ts << "lvh"; break; 147 151 case CSSUnitType::CSS_LVMIN: ts << "lvmin"; break; 148 152 case CSSUnitType::CSS_LVMAX: ts << "lvmax"; break; 153 case CSSUnitType::CSS_LVB: ts << "lvb"; break; 154 case CSSUnitType::CSS_LVI: ts << "lvi"; break; 149 155 case CSSUnitType::CSS_DVW: ts << "dvw"; break; 150 156 case CSSUnitType::CSS_DVH: ts << "dvh"; break; 151 157 case CSSUnitType::CSS_DVMIN: ts << "dvmin"; break; 152 158 case CSSUnitType::CSS_DVMAX: ts << "dvmax"; break; 159 case CSSUnitType::CSS_DVB: ts << "dvb"; break; 160 case CSSUnitType::CSS_DVI: ts << "dvi"; break; 153 161 case CSSUnitType::CSS_DPPX: ts << "dppx"; break; 154 162 case CSSUnitType::CSS_X: ts << "x"; break; -
trunk/Source/WebCore/css/CSSUnits.h
r284628 r286458 56 56 CSS_RECT, 57 57 CSS_RGBCOLOR, 58 58 59 CSS_VW, 59 60 CSS_VH, 60 61 CSS_VMIN, 61 62 CSS_VMAX, 63 CSS_VB, 64 CSS_VI, 62 65 CSS_SVW, 63 66 CSS_SVH, 64 67 CSS_SVMIN, 65 68 CSS_SVMAX, 69 CSS_SVB, 70 CSS_SVI, 66 71 CSS_LVW, 67 72 CSS_LVH, 68 73 CSS_LVMIN, 69 74 CSS_LVMAX, 75 CSS_LVB, 76 CSS_LVI, 70 77 CSS_DVW, 71 78 CSS_DVH, 72 79 CSS_DVMIN, 73 80 CSS_DVMAX, 81 CSS_DVB, 82 CSS_DVI, 83 FirstViewportCSSUnitType = CSS_VW, 84 LastViewporCSSUnitType = CSS_DVI, 85 74 86 CSS_DPPX, 75 87 CSS_X, -
trunk/Source/WebCore/css/calc/CSSCalcCategoryMapping.cpp
r284628 r286458 55 55 case CSSUnitType::CSS_VMIN: 56 56 case CSSUnitType::CSS_VMAX: 57 case CSSUnitType::CSS_VB: 58 case CSSUnitType::CSS_VI: 57 59 case CSSUnitType::CSS_SVW: 58 60 case CSSUnitType::CSS_SVH: 59 61 case CSSUnitType::CSS_SVMIN: 60 62 case CSSUnitType::CSS_SVMAX: 63 case CSSUnitType::CSS_SVB: 64 case CSSUnitType::CSS_SVI: 61 65 case CSSUnitType::CSS_LVW: 62 66 case CSSUnitType::CSS_LVH: 63 67 case CSSUnitType::CSS_LVMIN: 64 68 case CSSUnitType::CSS_LVMAX: 69 case CSSUnitType::CSS_LVB: 70 case CSSUnitType::CSS_LVI: 65 71 case CSSUnitType::CSS_DVW: 66 72 case CSSUnitType::CSS_DVH: 67 73 case CSSUnitType::CSS_DVMIN: 68 74 case CSSUnitType::CSS_DVMAX: 75 case CSSUnitType::CSS_DVB: 76 case CSSUnitType::CSS_DVI: 69 77 return CalculationCategory::Length; 70 78 case CSSUnitType::CSS_PERCENTAGE: … … 123 131 case CSSUnitType::CSS_VMIN: 124 132 case CSSUnitType::CSS_VMAX: 133 case CSSUnitType::CSS_VB: 134 case CSSUnitType::CSS_VI: 125 135 case CSSUnitType::CSS_SVW: 126 136 case CSSUnitType::CSS_SVH: 127 137 case CSSUnitType::CSS_SVMIN: 128 138 case CSSUnitType::CSS_SVMAX: 139 case CSSUnitType::CSS_SVB: 140 case CSSUnitType::CSS_SVI: 129 141 case CSSUnitType::CSS_LVW: 130 142 case CSSUnitType::CSS_LVH: 131 143 case CSSUnitType::CSS_LVMIN: 132 144 case CSSUnitType::CSS_LVMAX: 145 case CSSUnitType::CSS_LVB: 146 case CSSUnitType::CSS_LVI: 133 147 case CSSUnitType::CSS_DVW: 134 148 case CSSUnitType::CSS_DVH: 135 149 case CSSUnitType::CSS_DVMIN: 136 150 case CSSUnitType::CSS_DVMAX: 151 case CSSUnitType::CSS_DVB: 152 case CSSUnitType::CSS_DVI: 137 153 default: 138 154 return CalculationCategory::Other; … … 187 203 case CSSUnitType::CSS_VMIN: 188 204 case CSSUnitType::CSS_VMAX: 205 case CSSUnitType::CSS_VB: 206 case CSSUnitType::CSS_VI: 189 207 case CSSUnitType::CSS_SVW: 190 208 case CSSUnitType::CSS_SVH: 191 209 case CSSUnitType::CSS_SVMIN: 192 210 case CSSUnitType::CSS_SVMAX: 211 case CSSUnitType::CSS_SVB: 212 case CSSUnitType::CSS_SVI: 193 213 case CSSUnitType::CSS_LVW: 194 214 case CSSUnitType::CSS_LVH: 195 215 case CSSUnitType::CSS_LVMIN: 196 216 case CSSUnitType::CSS_LVMAX: 217 case CSSUnitType::CSS_LVB: 218 case CSSUnitType::CSS_LVI: 197 219 case CSSUnitType::CSS_DVW: 198 220 case CSSUnitType::CSS_DVH: 199 221 case CSSUnitType::CSS_DVMIN: 200 222 case CSSUnitType::CSS_DVMAX: 223 case CSSUnitType::CSS_DVB: 224 case CSSUnitType::CSS_DVI: 201 225 case CSSUnitType::CSS_DPPX: 202 226 case CSSUnitType::CSS_X: -
trunk/Source/WebCore/css/parser/CSSParserToken.cpp
r284628 r286458 115 115 case 'v': 116 116 switch (toASCIILower(data[1])) { 117 case 'b': 118 return CSSUnitType::CSS_VB; 117 119 case 'h': 118 120 return CSSUnitType::CSS_VH; 121 case 'i': 122 return CSSUnitType::CSS_VI; 119 123 case 'w': 120 124 return CSSUnitType::CSS_VW; … … 137 141 case 'v': 138 142 switch (toASCIILower(data[2])) { 143 case 'b': 144 return CSSUnitType::CSS_DVB; 139 145 case 'h': 140 146 return CSSUnitType::CSS_DVH; 147 case 'i': 148 return CSSUnitType::CSS_DVI; 141 149 case 'w': 142 150 return CSSUnitType::CSS_DVW; … … 148 156 if (toASCIILower(data[1]) == 'v') { 149 157 switch (toASCIILower(data[2])) { 158 case 'b': 159 return CSSUnitType::CSS_LVB; 150 160 case 'h': 151 161 return CSSUnitType::CSS_LVH; 162 case 'i': 163 return CSSUnitType::CSS_LVI; 152 164 case 'w': 153 165 return CSSUnitType::CSS_LVW; … … 178 190 if (toASCIILower(data[1]) == 'v') { 179 191 switch (toASCIILower(data[2])) { 192 case 'b': 193 return CSSUnitType::CSS_SVB; 180 194 case 'h': 181 195 return CSSUnitType::CSS_SVH; 196 case 'i': 197 return CSSUnitType::CSS_SVI; 182 198 case 'w': 183 199 return CSSUnitType::CSS_SVW; -
trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp
r286196 r286458 489 489 case CSSUnitType::CSS_VMIN: 490 490 case CSSUnitType::CSS_VMAX: 491 case CSSUnitType::CSS_VB: 492 case CSSUnitType::CSS_VI: 491 493 case CSSUnitType::CSS_SVW: 492 494 case CSSUnitType::CSS_SVH: 493 495 case CSSUnitType::CSS_SVMIN: 494 496 case CSSUnitType::CSS_SVMAX: 497 case CSSUnitType::CSS_SVB: 498 case CSSUnitType::CSS_SVI: 495 499 case CSSUnitType::CSS_LVW: 496 500 case CSSUnitType::CSS_LVH: 497 501 case CSSUnitType::CSS_LVMIN: 498 502 case CSSUnitType::CSS_LVMAX: 503 case CSSUnitType::CSS_LVB: 504 case CSSUnitType::CSS_LVI: 499 505 case CSSUnitType::CSS_DVW: 500 506 case CSSUnitType::CSS_DVH: 501 507 case CSSUnitType::CSS_DVMIN: 502 508 case CSSUnitType::CSS_DVMAX: 509 case CSSUnitType::CSS_DVB: 510 case CSSUnitType::CSS_DVI: 503 511 case CSSUnitType::CSS_Q: 504 512 break; -
trunk/Source/WebInspectorUI/ChangeLog
r286412 r286458 1 2021-12-02 Devin Rousso <drousso@apple.com> 2 3 [css-values-4] Support `*vi` (inline) and `*vb` (block) viewport units 4 https://bugs.webkit.org/show_bug.cgi?id=232895 5 <rdar://problem/85179134> 6 7 Reviewed by Simon Fraser. 8 9 * UserInterface/Models/CSSCompletions.js: 10 1 11 2021-12-01 Patrick Angle <pangle@apple.com> 2 12 -
trunk/Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js
r284628 r286458 344 344 "ch", 345 345 "cm", 346 "dvb", 346 347 "dvh", 348 "dvi", 347 349 "dvmax", 348 350 "dvmin", … … 351 353 "ex", 352 354 "in", 355 "lvb", 353 356 "lvh", 357 "lvi", 354 358 "lvmax", 355 359 "lvmin", … … 361 365 "q", 362 366 "rem", 367 "svb", 363 368 "svh", 369 "svi", 364 370 "svmax", 365 371 "svmin", 366 372 "svw", 373 "vb", 367 374 "vh", 375 "vi", 368 376 "vmax", 369 377 "vmin", -
trunk/Tools/ChangeLog
r286455 r286458 1 2021-12-02 Devin Rousso <drousso@apple.com> 2 3 [css-values-4] Support `*vi` (inline) and `*vb` (block) viewport units 4 https://bugs.webkit.org/show_bug.cgi?id=232895 5 <rdar://problem/85179134> 6 7 Reviewed by Simon Fraser. 8 9 * TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.html: 10 * TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.svg: Added. 11 * TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm: 12 (TEST.CSSViewportUnits.AllSame): 13 (TEST.CSSViewportUnits.EmptyUnobscuredSizeOverrides): 14 (TEST.CSSViewportUnits.SameUnobscuredSizeOverrides): 15 (TEST.CSSViewportUnits.DifferentUnobscuredSizeOverrides): 16 (TEST.CSSViewportUnits.SVGDocument): Added. 17 18 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 19 1 20 2021-12-02 Chris Dumez <cdumez@apple.com> 2 21 -
trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r286455 r286458 764 764 93FCDB34263631560046DD7D /* SortedArrayMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93FCDB33263631560046DD7D /* SortedArrayMap.cpp */; }; 765 765 952F7167270BD9CB00D00DCC /* CSSViewportUnits.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 952F7166270BD99700D00DCC /* CSSViewportUnits.html */; }; 766 952F7167270BD9CB00D00DCD /* CSSViewportUnits.svg in Copy Resources */ = {isa = PBXBuildFile; fileRef = 952F7166270BD99700D00DCD /* CSSViewportUnits.svg */; }; 766 767 996EDCCB270E70D7006DF175 /* InspectorExtension-basic-page.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 996EDCCA270E70AB006DF175 /* InspectorExtension-basic-page.html */; }; 767 768 9984FACE1CFFB090008D198C /* editable-body.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9984FACD1CFFB038008D198C /* editable-body.html */; }; … … 1270 1271 4995A6F025E8772000E5F0A9 /* csp-document-uri-report.html in Copy Resources */, 1271 1272 952F7167270BD9CB00D00DCC /* CSSViewportUnits.html in Copy Resources */, 1273 952F7167270BD9CB00D00DCD /* CSSViewportUnits.svg in Copy Resources */, 1272 1274 2DDD4DA4270B8B3500659A61 /* cube.usdz in Copy Resources */, 1273 1275 F4AB578A1F65165400DB0DA1 /* custom-draggable-div.html in Copy Resources */, … … 2509 2511 952F7164270BD97E00D00DCC /* CSSViewportUnits.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CSSViewportUnits.mm; sourceTree = "<group>"; }; 2510 2512 952F7166270BD99700D00DCC /* CSSViewportUnits.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = CSSViewportUnits.html; sourceTree = "<group>"; }; 2513 952F7166270BD99700D00DCD /* CSSViewportUnits.svg */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = CSSViewportUnits.svg; sourceTree = "<group>"; }; 2511 2514 953ABB3425C0D681004C8B73 /* WKWebViewUnderPageBackgroundColor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKWebViewUnderPageBackgroundColor.mm; sourceTree = "<group>"; }; 2512 2515 958B70E026C46EDC00B2022B /* NSAttributedStringWebKitAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NSAttributedStringWebKitAdditions.mm; sourceTree = "<group>"; }; … … 3990 3993 4995A6EF25E876A300E5F0A9 /* csp-document-uri-report.html */, 3991 3994 952F7166270BD99700D00DCC /* CSSViewportUnits.html */, 3995 952F7166270BD99700D00DCD /* CSSViewportUnits.svg */, 3992 3996 F4AB57891F65164B00DB0DA1 /* custom-draggable-div.html */, 3993 3997 F47DFB2421A8704A00021FB6 /* data-detectors.html */, -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.html
r286350 r286458 20 20 <div id="vmin" style="height: 100vmin;"></div> 21 21 <div id="vmax" style="height: 100vmax;"></div> 22 <div id="vb" style="height: 100vb;"></div> 23 <div id="vi" style="height: 100vi;"></div> 22 24 23 25 <div id="svw" style="height: 100svw;"></div> … … 25 27 <div id="svmin" style="height: 100svmin;"></div> 26 28 <div id="svmax" style="height: 100svmax;"></div> 29 <div id="svb" style="height: 100svb;"></div> 30 <div id="svi" style="height: 100svi;"></div> 27 31 28 32 <div id="lvw" style="height: 100lvw;"></div> … … 30 34 <div id="lvmin" style="height: 100lvmin;"></div> 31 35 <div id="lvmax" style="height: 100lvmax;"></div> 36 <div id="lvb" style="height: 100lvb;"></div> 37 <div id="lvi" style="height: 100lvi;"></div> 32 38 33 39 <div id="dvw" style="height: 100dvw;"></div> … … 35 41 <div id="dvmin" style="height: 100dvmin;"></div> 36 42 <div id="dvmax" style="height: 100dvmax;"></div> 43 <div id="dvb" style="height: 100dvb;"></div> 44 <div id="dvi" style="height: 100dvi;"></div> 37 45 </body> -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/CSSViewportUnits.mm
r286350 r286458 66 66 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vmin")); 67 67 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vmax")); 68 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vb")); 69 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vi")); 68 70 69 71 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svw")); … … 71 73 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svmin")); 72 74 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svmax")); 75 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svb")); 76 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svi")); 73 77 74 78 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvw")); … … 76 80 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvmin")); 77 81 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")); 82 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvb")); 83 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvi")); 84 85 { 86 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 87 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 88 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 89 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 90 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 91 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 92 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvb")); 93 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvi")); 94 } 83 95 84 96 #if PLATFORM(IOS_FAMILY) … … 94 106 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vmin")); 95 107 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vmax")); 108 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vb")); 109 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vi")); 96 110 97 111 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svw")); … … 99 113 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svmin")); 100 114 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svmax")); 115 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svb")); 116 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svi")); 101 117 102 118 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvw")); … … 104 120 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvmin")); 105 121 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")); 122 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvb")); 123 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvi")); 124 125 { 126 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 127 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 128 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 129 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 130 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 131 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 132 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvb")); 133 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvi")); 134 } 135 136 [webView objectByEvaluatingJavaScript:@"document.documentElement.style.writingMode = 'vertical-lr'"]; 137 [webView waitForNextPresentationUpdate]; 138 139 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vw")); 140 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vh")); 141 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vmin")); 142 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vmax")); 143 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"vb")); 144 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"vi")); 145 146 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svw")); 147 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svh")); 148 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svmin")); 149 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svmax")); 150 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"svb")); 151 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"svi")); 152 153 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvw")); 154 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvh")); 155 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvmin")); 156 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvmax")); 157 EXPECT_FLOAT_EQ(320, viewportUnitLength(webView, @"lvb")); 158 EXPECT_FLOAT_EQ(500, viewportUnitLength(webView, @"lvi")); 159 160 { 161 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 162 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 163 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 164 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 165 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 166 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 167 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvb")); 168 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvi")); 169 } 111 170 } 112 171 … … 125 184 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin")); 126 185 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")); 186 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vb")); 187 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vi")); 188 189 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 190 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 191 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 192 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 193 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svb")); 194 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svi")); 132 195 133 196 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw")); … … 135 198 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin")); 136 199 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")); 200 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvb")); 201 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvi")); 202 203 { 204 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 205 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 206 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 207 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 208 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 209 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 210 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvb")); 211 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvi")); 212 } 142 213 143 214 [webView scrollView].zoomScale = 2; … … 148 219 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin")); 149 220 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")); 221 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vb")); 222 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vi")); 223 224 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 225 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 226 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 227 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 228 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svb")); 229 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svi")); 155 230 156 231 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw")); … … 158 233 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin")); 159 234 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")); 235 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvb")); 236 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvi")); 237 238 { 239 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 240 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 241 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 242 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 243 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 244 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 245 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvb")); 246 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvi")); 247 } 248 249 [webView objectByEvaluatingJavaScript:@"document.documentElement.style.writingMode = 'vertical-lr'"]; 250 [webView waitForNextPresentationUpdate]; 251 252 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vw")); 253 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vh")); 254 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin")); 255 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vmax")); 256 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vb")); 257 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vi")); 258 259 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 260 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 261 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 262 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 263 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svb")); 264 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svi")); 265 266 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw")); 267 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvh")); 268 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin")); 269 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvmax")); 270 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvb")); 271 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvi")); 272 273 { 274 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 275 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 276 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 277 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 278 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 279 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 280 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvb")); 281 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvi")); 282 } 165 283 } 166 284 … … 177 295 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin")); 178 296 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")); 297 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vb")); 298 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vi")); 299 300 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 301 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 302 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 303 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 304 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svb")); 305 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svi")); 184 306 185 307 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw")); … … 187 309 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin")); 188 310 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")); 311 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvb")); 312 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvi")); 313 314 { 315 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 316 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 317 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 318 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 319 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 320 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 321 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvb")); 322 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvi")); 323 } 194 324 195 325 [webView scrollView].zoomScale = 2; … … 200 330 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin")); 201 331 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")); 332 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vb")); 333 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vi")); 334 335 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 336 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 337 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 338 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 339 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svb")); 340 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svi")); 207 341 208 342 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw")); … … 210 344 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin")); 211 345 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")); 346 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvb")); 347 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvi")); 348 349 { 350 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 351 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 352 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 353 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 354 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 355 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 356 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvb")); 357 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvi")); 358 } 359 360 [webView objectByEvaluatingJavaScript:@"document.documentElement.style.writingMode = 'vertical-lr'"]; 361 [webView waitForNextPresentationUpdate]; 362 363 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vw")); 364 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vh")); 365 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vmin")); 366 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vmax")); 367 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"vb")); 368 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"vi")); 369 370 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 371 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 372 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 373 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 374 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svb")); 375 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svi")); 376 377 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvw")); 378 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvh")); 379 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvmin")); 380 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvmax")); 381 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"lvb")); 382 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"lvi")); 383 384 { 385 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 386 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 387 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 388 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 389 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 390 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 391 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvb")); 392 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvi")); 393 } 217 394 } 218 395 … … 229 406 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vmin")); 230 407 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")); 408 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vb")); 409 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vi")); 410 411 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 412 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 413 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 414 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 415 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svb")); 416 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svi")); 236 417 237 418 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw")); … … 239 420 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvmin")); 240 421 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")); 422 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvb")); 423 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvi")); 424 425 { 426 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 427 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 428 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 429 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 430 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 431 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 432 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvb")); 433 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvi")); 434 } 246 435 247 436 [webView scrollView].zoomScale = 2; … … 252 441 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vmin")); 253 442 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")); 443 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vb")); 444 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vi")); 445 446 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 447 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 448 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 449 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 450 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svb")); 451 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svi")); 259 452 260 453 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw")); … … 262 455 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvmin")); 263 456 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")); 457 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvb")); 458 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvi")); 459 460 { 461 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 462 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 463 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 464 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 465 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 466 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 467 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvb")); 468 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvi")); 469 } 470 471 [webView objectByEvaluatingJavaScript:@"document.documentElement.style.writingMode = 'vertical-lr'"]; 472 [webView waitForNextPresentationUpdate]; 473 474 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vw")); 475 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vh")); 476 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vmin")); 477 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vmax")); 478 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"vb")); 479 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"vi")); 480 481 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svw")); 482 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svh")); 483 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svmin")); 484 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svmax")); 485 EXPECT_FLOAT_EQ(10.5, viewportUnitLength(webView, @"svb")); 486 EXPECT_FLOAT_EQ(20.5, viewportUnitLength(webView, @"svi")); 487 488 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvw")); 489 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvh")); 490 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvmin")); 491 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvmax")); 492 EXPECT_FLOAT_EQ(30.5, viewportUnitLength(webView, @"lvb")); 493 EXPECT_FLOAT_EQ(40.5, viewportUnitLength(webView, @"lvi")); 494 495 { 496 double fixedWidth = widthOfElementWithID(webView, @"fixed"); 497 double fixedHeight = heightOfElementWithID(webView, @"fixed"); 498 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvw")); 499 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvh")); 500 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvmin")); 501 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvmax")); 502 EXPECT_FLOAT_EQ(fixedWidth, viewportUnitLength(webView, @"dvb")); 503 EXPECT_FLOAT_EQ(fixedHeight, viewportUnitLength(webView, @"dvi")); 504 } 269 505 } 270 506 271 507 #endif // PLATFORM(IOS_FAMILY) 508 509 TEST(CSSViewportUnits, SVGDocument) 510 { 511 auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)]); 512 [webView loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"CSSViewportUnits" withExtension:@"svg" subdirectory:@"TestWebKitAPI.resources"]]]; 513 [webView _test_waitForDidFinishNavigation]; 514 [webView waitForNextPresentationUpdate]; 515 516 { 517 double vw = viewportUnitLength(webView, @"vw"); 518 double vh = viewportUnitLength(webView, @"vh"); 519 EXPECT_GE(vw, 320); 520 EXPECT_GE(vh, 500); 521 EXPECT_FLOAT_EQ(vw, viewportUnitLength(webView, @"vmin")); 522 EXPECT_FLOAT_EQ(vh, viewportUnitLength(webView, @"vmax")); 523 EXPECT_FLOAT_EQ(vh, viewportUnitLength(webView, @"vb")); 524 EXPECT_FLOAT_EQ(vw, viewportUnitLength(webView, @"vi")); 525 526 double svw = viewportUnitLength(webView, @"svw"); 527 double svh = viewportUnitLength(webView, @"svh"); 528 EXPECT_FLOAT_EQ(vw, svw); 529 EXPECT_FLOAT_EQ(vh, svh); 530 EXPECT_FLOAT_EQ(svw, viewportUnitLength(webView, @"svmin")); 531 EXPECT_FLOAT_EQ(svh, viewportUnitLength(webView, @"svmax")); 532 EXPECT_FLOAT_EQ(svh, viewportUnitLength(webView, @"svb")); 533 EXPECT_FLOAT_EQ(svw, viewportUnitLength(webView, @"svi")); 534 535 double lvw = viewportUnitLength(webView, @"lvw"); 536 double lvh = viewportUnitLength(webView, @"lvh"); 537 EXPECT_FLOAT_EQ(vw, lvw); 538 EXPECT_FLOAT_EQ(vh, lvh); 539 EXPECT_FLOAT_EQ(lvw, viewportUnitLength(webView, @"lvmin")); 540 EXPECT_FLOAT_EQ(lvh, viewportUnitLength(webView, @"lvmax")); 541 EXPECT_FLOAT_EQ(lvh, viewportUnitLength(webView, @"lvb")); 542 EXPECT_FLOAT_EQ(lvw, viewportUnitLength(webView, @"lvi")); 543 544 double dvw = viewportUnitLength(webView, @"dvw"); 545 double dvh = viewportUnitLength(webView, @"dvh"); 546 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), dvw); 547 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), dvh); 548 EXPECT_FLOAT_EQ(dvw, viewportUnitLength(webView, @"dvmin")); 549 EXPECT_FLOAT_EQ(dvh, viewportUnitLength(webView, @"dvmax")); 550 EXPECT_FLOAT_EQ(dvh, viewportUnitLength(webView, @"dvb")); 551 EXPECT_FLOAT_EQ(dvw, viewportUnitLength(webView, @"dvi")); 552 }; 553 554 #if PLATFORM(IOS_FAMILY) 555 [webView scrollView].zoomScale = 2; 556 #elif PLATFORM(MAC) 557 [webView setAllowsMagnification:YES]; 558 [webView setMagnification:2]; 559 #endif 560 [webView waitForNextPresentationUpdate]; 561 562 { 563 double vw = viewportUnitLength(webView, @"vw"); 564 double vh = viewportUnitLength(webView, @"vh"); 565 EXPECT_GE(vw, 320); 566 EXPECT_GE(vh, 500); 567 EXPECT_FLOAT_EQ(vw, viewportUnitLength(webView, @"vmin")); 568 EXPECT_FLOAT_EQ(vh, viewportUnitLength(webView, @"vmax")); 569 EXPECT_FLOAT_EQ(vh, viewportUnitLength(webView, @"vb")); 570 EXPECT_FLOAT_EQ(vw, viewportUnitLength(webView, @"vi")); 571 572 double svw = viewportUnitLength(webView, @"svw"); 573 double svh = viewportUnitLength(webView, @"svh"); 574 EXPECT_FLOAT_EQ(vw, svw); 575 EXPECT_FLOAT_EQ(vh, svh); 576 EXPECT_FLOAT_EQ(svw, viewportUnitLength(webView, @"svmin")); 577 EXPECT_FLOAT_EQ(svh, viewportUnitLength(webView, @"svmax")); 578 EXPECT_FLOAT_EQ(svh, viewportUnitLength(webView, @"svb")); 579 EXPECT_FLOAT_EQ(svw, viewportUnitLength(webView, @"svi")); 580 581 double lvw = viewportUnitLength(webView, @"lvw"); 582 double lvh = viewportUnitLength(webView, @"lvh"); 583 EXPECT_FLOAT_EQ(vw, lvw); 584 EXPECT_FLOAT_EQ(vh, lvh); 585 EXPECT_FLOAT_EQ(lvw, viewportUnitLength(webView, @"lvmin")); 586 EXPECT_FLOAT_EQ(lvh, viewportUnitLength(webView, @"lvmax")); 587 EXPECT_FLOAT_EQ(lvh, viewportUnitLength(webView, @"lvb")); 588 EXPECT_FLOAT_EQ(lvw, viewportUnitLength(webView, @"lvi")); 589 590 double dvw = viewportUnitLength(webView, @"dvw"); 591 double dvh = viewportUnitLength(webView, @"dvh"); 592 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), dvw); 593 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), dvh); 594 EXPECT_FLOAT_EQ(dvw, viewportUnitLength(webView, @"dvmin")); 595 EXPECT_FLOAT_EQ(dvh, viewportUnitLength(webView, @"dvmax")); 596 EXPECT_FLOAT_EQ(dvh, viewportUnitLength(webView, @"dvb")); 597 EXPECT_FLOAT_EQ(dvw, viewportUnitLength(webView, @"dvi")); 598 } 599 600 [webView objectByEvaluatingJavaScript:@"document.documentElement.style.writingMode = 'vertical-lr'"]; 601 [webView waitForNextPresentationUpdate]; 602 603 { 604 double vw = viewportUnitLength(webView, @"vw"); 605 double vh = viewportUnitLength(webView, @"vh"); 606 EXPECT_GE(vw, 320); 607 EXPECT_GE(vh, 500); 608 EXPECT_FLOAT_EQ(vw, viewportUnitLength(webView, @"vmin")); 609 EXPECT_FLOAT_EQ(vh, viewportUnitLength(webView, @"vmax")); 610 EXPECT_FLOAT_EQ(vw, viewportUnitLength(webView, @"vb")); 611 EXPECT_FLOAT_EQ(vh, viewportUnitLength(webView, @"vi")); 612 613 double svw = viewportUnitLength(webView, @"svw"); 614 double svh = viewportUnitLength(webView, @"svh"); 615 EXPECT_FLOAT_EQ(vw, svw); 616 EXPECT_FLOAT_EQ(vh, svh); 617 EXPECT_FLOAT_EQ(svw, viewportUnitLength(webView, @"svmin")); 618 EXPECT_FLOAT_EQ(svh, viewportUnitLength(webView, @"svmax")); 619 EXPECT_FLOAT_EQ(svw, viewportUnitLength(webView, @"svb")); 620 EXPECT_FLOAT_EQ(svh, viewportUnitLength(webView, @"svi")); 621 622 double lvw = viewportUnitLength(webView, @"lvw"); 623 double lvh = viewportUnitLength(webView, @"lvh"); 624 EXPECT_FLOAT_EQ(vw, lvw); 625 EXPECT_FLOAT_EQ(vh, lvh); 626 EXPECT_FLOAT_EQ(lvw, viewportUnitLength(webView, @"lvmin")); 627 EXPECT_FLOAT_EQ(lvh, viewportUnitLength(webView, @"lvmax")); 628 EXPECT_FLOAT_EQ(lvw, viewportUnitLength(webView, @"lvb")); 629 EXPECT_FLOAT_EQ(lvh, viewportUnitLength(webView, @"lvi")); 630 631 double dvw = viewportUnitLength(webView, @"dvw"); 632 double dvh = viewportUnitLength(webView, @"dvh"); 633 EXPECT_FLOAT_EQ(widthOfElementWithID(webView, @"fixed"), dvw); 634 EXPECT_FLOAT_EQ(heightOfElementWithID(webView, @"fixed"), dvh); 635 EXPECT_FLOAT_EQ(dvw, viewportUnitLength(webView, @"dvmin")); 636 EXPECT_FLOAT_EQ(dvh, viewportUnitLength(webView, @"dvmax")); 637 EXPECT_FLOAT_EQ(dvw, viewportUnitLength(webView, @"dvb")); 638 EXPECT_FLOAT_EQ(dvh, viewportUnitLength(webView, @"dvi")); 639 } 640 }
Note: See TracChangeset
for help on using the changeset viewer.