[canvaskit] Fix color opaqueness
Bug: skia:9800
Change-Id: I61d50df47467dbcee6d90fd636749a4d19c4da8f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/265957
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/modules/canvaskit/CHANGELOG.md b/modules/canvaskit/CHANGELOG.md
index 12a3d0c..468d229 100644
--- a/modules/canvaskit/CHANGELOG.md
+++ b/modules/canvaskit/CHANGELOG.md
@@ -18,7 +18,7 @@
### Fixed
- Bug that sometimes resulted in 'Cannot perform Construct on a neutered ArrayBuffer'
- Bug with SkImage.readPixels (skbug.com/9788)
-
+ - Bug with transparent colors in Canvas2d mode (skbug.com/9800)
## [0.11.0] - 2020-01-10
diff --git a/modules/canvaskit/htmlcanvas/color.js b/modules/canvaskit/htmlcanvas/color.js
index 49a56f7..7fe17a1 100644
--- a/modules/canvaskit/htmlcanvas/color.js
+++ b/modules/canvaskit/htmlcanvas/color.js
@@ -31,7 +31,10 @@
}
function valueOrPercent(aStr) {
- var a = parseFloat(aStr) || 1;
+ if (aStr === undefined) {
+ return 1; // default to opaque.
+ }
+ var a = parseFloat(aStr);
if (aStr && aStr.indexOf('%') !== -1) {
return a / 100;
}
diff --git a/modules/canvaskit/tests/canvas2d.spec.js b/modules/canvaskit/tests/canvas2d.spec.js
index f19db09..1569d64 100644
--- a/modules/canvaskit/tests/canvas2d.spec.js
+++ b/modules/canvaskit/tests/canvas2d.spec.js
@@ -44,6 +44,12 @@
CanvasKit.Color(117, 33, 64, 1.0));
expect(parseColor('rgb(117,33, 64)')).toEqual(
CanvasKit.Color(117, 33, 64, 1.0));
+ expect(parseColor('rgb(117,33, 64, 32%)')).toEqual(
+ CanvasKit.Color(117, 33, 64, 0.32));
+ expect(parseColor('rgb(117,33, 64, 0.001)')).toEqual(
+ CanvasKit.Color(117, 33, 64, 0.001));
+ expect(parseColor('rgb(117,33,64,0)')).toEqual(
+ CanvasKit.Color(117, 33, 64, 0.0));
done();
}));
});