diff --git a/tests/ImageGeneratorTest.cpp b/tests/ImageGeneratorTest.cpp
index 5c8864e..907efc0 100644
--- a/tests/ImageGeneratorTest.cpp
+++ b/tests/ImageGeneratorTest.cpp
@@ -7,9 +7,11 @@
 
 #include "SkData.h"
 #include "SkCanvas.h"
+
 #include "SkGraphics.h"
 #include "SkImageGenerator.h"
 #include "SkImageInfoPriv.h"
+#include "SkYUVAIndex.h"
 #include "Test.h"
 
 #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
@@ -61,24 +63,32 @@
 DEF_TEST(ImageGenerator, reporter) {
     MyImageGenerator ig;
     SkYUVSizeInfo sizeInfo;
-    sizeInfo.fSizes[SkYUVSizeInfo::kY] = SkISize::Make(200, 200);
-    sizeInfo.fSizes[SkYUVSizeInfo::kU] = SkISize::Make(100, 100);
-    sizeInfo.fSizes[SkYUVSizeInfo::kV] = SkISize::Make( 50,  50);
-    sizeInfo.fWidthBytes[SkYUVSizeInfo::kY] = 0;
-    sizeInfo.fWidthBytes[SkYUVSizeInfo::kU] = 0;
-    sizeInfo.fWidthBytes[SkYUVSizeInfo::kV] = 0;
-    void* planes[3] = { nullptr };
+    sizeInfo.fSizes[0] = SkISize::Make(200, 200);
+    sizeInfo.fSizes[1] = SkISize::Make(100, 100);
+    sizeInfo.fSizes[2] = SkISize::Make( 50,  50);
+    sizeInfo.fSizes[3] = SkISize::Make( 25,  25);
+    sizeInfo.fWidthBytes[0] = 0;
+    sizeInfo.fWidthBytes[1] = 0;
+    sizeInfo.fWidthBytes[2] = 0;
+    sizeInfo.fWidthBytes[3] = 0;
+    void* planes[4] = { nullptr };
+    SkYUVAIndex yuvaIndices[4];
     SkYUVColorSpace colorSpace;
 
     // Check that the YUV decoding API does not cause any crashes
-    ig.queryYUV8(&sizeInfo, nullptr);
-    ig.queryYUV8(&sizeInfo, &colorSpace);
-    sizeInfo.fWidthBytes[SkYUVSizeInfo::kY] = 250;
-    sizeInfo.fWidthBytes[SkYUVSizeInfo::kU] = 250;
-    sizeInfo.fWidthBytes[SkYUVSizeInfo::kV] = 250;
+    ig.queryYUVA8(&sizeInfo, yuvaIndices, nullptr);
+    ig.queryYUVA8(&sizeInfo, yuvaIndices, &colorSpace);
+    sizeInfo.fWidthBytes[0] = 250;
+    sizeInfo.fWidthBytes[1] = 250;
+    sizeInfo.fWidthBytes[2] = 250;
+    sizeInfo.fWidthBytes[3] = 250;
+    yuvaIndices[0] = { 0, SkColorChannel::kR };
+    yuvaIndices[1] = { 1, SkColorChannel::kR };
+    yuvaIndices[2] = { 2, SkColorChannel::kR };
+    yuvaIndices[3] = { 3, SkColorChannel::kR };
     int dummy;
-    planes[SkYUVSizeInfo::kY] = planes[SkYUVSizeInfo::kU] = planes[SkYUVSizeInfo::kV] = &dummy;
-    ig.getYUV8Planes(sizeInfo, planes);
+    planes[0] = planes[1] = planes[2] = planes[3] = &dummy;
+    ig.getYUVA8Planes(sizeInfo, yuvaIndices, planes);
 
     // Suppressed due to https://code.google.com/p/skia/issues/detail?id=4339
     if (false) {
