Uploaded image for project: 'XWiki Platform'
  1. XWiki Platform
  2. XWIKI-16583

Upgrade to CSS4J 1.0.0 RC1 & JCLF 4.0.4


    • Type: Task
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 11.5
    • Fix Version/s: 11.6-rc-1
    • Component/s: Dependency Upgrades
    • Labels:
    • Difficulty:
    • Documentation:
    • Similar issues:


      We're currently using CSS4J 0.43.1.

      Version 0.43.2
       * Core:
      - NSAC: add SAC_ELEMENT_REFERENCE to LexicalUni2.
      - NSAC: LexicalUnit implementations must implement LexicalUnit2's getCssText().
        For identifiers and colors, the serialization should be close to how the value
        was specified.
      - NSAC impl.: bug: the parser was rejecting legitimate escaped characters 
        [regression introduced in 0.42.4].
      - NSAC impl.: more efficient handling of quoted strings and character escapes.
      - NSAC impl.: implement SAC_ELEMENT_REFERENCE.
      - NSAC impl.: be less permissive about accepting at-rules after an unexpected 
      - NSAC impl.: not all the required whitespaces were being inserted into rules 
        processed through 'ignorableAtRule' (bug).
      - NSAC impl.: if IEVALUES flag is set, try to identify escaped value hacks that
        have a valid CSS syntax, like in font-family declarations targeting IE.
      - NSAC impl.: improve the parsing of @font-feature-values and @keyframes rules 
        when escaped identifiers or strings are used.
      - NSAC impl.: for identifiers and hex colors, LexicalUnit.toString() attempts 
        to give a representation closer to what was parsed.
      - TokenProducer: fix a bug when the last character was a possible word 
      - TokenProducer: fix bug when the last character was part of the beginning of a 
      - TokenProducer: cleanup/optimization in a hot code path.
      - DefaultEntityResolver: allow subclasses to override the opening of the 
        URLConnection to the DTD source. Create a TestEntityResolver.
      - Add a second constructor to DefaultEntityResolver. Default constructor now 
        only allows connections to W3C.
      - DefaultEntityResolver: load XHTML 1.1 modules and other DTDs from classpath.
      - DefaultEntityResolver: if the resource is not known to the resolver and the 
        protocol is not http/https, or the whitelist is enabled and the host is not 
        whitelisted, throw an exception instead of silently returning null.
      - DOM impl.: fix a toString() bug in DocumentTypeImpl when only a system ID is 
      - DOM impl.: use safer XML parser defaults in XMLDocumentBuilder.
      - DOM wrapper: avoid unnecessary argument in internal constructor.
      - CSSOM: do not use CSSStringValue as the base class for identifiers and 
      - CSSOM: use the new LexicalUnit2.getCssText() method to set identifier cssText
        if the parser is NSAC.
      - CSSOM: add a shorthand serialization method to StyleFormattingContext.
      - CSSOM: pass IE hacks in MediaQueryFactory, preserving the serialization.
      - CSSOM: use the new escape() methods in ParseHelper.
      - CSSOM: introduce new configuration flags for sheet factories, with three 
        possible behaviours for CSS string values: preserve -if it is efficient- the 
        quote character used (default), or use -if efficient- a specific character 
        (double or single quotes).
      - CSSOM: add CSS_ELEMENT_REFERENCE to CSSPrimitiveValue2, and implement it.
      - CSSOM: calc expressions inside functions were omitting the 'calc' name (bug).
      - CSSOM: support setCssText() in custom property ('var()') and 'env()' values.
      - CSSOM: support custom properties ('variables') in border-radius shorthands.
      - CSSOM: do a sanity check for values before serializing the generic (outline, 
        etc) shorthands in computed styles.
      - CSSOM: more accurate processing of color values in the shorthands serialized 
        for minified computed styles (avoid building broken shorthands from bad
      - CSSOM: add IE hack detection logic to minified serialization of computed 
      - CSSOM: add a couple of serialization methods to the default 
      - Assorted new tests and small test cleanup (like a couple of tests that weren't
        testing what was intended, broken DTDs or the inefficient use of a factory
      - Changes to CSSOMBridge to enable testing from other modules (required for
      - Add automatic module name to Maven POM, and upgrade to latest Maven plugins.
       * Dom4j module:
      - Prepare project for Java modularization.
      - Add automatic module name to Maven POM.
      - Adapt unit tests to string value behaviour changes in core.
      - Reduce the visibility of implementation inner class
        XHTMLDocumentFactory.DOM4JCSSStyleSheetFactory to package.
      - Entity tests: workaround for dom4j 2.1.1
      - Maven POM: depend on Jaxen 1.2.0.
       * Agent module:
      - Move the entire module to the new agent.net subpackage, to make it compatible 
        with Java modularization.
      - Add automatic module name to Maven POM.
       * AWT module:
      - Add automatic module name to Maven POM.
      Version 0.43.3
       * Core:
      - NSAC: add hasArgument() and hasKeyword() to PositionalCondition2.
      - NSAC impl.: implement new equals() and serializations using the new 
        hasKeyword() and hasArgument() NSAC methods.
      - NSAC impl.: fix a bug parsing escaped values in attribute selectors
      - NSAC impl.: fix a bug parsing escaped CSS reserved characters in argument 
      - NSAC impl.: fix a bug setting flags in attribute selectors that are part of 
        combinator selectors.
      - NSAC impl.: improve error detection in functional pseudo-classes like ':lang'.
      - NSAC impl.: raise an error when the universal selector bears an unknown 
        namespace prefix.
      - DOM impl.: introduce an ExtendedNodeList interface, featuring a 
        'contains(Node)' method.
      - DOM impl.: unify ElementList and DOMElementList, removing the latter.
      - DOM impl.: migrate to a faster implementation of node trees that does not 
        rely on Java collections.
      - DOM impl.: add several iterators to ParentNode (available in elements etc.).
      - DOM impl.: Add NodeIterator and TreeWalker creation to DOMDocument.
      - DOM impl.: getElementsBy(Tag|Class)Name live collections were not always 
        updated when they should (bug).
      - DOM impl.: DOMDocument: set the parent node for DocumentType in document's 
        constructor instead of XMLDocumentBuilder (bug).
      - DOM impl.: Document.insertBefore was not properly checking for duplicate 
        document elements (bug).
      - DOM impl.: Document.getFirstElementChild() and getLastElementChild() were 
        returning the document element's element child instead (bug).
      - DOM impl.: Document.getChildren() was also giving the children of the 
        document element (bug).
      - DOM impl.: fix bugs when adding and inserting a document fragment, or 
        replacing a node with it.
      - DOM impl.: fix a bug cloning DocumentFragment nodes.
      - DOM impl.: fix a bug cloning elements.
      - DOM impl.: the substringData and replaceData methods of Text, character data 
        and comment nodes were not behaving as per the specification when the sum of 
        the 'offset' and 'count' arguments was larger than the data (bug).
      - DOM impl.: correction to a few DOMExceptions that are thrown when creating 
        Elements and Processing Instructions with wrong names in DOMDocument.
      - DOM impl.: getLastStyleSheetSet() was probably not returning the expected 
      - DOM impl.: fix a potential XML injection in createProcessingInstruction.
      - DOM impl.: xmlns attributes now always return the 
        http://www.w3.org/2000/xmlns/ namespace uri, but can be created with a null 
        namespace without throwing an exception.
      - DOM impl.: implement NonDocumentTypeChildNode.
      - DOM impl.: small internal refactor to querySelectorAll.
      - DOM impl.: HTMLDocument: for consistency with the other setIdAttribute 
        methods, ignore attributes from non-HTML namespaces in setIdAttributeNode.
      - DOM impl.: fix a bug where a Text node could not be added to a 
      - DOM impl.: in isEqualNode(), normalize the nodes before comparing lengths, 
        not after (bug).
      - DOM impl.: when a node has no defined value, setting it should have no effect.
      - DOM impl.: not all the required characters were being expanded as entities 
        when serializing attributes (bug).
      - DOM impl.: ID attributes now have an 'ID' typeName as returned by 
      - DOM impl.: recognize 'xml' as a reserved namespace prefix.
      - DOM impl.: reject attempts to insert unsafe values into CDATA-sections and 
        processing instructions.
      - DOM impl.: NonDocumentTypeChildNode was being implemented by some nodes that 
        should not.
      - DOM impl.: do lazy instantiation of user data objects.
      - DOM impl.: method reordering in AbstractDOMNode.
      - DOM impl.: XMLDocumentBuilder: do not enforce a no-DTD configuration when 
        there is no EntityResolver set. With the default configuration for the parser 
        factory, this means that parsing would fail instead of silently proceeding.
      - DOM impl.: XMLDocumentBuilder: in the default constructor, set 
        'http://xml.org/sax/features/namespace-prefixes' and 
        'http://xml.org/sax/features/xmlns-uris' to true.
      - DOM impl.: add setIgnoreElementContentWhitespace(boolean) to 
      - DOM impl.: clean up verification checks on adding/inserting/replacing a child 
      - DOM impl.: DocumentType: do not support collections of Entities nor Notations.
      - DOM impl.: implement CSSNode in all nodes including DocumentType.
      - DOM wrapper: allow setting the document's URI.
      - DOM wrapper: throw NO_MODIFICATION_ALLOWED_ERR exception instead of 
        NOT_SUPPORTED_ERR when setting node values and related methods.
      - DOM wrapper: getLastStyleSheetSet() was probably not returning the expected 
      - DOM wrapper: ignore the original document's baseURI unless we 
        cannot do better.
      - CSSOM: implement serializations of positional selectors using the new NSAC
        PositionalCondition2's hasKeyword() and hasArgument() methods.
      - CSSOM: serialize the ':lang()' pseudo-class according to the string-quote 
        factory flags.
      - CSSOM: serialize attribute value selectors using single or double quotes 
        according to the flag specified to the factory.
      - CSSOM: fix a bug when restoring a previous shorthand-specified value after 
        removing a property.
      - CSSOM: fix bugs building a referrer to use with loadStyleSheet().
      - Tests: remote test for DefaultEntityResolver was outdated.
      - Tests: add Daniel Eden's animate.css and Sergey Pimenov's Metro UI CSS to the 
        contrib tests (noticeable increase in download size!).
      - Tests: clean-up of 'throws' declarations.
       * Dom4j module:
      - Element.setIdAttributeNode(): if an ID attribute which is not "id" (case 
        insensitive) is being set, fall back to default upstream behaviour (which 
        currently throws an exception).
      - getLastStyleSheetSet() was probably not returning the expected values.
      - More appropriate names for two private methods.
      - Tests: clean-up 'throws' declarations.
      - Tests: adapt to changes in core.
       * Agent module:
      - DefaultUserAgent: ignore element content whitespace.
       * Distribution:
      - Small formatting correction in the output of 'changes.sh' (which generates an
        initial draft for CHANGES.txt).
      Version 0.43.4
       * Core:
      - [JPMS] produce multi-release jar targeting JDK1.7 but module-info compiled 
        for JDK11.
      - API CHANGE: modify SimpleWriter to serialize CharSequences instead of Strings.
      - NSAC impl.: fix a bug when parsing negative floating point numbers inside 
        functions, if the decimal point immediately followed the minus sign ("-.").
      - NSAC impl.: support InputStreams in InputSources.
      - NSAC impl.: use CharSequence references in 'quoted' events and a few more 
      - NSAC impl.: use a BufferedInputStream when reading a style sheet from URL.
      - NSAC impl.: more efficient use of the IEVALUES flag.
      - Use AgentUtil.findCharset() to find charset in Content-Type header, in 
        CSSParser and AbstractUserAgent.
      - Make ParseHelper.parseIdent stricter, and introduce a DOMCharacterException.
      - TokenProducer: fix a comment processing bug with potential high impact on 
        non-CSS use cases.
      - TokenProducer: small optimization (change the 'word' event to CharSequence).
      - Move TokenProducer to its own package.
      - Introduce an utility method to transform InputStreams into Readers.
      - DOM: remove usage of deprecated W3C interfaces: DOMStringList and
      - DOM: make DOMTokenList iterable, and add containsAll(DOMTokenList).
      - DOM impl.: simplify and deprecate DOM methods that were deprecated by 
      - DOM impl.: DOMTokenListImpl fix: reset the contents before parsing on 
      - DOM impl.: add prependChild(Node) to ParentNode. The standard method is 
        'prepend', but 'prependChild' is preferred for consistency with 'appendChild'.
      - DOM impl.: add contains(Node) to AbstractDOMNode.
      - DOM impl.: make node lists iterable.
      - DOM impl.: introduce interface DOMNode, and use it instead of CSSNode.
      - DOM impl.: add the NodeListIterator convenience interface.
      - DOM impl.: in DOMTokenList implementations, to add() an item that they 
        already have should have no effect (compliance bug).
      - DOM impl.: CSSDOMImplementation now throws an exception if a DocumentType 
        already in use is supplied to createDocument().
      - DOM impl.: attributes weren't always being converted to lower case when they 
      - DOM impl.: XMLDocumentBuilder: set the 'specified' bit from SAX Attributes2 
      - DOM impl.: internal refactor to allow iterators, getElementsByTagName, etc. 
        in ParentNode.
      - DOM impl.: clean up the inheritance from NonDocumentTypeChildNode.
      - DOM impl.: Document.cloneNode(boolean) was not functional.
      - DOM impl.: if a STYLE element text content is set to the empty string, behave 
        as documented and return an empty sheet with getSheet() instead of null.
      - Dom impl.: getElementsByClassName() wasn't updating lists owned by 
        non-element nodes (bug).
      - DOM impl.: Attr.getValue() could return null, now it would be the empty 
      - DOM impl.: update embedded style sheets instantaneously after DOM changes, no 
        need to manually call getSheet().
      - DOM impl.: before setting the title of a style sheet from an attribute value, 
        trim() it.
      - DOM impl.: do not do a node normalization in isEqualNode(). That should be 
        done by caller.
      - DOM impl.: do not print newlines after printing nodes in toString(), and 
        print element content whitespace instead.
      - DOM impl.: introduce class DOMWriter to pretty-print HTML and XML.
      - DOM impl.: handle Node.insertBefore and replaceChild when the new node and 
        the ref/old node are the same.
      - DOM impl.: return a DocumentType instead of Node when calling cloneNode() on 
        a DocumentType.
      - DOM impl.: part of package-info was outdated and inaccurate.
      - DOM wrapper: if the contents of a text node with STYLE parent are modified, 
        reparse the sheet.
      - CSSOM: introduce new interface ExtendedCSSStyleRule.
      - CSSOM: add getRulesForProperty() to ExtendedCSSStyleSheet.
      - CSSOM: make AbstractStyleSheet and AbstractCSSValue cloneable.
      - CSSOM: support fallback values in custom properties.
      - CSSOM: safer quoting of URLs when serializing URI values.
      - CSSOM: change the visibility of EmptyDeviceFactory from public to private.
      - CSSOM: move DummyDeviceFactory to the test tree.
      - CSSOM: prevent a corner-case bug when restoring a property value from a 
        shorthand, after a property removal (adjustment to the fix in 0.43.3).
      - CSSOM: use the StyleFormattingContext infrastructure for 
      - CSSOM: omit the 0 when minifying floating point numbers with absolute value 
        less than one but greater than zero.
      - CSSOM: avoid reporting errors for IE compatibility values (if the relevant 
        flags are set) found in margin, padding and border-radius shorthands.
      - CSSOM: recognize custom properties as colors when serializing minified 
        'background' shorthands.
      - CSSOM: use ServiceLoader in SACParserFactory.createSACParser() [experimental].
      - CSSOM: remove support to match/serialize several selectors that nobody 
      - CSSOM: RGBAColor.getAlpha() now returns an ExtendedCSSPrimitiveValue.
      - Test for unassigned code point in CSSIdentifierValueTest was failing with JDK 
      - DTD: add the EntityFinder class, which allows to fill a map of characters 
        (codepoints) to entities.
      - DTD: refactor ContentModel, including the use of a new parser.
      - DTD: handle the case of 'no PublicId but has SystemId' in 
      - DefaultEntityResolver: make a last-resort call to getExternalSubset in the 
        four-argument resolveEntity.
      - Agent: DefaultCookie implements Cloneable.
      - Miscellaneous javadoc improvements.
       * Dom4j module:
      - [JPMS] produce multi-release jar targeting JDK1.7 but module-info compiled 
        for JDK11.
      - If the text child of a STYLE element is removed, reset the style sheet 
        immediately (no need to call getSheet() again).
      - Avoid NPE when calling sheet.getHref() if no base URL is set.
      - If attributeValue("title") of a STYLE or LINK element is the empty string, 
        set it as null in the associated sheet.
      - DOM4J user agent: obtain Reader through AgentUtil.inputStreamToReader().
       * Agent module:
      - [JPMS] produce multi-release jar targeting JDK1.7 but module-info compiled 
        for JDK11.
      - DefaultUserAgent: obtain Reader through AgentUtil.inputStreamToReader().
       * AWT module:
      - [JPMS] produce multi-release jar targeting JDK1.7 but module-info compiled 
        for JDK11.
      Version 1.0.0-rc1
       * Core:
      - CSSOM: general type cleanup, and introduce the ExtendedCSSRuleList interface.
      - CSSOM: rename several implementation classes to better names.
       * Dom4j module:
      - Changes to conform to the renaming in core module.




            • Assignee:
              vmassol Vincent Massol
              vmassol Vincent Massol
            • Votes:
              0 Vote for this issue
              2 Start watching this issue


              • Created:
                Date of First Response: