Make transform builder use resolvable ComputeNumber for scale()

GetDoubleValue that doesn't pass the css to length conversion data and
just takes the raw double value of the expression.
But this approach doesn't work for cases where number producing math
functions are used.
Implement and use ComputeNumber instead.

Bug: 1505817
Change-Id: Iecf02eea030c76f16593fa2e4206e158c69cd863
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5079453
Commit-Queue: Daniil Sakhapov <sakhapov@chromium.org>
Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1234524}
diff --git a/css/css-values/progress-computed.tentative.html b/css/css-values/progress-computed.tentative.html
index 71caab3..1f313a0 100644
--- a/css/css-values/progress-computed.tentative.html
+++ b/css/css-values/progress-computed.tentative.html
@@ -19,6 +19,9 @@
 test_math_used('calc(progress(100 from 0 to sign(50px)))', '100', {type:'number'});
 test_math_used('calc(progress(abs(5%) from hypot(3%, 4%) to 10%))', '1', {type:'number', approx:0.001});
 test_math_used('progress(1000em from 10em to 110em)', '10', {type:'number'});
+test_math_used('scale(progress(1000em from 10rem to 110em))', 'scale(10)', {prop:'transform', type:'number'});
+test_math_used('scale(progress(0em from 0rem to 0em))', 'scale(0)', {prop:'transform', type:'number'});
+test_math_used('scale(progress(sign(1em - 1rem) * 1ex from 0rem to 0em))', 'scale(0)', {prop:'transform', type:'number'});
 
 // Type checking
 test_math_used('calc(progress(1 from 0 to 1) * 10px)', '10px');