[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();
             }));
         });