Fix uninitialized memory on kIndex8 divisor tests in Gold

Turns out bitmap.eraseColor() does nothing if the bitmap
is kIndex8.  We need a more reliable way to initialize
all of the pixels that we look at in Gold.

The input SkCanvas* is always zero initialized, so let's
only draw pixels to the canvas if we have initialized them.

BUG=skia:

Review URL: https://codereview.chromium.org/1418913002
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
index 98ab086..587949d 100644
--- a/dm/DMSrcSink.cpp
+++ b/dm/DMSrcSink.cpp
@@ -684,9 +684,9 @@
                 return Error::Nonfatal("Divisor is larger than image dimension.\n");
             }
 
-            // Rounding the size of the subsets may leave some pixels uninitialized on the bottom
-            // and right edges of the bitmap.
-            bitmap.eraseColor(0);
+            // Keep track of the final decoded dimensions.
+            int finalScaledWidth = 0;
+            int finalScaledHeight = 0;
             for (int x = 0; x < divisor; x++) {
                 for (int y = 0; y < divisor; y++) {
                     // Calculate the subset dimensions
@@ -704,13 +704,19 @@
                         return "Could not get supported subset to decode.\n";
                     }
                     options.fSubset = &subset;
-                    void* pixels = bitmap.getAddr(subset.left() / fSampleSize,
-                            subset.top() / fSampleSize);
+                    const int scaledWidthOffset = subset.left() / fSampleSize;
+                    const int scaledHeightOffset = subset.top() / fSampleSize;
+                    void* pixels = bitmap.getAddr(scaledWidthOffset, scaledHeightOffset);
                     SkISize scaledSubsetSize = codec->getSampledSubsetDimensions(fSampleSize,
                             subset);
                     SkImageInfo subsetDecodeInfo = decodeInfo.makeWH(scaledSubsetSize.width(),
                             scaledSubsetSize.height());
 
+                    if (x + 1 == divisor && y + 1 == divisor) {
+                        finalScaledWidth = scaledWidthOffset + scaledSubsetSize.width();
+                        finalScaledHeight = scaledHeightOffset + scaledSubsetSize.height();
+                    }
+
                     switch (codec->getAndroidPixels(subsetDecodeInfo, pixels, bitmap.rowBytes(),
                             &options)) {
                         case SkCodec::kSuccess:
@@ -723,7 +729,10 @@
                     }
                 }
             }
-            canvas->drawBitmap(bitmap, 0, 0);
+
+            SkRect rect = SkRect::MakeXYWH(0, 0, (SkScalar) finalScaledWidth,
+                    (SkScalar) finalScaledHeight);
+            canvas->drawBitmapRect(bitmap, rect, rect, nullptr);
             return "";
         }
         default: