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

Upgrade to CSS4J 0.43.1



    • Type: Task
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 11.3
    • Fix Version/s: 11.4-rc-1
    • Component/s: Old Core
    • Labels:
    • Tests:
    • Difficulty:
    • Documentation:
    • Documentation in Release Notes:
    • Similar issues:


      Release Highlights
       This is basically a stabilization of 0.43, although it adds a new selector to
      NSAC: SAC_SCOPE_SELECTOR, intended to be used at selectors like 'has(>p)'. Also
      introduces a new ExtendedCSSPrimitiveValue in CSS Object Model, while the method
      writeCssText(SimpleWriter) is removed from CSSPrimitiveValue2 (it is available
      through ExtendedCSSPrimitiveValue). The idea is that interfaces ending with '2'
      should only contain essential methods, and 'writeCssText' is useful but nowhere
      near being a requirement.
       Other than that, there are quite a few bug fixes; all users are encouraged to
      Release Highlights (0.43)
       A new STRICT compliance mode was introduced, (basically like the 'standards'
      mode). Now there are QUIRKS and STRICT. LENIENT was removed as it was mixing
      different things. Now compliance modes are automatic, instead of being set at
      the factory's instantiation.
       Three new NSAC parser flags were added, to provide compatibility with IE hacks:
       * IEVALUES supports values ending with \9 or \0, as well as progid filters and
         IE expressions that were unconditionally accepted in prior versions.
       * IEPRIO allows values ending with the '!ie' priority hack (and puts them into
         SAC_COMPAT_IDENT compatibility values).
       * IEPRIOCHAR accepts values with an '!important!' priority, and sets it to
         SAC_COMPAT_PRIO pseudo-values. Those values must be handled as of !important
       The object model manages these compatibility values in parallel to standard
      ones. For example, after parsing this declaration:
         width: 900px; width: 890px\9;
      its serialization will be (if the flag was set correctly):
         width: 900px; width: 890px\9;
      but the declaration's length shall be only 1. And computed styles only use the
      standard values unless there are no alternatives (no standard value was set).
      The workings are similar for:
         width: 890px!ie;
         width: 890px!important!;
      with the last one being handled as of important priority. SAC_COMPAT_PRIO values
      are never used in computed styles.
      Upgrading from 0.42.x
       If you were using the LENIENT mode, to get a similar behaviour you need to
      instantiate a factory with the Parser2.Flag.STARHACK and possibly Flag.IEVALUES.
      If you used the old QUIRKS mode, the equivalent would be to set the factory to
      setLenientSystemValues(false). Now lenient system values are decoupled from the
      other setup tweaks.
       To support progid filters and IE expressions, you need to set the IEVALUES flag
      when creating the factory (or the NSAC parser).
       There are other changes that could affect users, but dealing with them should
      be easy. If you experience any problem upgrading, please use the css4j forum.




            vmassol Vincent Massol
            vmassol Vincent Massol
            0 Vote for this issue
            1 Start watching this issue