Don't convert intermediate relative colors out of legacy RGB
Converting from ColorSpace::kSRGBLegacy to ColorSpace::kSRGB translates
none
values to zero, which is desirable in a final result but gives
incorrect results when done to a relative color which is the input for
another color function. Defer the conversion until we're at a top-level
call to resolve a color.
Public APIs on StyleColor and inner classes are reshaped a bit to
ensure the conversion happens when needed and doesn't happen when it
shouldn't.
Bug: 365818844
Change-Id: If748a639a852ef7703c4b6a2ff6a43cddfb8cbd5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5851564
Reviewed-by: David Baron dbaron@chromium.org
Commit-Queue: Kevin Babbitt kbabbitt@microsoft.com
Reviewed-by: Fredrik Söderquist fs@opera.com
Cr-Commit-Position: refs/heads/main@{#1368377}