19
19
20
20
/**
21
21
* @spec https://www.w3.org/TR/2020/WD-css-contain-2-20201216/#propdef-contain
22
+ * @spec https://www.w3.org/TR/2022/WD-css-contain-3-20220818/#contain-property
22
23
*/
23
24
public class CssContain extends org .w3c .css .properties .css .CssContain {
24
25
25
26
public static final CssIdent [] allowed_single_values ;
26
27
public static final CssIdent [] allowed_multiple_values ;
27
28
public static final CssIdent auto = CssIdent .getIdent ("auto" );
29
+ public static final CssIdent size = CssIdent .getIdent ("size" );
30
+ public static final CssIdent inline_size = CssIdent .getIdent ("inline-size" );
28
31
29
32
static {
30
33
String [] _allowed_single_values = {"none" , "strict" , "content" };
@@ -34,7 +37,7 @@ public class CssContain extends org.w3c.css.properties.css.CssContain {
34
37
allowed_single_values [i ++] = CssIdent .getIdent (s );
35
38
}
36
39
// "style" added as of css-contain-2 but at-risk
37
- String [] _allowed_multiple_values = {"size" , "layout" , "paint" , "style" };
40
+ String [] _allowed_multiple_values = {"size" , "inline-size" , " layout" , "paint" , "style" };
38
41
i = 0 ;
39
42
allowed_multiple_values = new CssIdent [_allowed_multiple_values .length ];
40
43
for (String s : _allowed_multiple_values ) {
@@ -60,6 +63,10 @@ public static CssIdent getAllowedMultipleIdent(CssIdent ident) {
60
63
return null ;
61
64
}
62
65
66
+ public static boolean isExclusiveIdent (CssIdent ident ) {
67
+ return (size .equals (ident ) || inline_size .equals (ident ));
68
+ }
69
+
63
70
/**
64
71
* Create a new CssContain
65
72
*/
@@ -79,6 +86,7 @@ public CssContain(ApplContext ac, CssExpression expression, boolean check)
79
86
char op ;
80
87
CssIdent id , ident ;
81
88
boolean got_single = false ;
89
+ boolean got_exclusive = false ;
82
90
83
91
setByUser ();
84
92
@@ -129,6 +137,15 @@ public CssContain(ApplContext ac, CssExpression expression, boolean check)
129
137
expression .getValue (),
130
138
getPropertyName (), ac );
131
139
}
140
+ if (isExclusiveIdent (ident )) {
141
+ if (got_exclusive ) {
142
+ throw new InvalidParamException ("value" ,
143
+ expression .getValue (),
144
+ getPropertyName (), ac );
145
+ } else {
146
+ got_exclusive = true ;
147
+ }
148
+ }
132
149
idvalues .add (ident );
133
150
values .add (val );
134
151
if (op != SPACE ) {
0 commit comments