diff --git a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/dom/CssValues.java b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/dom/CssValues.java index 2030149569d..2f4d2bb046d 100644 --- a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/dom/CssValues.java +++ b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/dom/CssValues.java @@ -26,8 +26,7 @@ /** * The internal CSS value model produced by the parser. A small sealed hierarchy * of immutable values that replaces the former {@code Measure} / {@code - * RGBColorImpl} / {@code CSSValueListImpl} wrappers and removes the last SAC - * dependency ({@code LexicalUnit}). + * RGBColorImpl} / {@code CSSValueListImpl} wrappers. * *

* Consumers pattern-match on the record variants ({@link CssNumber}, @@ -258,7 +257,7 @@ public String getCssText() { /** * A separator (currently only {@code ,}) carried inside a value list, kept - * for parity with the former SAC behaviour where the comma was a list item. + * for parity with the historical behaviour where the comma was a list item. */ public record CssOperator(String text) implements CssPrimitive { @Override diff --git a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/CSSEngineImpl.java b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/CSSEngineImpl.java index 64d0dddd09f..e62eaf685b9 100644 --- a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/CSSEngineImpl.java +++ b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/CSSEngineImpl.java @@ -477,9 +477,9 @@ private void applyConditionalPseudoStyle(ExtendedCSSRule parentRule, String pseu * Returns {@code true} if {@code selector} carries a pseudo-class or * attribute selector (anywhere in a compound or descendant combinator) * whose target value equals {@code pseudoInstance}. Mirrors the legacy - * SAC walker, which handled both {@code :selected} (a pseudo-class) and - * {@code Shell[active='true']} (an attribute) through SAC's shared - * {@code AttributeCondition} interface. + * walker, which handled both {@code :selected} (a pseudo-class) and + * {@code Shell[active='true']} (an attribute) through a shared + * condition interface. */ private static boolean matchesPseudoInstanceAttribute(Selectors.Selector selector, String pseudoInstance) { if (selector instanceof Selectors.PseudoClass pc) { diff --git a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/SelectorMatcher.java b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/SelectorMatcher.java index 82e97624dd3..ef8ff609dbc 100644 --- a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/SelectorMatcher.java +++ b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/SelectorMatcher.java @@ -36,14 +36,14 @@ * *

* Every method is static; the matcher carries no state. Callers pass the - * element being tested plus an optional pseudo-element string (the same - * argument the SAC engine carried) so that pseudo-class matching can defer - * to the existing {@link CSSStylableElement#isPseudoInstanceOf} contract. + * element being tested plus an optional pseudo-element string so that + * pseudo-class matching can defer to the existing + * {@link CSSStylableElement#isPseudoInstanceOf} contract. *

* *

- * Tag-name comparison is case sensitive, matching the existing SAC matcher - * (Phase 1 test {@code testTagNameCaseSensitivity} in {@code CSSEngineTest} + * Tag-name comparison is case sensitive, preserving the historical matcher + * behaviour (Phase 1 test {@code testTagNameCaseSensitivity} in {@code CSSEngineTest} * locks this in). Pseudo-class semantics also follow the existing engine: * the static-pseudo-instance carve-out from * {@code CSSPseudoClassConditionImpl} is preserved so cascade behaviour diff --git a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/Selectors.java b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/Selectors.java index ebca60b165b..5622b1ad9fc 100644 --- a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/Selectors.java +++ b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/Selectors.java @@ -19,14 +19,10 @@ * Internal CSS selector AST. * *

- * The engine historically exposed W3C SAC selectors - * ({@code org.w3c.css.sac.Selector} and friends) and matched against them - * through a hierarchy of vendored Batik wrapper classes under - * {@code impl/sac/*}. This package replaces both with a small set of records - * that the engine owns end to end. The W3C SAC types stay only as long as - * the parser still emits them; a translator turns the SAC selector tree - * produced by the Batik SAC parser into one of these records before it - * reaches the engine matcher. + * This package is the engine's own selector model: a small set of records + * the parser builds directly and the matcher consumes end to end. It + * replaced an earlier layer of vendored selector wrapper classes that the + * engine no longer depends on. *

* *

@@ -312,12 +308,12 @@ public List alternatives() { return alternatives; } - /** Number of alternatives in the list. SAC-style accessor for callers iterating the list. */ + /** Number of alternatives in the list. Indexed accessor for callers iterating the list. */ public int getLength() { return alternatives.size(); } - /** {@code i}-th alternative. SAC-style accessor for callers iterating the list. */ + /** {@code i}-th alternative. Indexed accessor for callers iterating the list. */ public Selector item(int i) { return alternatives.get(i); } diff --git a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/parser/CssParseException.java b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/parser/CssParseException.java index 1c8ec46c2cb..adaedcc0fea 100644 --- a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/parser/CssParseException.java +++ b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/parser/CssParseException.java @@ -15,8 +15,7 @@ /** * Thrown by the hand-written CSS parser when the input cannot be parsed. - * Replaces {@code org.w3c.css.sac.CSSException} for the internal parser, which - * like its SAC predecessor is unchecked. + * Unchecked so it can surface from the parser without checked-exception plumbing. */ public class CssParseException extends RuntimeException { diff --git a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/parser/CssParser.java b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/parser/CssParser.java index 395e4f8ac97..46a9a50eeec 100644 --- a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/parser/CssParser.java +++ b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/parser/CssParser.java @@ -413,7 +413,7 @@ private Selector compound() { case COLON: advance(); if (peek().kind == Kind.COLON) { - advance(); // pseudo-element ::, modelled as a pseudo-class like the SAC path + advance(); // pseudo-element ::, modelled as a pseudo-class } conditions.add(new PseudoClass(expect(Kind.IDENT).text)); break; @@ -430,8 +430,8 @@ private Selector compound() { for (int i = conditions.size() - 2; i >= 0; i--) { conditionTree = new And(conditions.get(i), conditionTree); } - // A universal element before conditions is dropped, matching the SAC - // translator: '.foo' and '*[a]' carry no element-type contribution. + // A universal element before conditions is dropped: '.foo' and '*[a]' + // carry no element-type contribution. return element instanceof ElementType ? new And(element, conditionTree) : conditionTree; } diff --git a/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/SelectorMatcherTest.java b/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/SelectorMatcherTest.java index 31162dd52c7..4c2186848c4 100644 --- a/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/SelectorMatcherTest.java +++ b/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/selector/SelectorMatcherTest.java @@ -38,9 +38,7 @@ /** * Unit tests for {@link SelectorMatcher}. The cases mirror those in the - * Phase 1 {@code CSSEngineTest}, but go through the new internal selector - * AST instead of SAC. When Phase 3 Step 1 wires the engine to use this - * matcher, the SAC-based duplicate tests can be retired. + * Phase 1 {@code CSSEngineTest}, but go through the internal selector AST. */ class SelectorMatcherTest { diff --git a/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/tests/css/core/CSSEngineTest.java b/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/tests/css/core/CSSEngineTest.java index cb00446b1fb..101f7877c31 100644 --- a/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/tests/css/core/CSSEngineTest.java +++ b/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/tests/css/core/CSSEngineTest.java @@ -261,9 +261,9 @@ void testSelectorListMatch() throws Exception { @Test void testTagNameCaseSensitivity() throws Exception { - // Locks in current case-sensitive matching of the SAC engine. If the - // parser swap moves to case-insensitive (closer to HTML semantics), this - // test must be updated together with that change. + // Locks in current case-sensitive matching. If the matching ever moves + // to case-insensitive (closer to HTML semantics), this test must be + // updated together with that change. TestCSSEngine engine = new TestCSSEngine(); Selector capital = parse(engine, "Button"); Selector lower = parse(engine, "button"); diff --git a/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/tests/css/core/parser/CssParserTest.java b/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/tests/css/core/parser/CssParserTest.java index a4c7d549de3..412f6c81d1e 100644 --- a/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/tests/css/core/parser/CssParserTest.java +++ b/tests/org.eclipse.e4.ui.tests.css.core/src/org/eclipse/e4/ui/tests/css/core/parser/CssParserTest.java @@ -91,8 +91,7 @@ void testAttributeAndPseudoSelectors() { @Test void testUniversalElementDroppedBeforeConditions() { - // '.foo' and '*[a]' carry no element-type contribution, matching the - // previous SAC translator. + // '.foo' and '*[a]' carry no element-type contribution. assertInstanceOf(Selectors.ClassSelector.class, firstSelector(".foo")); assertInstanceOf(Selectors.AttributeSelector.class, firstSelector("*[a]")); } diff --git a/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF b/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF index 374046bd91b..b69efde84cd 100644 --- a/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF @@ -16,8 +16,7 @@ Import-Package: org.eclipse.core.runtime;version="3.5.0", org.junit.jupiter.api.function;version="[5.14.0,6.0.0)", org.junit.platform.suite.api;version="[1.14.0,2.0.0)", org.osgi.framework;version="[1.7.0,2.0.0)", - org.osgi.service.event;version="[1.3.0,2.0.0)", - org.w3c.css.sac;version="1.3.0" + org.osgi.service.event;version="[1.3.0,2.0.0)" Eclipse-BundleShape: dir Automatic-Module-Name: org.eclipse.e4.ui.tests.css.swt Bundle-Vendor: %Bundle-Vendor