Remove ShadowColorMatrix - toString() @Implementation method support of Object.toString() will be removed soon.
Add ShadowColorMatrixColorFilter.getMatrix() + move description processing code into ShadowCanvas

PiperOrigin-RevId: 205160141
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowCanvas.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowCanvas.java
index ae1b846..6babbde 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowCanvas.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowCanvas.java
@@ -1,8 +1,12 @@
 package org.robolectric.shadows;
 
+import static org.robolectric.Shadows.shadowOf;
+
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
 import android.graphics.Matrix;
 import android.graphics.Paint;
 import android.graphics.Path;
@@ -13,6 +17,7 @@
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
 import org.robolectric.shadow.api.Shadow;
+import org.robolectric.util.Join;
 import org.robolectric.util.ReflectionHelpers;
 
 /**
@@ -221,11 +226,29 @@
     if (paint != null) {
       ColorFilter colorFilter = paint.getColorFilter();
       if (colorFilter != null) {
-        appendDescription(" with " + colorFilter);
+        if (colorFilter instanceof ColorMatrixColorFilter) {
+          ColorMatrixColorFilter colorMatrixColorFilter = (ColorMatrixColorFilter) colorFilter;
+          ShadowColorMatrixColorFilter shadowColorMatrixColorFilter =
+              shadowOf(colorMatrixColorFilter);
+          ColorMatrix colorMatrix = shadowColorMatrixColorFilter.getMatrix();
+          appendDescription(" with ColorMatrixColorFilter<" + formatColorMatric(colorMatrix) + ">");
+        } else {
+          appendDescription(" with " + colorFilter);
+        }
       }
     }
   }
 
+  private String formatColorMatric(ColorMatrix colorMatrix) {
+    List<String> floats = new ArrayList<>();
+    for (float f : colorMatrix.getArray()) {
+      String format = String.format("%.2f", f);
+      format = format.replace(".00", "");
+      floats.add(format);
+    }
+    return Join.join(",", floats);
+  }
+
   private void separateLines() {
     if (getDescription().length() != 0) {
       appendDescription("\n");
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrix.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrix.java
deleted file mode 100644
index 5856a69..0000000
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrix.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.robolectric.shadows;
-
-import android.graphics.ColorMatrix;
-import java.util.ArrayList;
-import java.util.List;
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-import org.robolectric.annotation.RealObject;
-import org.robolectric.util.Join;
-import org.robolectric.util.ReflectionHelpers;
-
-@SuppressWarnings({"UnusedDeclaration"})
-@Implements(ColorMatrix.class)
-public class ShadowColorMatrix {
-
-  @RealObject ColorMatrix realColorMatrix;
-  
-  @Override @Implementation
-  public String toString() {
-    List<String> floats = new ArrayList<>();
-    for (float f : getMatrix()) {
-      String format = String.format("%.2f", f);
-      format = format.replace(".00", "");
-      floats.add(format);
-    }
-    return Join.join(",", floats);
-  }
-  
-  private float[] getMatrix() {
-    return ReflectionHelpers.getField(realColorMatrix, "mArray");
-  }
-}
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrixColorFilter.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrixColorFilter.java
index 2474e10..147fdc4 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrixColorFilter.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrixColorFilter.java
@@ -20,8 +20,7 @@
     this.matrix = new ColorMatrix(array);
   }
 
-  @Override @Implementation
-  public String toString() {
-    return "ColorMatrixColorFilter<" + matrix + ">";
+  ColorMatrix getMatrix() {
+    return matrix;
   }
 }