Requiring that UA style sheet-only shorthand properties only have UA
style sheet-only subproperties makes it easier to deal with the
subproperties outside of the CSS parser (which is where the information
about whether a given property is enabled only in UA style sheets is
stored). Similarly for certified app-only shorthands.
This includes removing:
* the box property directional source constants
* the CSS_PROPERTY_DIRECTIONAL_SOURCE property flag
* the CSS_PROPERTY_REPORT_OTHER_NAME property flag
* nsCSSProps::OtherNameFor
* methods on the CSS parser to parse directional box properties and set
the old *-source and *-value properties
* the resolution of logical and physical properties in nsRuleNode during
style computation, since that's now done as part of the cascade in
nsCSSExpandedDataBlock::MapRuleInfoInto
Here we convert the logical padding properties into their new resolved-at-
cascade-time implementations. This involves:
* converting -moz-padding-{start,end} into logical longhand properties
* adding padding-inline-{start,end} aliases for -moz-padding-{start,end}
* converting padding-{left,right} into longhand properties
* removing padding-{left,right}-value and
padding-{left,right}-{ltr,rtl}-source internal properties
The CSS parser and various tests are simplified a bit as a result.
We will add cases to EnsurePhysicalProperty's switch statement as we
convert the existing shorthand-implemented logical properties to the
new, CSS_PROPERTY_LOGICAL-bearing properties.
We define a new flag CSS_PROPERTY_LOGICAL to be used for logical longhand
properties and a new CSS_PROP_LOGICAL macro in nsCSSPropList.h to
define them.
When using CSS_PROP to capture all properties, includers must now
explicitly indicate whether logical properties are included or not,
by defining CSS_PROP_LIST_EXCLUDE_LOGICAL (to exclude them),
CSS_PROP_LIST_INCLUDE_LOGICAL (to include them), or CSS_PROP_LOGICAL
(to capture them separately from other properties).
I noticed the GetRootPresContext call being expensive in a profile that
involved painting in a (non-e10s) window with around 400-500 tabs.
Moving the mIsActive test (most likely to be false) first should fix
that.
This adjusts existing reftest annotations for tests that fail on 10.8
that are showing up as failing on 10.10 as well to be marked using >=
version tests rather than == version tests.
This fails without the patch; I'm hoping it will be fixed by the
combination of patch 1 in this bug and bug 1055667 patch 5.
(Interestingly, it fails both due to mispositioning as expected, and
also due to bad overflow area computation causing failure to paint the
ruby text.)
Using undefined has the advantage that we can use < and > tests with the
OSX variable. (We currently have no such tests in the tree, perhaps
partly because they didn't work with non-OSX being 0.)