[css-align] New CSS Value 'normal' for Self Alignment
The Box Alignment specification defines a new value 'normal' to be
used as default for the different layout models, which will define the
specific behavior for each case. This patch adds a new CSS value in
the parsing logic and adapts the Self Alignment properties to the new
The 'auto' value is no longer valid for the 'align-items' property and
the Computed Value will be always the specified value. However, it's
still valid for justify-items and both of Self Alignment
properties. We will use the StyleAdjuster to resolve these 'auto'
In order to deal with repaint and relayout whenever some alignment
property changes and resolve again the 'auto' values, current
implementation relies on triggering a Reattach whenever any of these
properties changes. This is a source of many problems for animations,
plugins, ... (See bug 580070 for details). The correct way of
implementing this is using "Inherit" instead so we can run the
StyleAdjuster again only for the nodes affected by the change.
This approach reduces considerably the number of style invalidations
and let us unskip the align-items repaint and relayout related
tests. These, as well as the justify-items related ones, had to be
rebaselined due the different invalidation areas generated.
Because of resolving everything in the StyleAdjuster, we don't need to
duplicate the resolution logic for generating the computed style. We
only have to deal with the 'auto' flag duality, which is not both
'auto' and 'normal' in any post-adjustement logic. This also gives us
the opportunity to get rid of the ShadowDOM and slotted elements
issues, since we don't have to deal with parent's style.
Additionally, this patch updates the layout logic as well, for both
Flexbox and Grid layout models.
BUG=565883, 474798, 448371, 582230
54 files changed