[css-properties-values-api] Proper behavior for direct CSSStyleValues.

In CSS Typed OM, types that are not yet supported by a specialized
CSSStyleValue subclass are represented by "direct" CSSStyleValue objects.
These objects are only valid for their associated property. For instance,
you may not get a (direct) CSSStyleValue object from 'color', and then
set it on 'background-color'; the (direct) CSSStyleValue acquired from
'color' is valid for 'color' only.

The same should apply for registered custom properties; a direct
CSSStyleValue acquired from '--x' is only valid for '--x'.

To do this, blink::CSSUnsupportedStyleValue must be aware of the
custom property name. This means the AtomicString with the custom property
name must be passed around to almost everything. However, if the property
at hand is not a custom property, I want to avoid AtomicString-ing the
name of the property. Hence there are DCHECKs to make sure this is avoided.

Reminder: this CL would be much less ... grotesque and perhaps less
error-prone if dynamic CSSProperties (Ribbon) were in place, but because
we like pain, we decided to not give that project a very high priority.

R=chrishtr@chromium.org

Bug: 641877
Change-Id: I99af4745d1d33365759e9fd4acef5082ab213229
Reviewed-on: https://chromium-review.googlesource.com/c/1257916
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: Anders Ruud <andruud@chromium.org>
Cr-Commit-Position: refs/heads/master@{#597503}
9 files changed