1010import org .w3c .css .util .ApplContext ;
1111import org .w3c .css .util .InvalidParamException ;
1212import org .w3c .css .values .CssExpression ;
13+ import org .w3c .css .values .CssIdent ;
1314import org .w3c .css .values .CssTypes ;
1415import org .w3c .css .values .CssValue ;
1516import org .w3c .css .values .CssValueList ;
1920import static org .w3c .css .values .CssOperator .SPACE ;
2021
2122/**
22- * @spec https://www.w3.org/TR/2017 /CR-css-scroll-snap-1-20170824 /#propdef-scroll-padding
23+ * @spec https://www.w3.org/TR/2019 /CR-css-scroll-snap-1-20190131 /#propdef-scroll-padding
2324 */
2425public class CssScrollPadding extends org .w3c .css .properties .css .CssScrollPadding {
2526
@@ -28,6 +29,7 @@ public class CssScrollPadding extends org.w3c.css.properties.css.CssScrollPaddin
2829 private CssScrollPaddingBottom _longhand_bottom ;
2930 private CssScrollPaddingLeft _longhand_left ;
3031
32+ protected static CssIdent auto = CssIdent .getIdent ("auto" );
3133
3234 /**
3335 * Create a new CssScrollPaddingInline
@@ -74,22 +76,7 @@ public CssScrollPadding(ApplContext ac, CssExpression expression, boolean check)
7476 case CssTypes .CSS_PERCENTAGE :
7577 val .getCheckableValue ().checkPositiveness (ac , this );
7678 values .add (val );
77- switch (i ) {
78- case 0 :
79- _longhand_top .value = val ;
80- break ;
81- case 1 :
82- _longhand_right .value = val ;
83- break ;
84- case 2 :
85- _longhand_bottom .value = val ;
86- break ;
87- case 3 :
88- _longhand_left .value = val ;
89- break ;
90- default :
91- // can't happen by design
92- }
79+ setValue (i , val );
9380 break ;
9481 case CssTypes .CSS_IDENT :
9582 if (inherit .equals (val )) {
@@ -105,6 +92,11 @@ public CssScrollPadding(ApplContext ac, CssExpression expression, boolean check)
10592 _longhand_left .value = inherit ;
10693 break ;
10794 }
95+ if (auto .equals (val )) {
96+ values .add (val );
97+ setValue (i , val );
98+ break ;
99+ }
108100 default :
109101 throw new InvalidParamException ("value" ,
110102 expression .getValue (),
@@ -119,6 +111,25 @@ public CssScrollPadding(ApplContext ac, CssExpression expression, boolean check)
119111 value = (values .size () == 1 ) ? values .get (0 ) : new CssValueList (values );
120112 }
121113
114+ private void setValue (int index , CssValue value ) {
115+ switch (index ) {
116+ case 0 :
117+ _longhand_top .value = value ;
118+ break ;
119+ case 1 :
120+ _longhand_right .value = value ;
121+ break ;
122+ case 2 :
123+ _longhand_bottom .value = value ;
124+ break ;
125+ case 3 :
126+ _longhand_left .value = value ;
127+ break ;
128+ default :
129+ // can't happen by design
130+ }
131+ }
132+
122133 public CssScrollPadding (ApplContext ac , CssExpression expression )
123134 throws InvalidParamException {
124135 this (ac , expression , false );
@@ -155,6 +166,10 @@ protected static CssValue checkPaddingValue(ApplContext ac, CssExpression expres
155166 expression .next ();
156167 return inherit ;
157168 }
169+ if (auto .equals (val )) {
170+ expression .next ();
171+ return auto ;
172+ }
158173 default :
159174 throw new InvalidParamException ("value" ,
160175 expression .getValue (),
0 commit comments