Store ComputedStyle in NodeRenderingData for Element.

We used to store ComputedStyle in NodeRenderingData temporarily between
style recalc and layout tree building as non-attached-style. After
layout tree attachment, we would have to look up ComputedStyle from the
LayoutObjects. Additionally, for element which were not rendered like
elements styled with display:none or display:contents, we would store
ComputedStyle in ElementRareData.

This CL changes that to persist ComputedStyle in NodeRenderingData both
when rendered with a LayoutObject, or display:content, or when ensured
from getComputedStyle in display:none subtrees.

There are a few reasons for doing this:

* We don't want to store ComputedStyle in two different place in
* For LayoutNG and Houdini, we might not have LayoutObjects to pull the
  ComputedStyle from.
* Changing the display property of a subtree root should not cause a
  full style recalc of the subtree if only that root display type is
  the only style change.
* We got the possibility to move ComputedStyle/animation/recalc
  dependencies out of AttachLayoutTree methods in this CL.

In addition to store the ComputedStyle in a single place in Element, we
make the following changes:

1. New nodes are now style clean per default, and all nodes are style
clean before layout tree building. Instead of requiring a full style
recalc traversal of the whole subtree when inserting a subtree, we mark
the root with kLocalStyleChange and skip recalc of display:none
subtrees in the following recalc.

2. Made StyleRecalcChange a class instead of an enum to separate style
   recalc propagation and the need for layout tree reattachment.

3. Style recalc now happens down the flat tree which means we got rid
   of the hack of marking shadow host children dirty for inheritance
   through slots.

Bug: 914784

Change-Id: I55a9ac7b4e3bbf0b23c78f10941dfb2a86e1bb88
Commit-Queue: Rune Lillesveen <>
Reviewed-by: Morten Stenshorne <>
Reviewed-by: Anders Hartvoll Ruud <>
Cr-Commit-Position: refs/heads/master@{#626478}
73 files changed