Commit ce34aea
committed
Replace SAC selector layer with an internal Selector AST and matcher
Replaces the vendored Batik/SAC selector tree with a small
engine-internal selector model and a static matcher, the SAC parser
layer aside.
Adds a sealed Selector AST (records for type, class, id, attribute,
pseudo, compound, and combinator forms) plus a static SelectorMatcher
that walks an Element through it. A SAC->internal translator at the
parser-output boundary in CSSDocumentHandlerImpl.startSelector feeds
it, and CSSEngine.matches / parseSelectors now work on the internal
AST: CSSEngineImpl.matches delegates to SelectorMatcher and
applyConditionalPseudoStyle walks the internal AST instead of the SAC
tree. The parser is configured with Batik's stock
DefaultSelectorFactory and DefaultConditionFactory, so 23 vendored
impl/sac/* selector and condition wrappers fall away, along with the
dead ExtendedDocumentCSS.queryConditionSelector / querySelector methods
and the SAC_*_CONDITION constants behind them.
Specificity follows CSS 2.1 and the static-pseudo-instance carve-out
from CSSPseudoClassConditionImpl is preserved, so cascade behaviour
does not shift. Selectors.SelectorList exposes getLength()/item(int)
and every record overrides toString() to return text() for readable
selector text in error messages and rule.getSelectorText().
CSSEngineTest and SelectorTest are rewritten on the internal AST, and
sixteen new matcher unit tests cover universal, type case-sensitivity,
class, id, compound, descendant, child, attribute presence and
word-match, pseudo-class, selector lists, and specificity arithmetic.
The new package is exported x-friends to org.eclipse.e4.ui.tests.css.core
for the tests. Three impl/sac classes (CSSDocumentHandlerImpl,
DocumentHandlerFactoryImpl, SACParserFactoryImpl) remain as parser
plumbing. Net ~-1,450 LOC; bundles internal (x-friends only), no API
surface change.
Contributes to #39801 parent bacf493 commit ce34aea
39 files changed
Lines changed: 1225 additions & 2678 deletions
File tree
- bundles
- org.eclipse.e4.ui.css.core
- META-INF
- src/org/eclipse/e4/ui/css/core
- dom
- engine
- impl
- dom
- engine
- selector
- sac
- org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/engine
- tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui
- css/core/impl/engine/selector
- tests/css/core
- parser
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
34 | 35 | | |
35 | 36 | | |
36 | 37 | | |
| |||
Lines changed: 4 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
17 | | - | |
| 16 | + | |
18 | 17 | | |
19 | 18 | | |
20 | 19 | | |
| |||
28 | 27 | | |
29 | 28 | | |
30 | 29 | | |
31 | | - | |
| 30 | + | |
32 | 31 | | |
33 | | - | |
| 32 | + | |
34 | 33 | | |
Lines changed: 1 addition & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | 18 | | |
22 | 19 | | |
23 | 20 | | |
| |||
26 | 23 | | |
27 | 24 | | |
28 | 25 | | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | 26 | | |
37 | 27 | | |
38 | 28 | | |
39 | 29 | | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | 30 | | |
45 | 31 | | |
46 | 32 | | |
| |||
Lines changed: 6 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
26 | | - | |
27 | | - | |
28 | 27 | | |
29 | 28 | | |
30 | 29 | | |
| |||
105 | 104 | | |
106 | 105 | | |
107 | 106 | | |
108 | | - | |
| 107 | + | |
109 | 108 | | |
110 | 109 | | |
111 | 110 | | |
112 | 111 | | |
113 | | - | |
| 112 | + | |
114 | 113 | | |
115 | 114 | | |
116 | 115 | | |
117 | 116 | | |
118 | | - | |
| 117 | + | |
119 | 118 | | |
120 | 119 | | |
121 | 120 | | |
122 | 121 | | |
123 | | - | |
| 122 | + | |
124 | 123 | | |
125 | 124 | | |
126 | 125 | | |
127 | 126 | | |
128 | | - | |
| 127 | + | |
129 | 128 | | |
130 | 129 | | |
131 | 130 | | |
| |||
Lines changed: 6 additions & 17 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
21 | | - | |
| 20 | + | |
22 | 21 | | |
23 | 22 | | |
24 | 23 | | |
| |||
27 | 26 | | |
28 | 27 | | |
29 | 28 | | |
30 | | - | |
| 29 | + | |
31 | 30 | | |
32 | 31 | | |
33 | | - | |
| 32 | + | |
34 | 33 | | |
35 | 34 | | |
36 | 35 | | |
| |||
55 | 54 | | |
56 | 55 | | |
57 | 56 | | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
| 57 | + | |
69 | 58 | | |
70 | 59 | | |
71 | 60 | | |
| |||
83 | 72 | | |
84 | 73 | | |
85 | 74 | | |
86 | | - | |
| 75 | + | |
87 | 76 | | |
88 | 77 | | |
89 | 78 | | |
| |||
Lines changed: 1 addition & 102 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
22 | 21 | | |
23 | | - | |
24 | | - | |
25 | 22 | | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | 23 | | |
30 | | - | |
31 | | - | |
32 | 24 | | |
33 | | - | |
34 | 25 | | |
35 | 26 | | |
36 | 27 | | |
| |||
42 | 33 | | |
43 | 34 | | |
44 | 35 | | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | 36 | | |
51 | 37 | | |
52 | 38 | | |
| |||
72 | 58 | | |
73 | 59 | | |
74 | 60 | | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | | - | |
137 | | - | |
138 | | - | |
139 | | - | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
153 | | - | |
154 | | - | |
155 | | - | |
156 | | - | |
157 | | - | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | 61 | | |
163 | 62 | | |
164 | 63 | | |
| |||
0 commit comments