diff --git a/tests/ImageGeneratorTest.cpp b/tests/ImageGeneratorTest.cpp
index 907efc0..5c8864e 100644
--- a/tests/ImageGeneratorTest.cpp
+++ b/tests/ImageGeneratorTest.cpp
@@ -7,11 +7,9 @@
 
 #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)
@@ -63,32 +61,24 @@
 DEF_TEST(ImageGenerator, reporter) {
     MyImageGenerator ig;
     SkYUVSizeInfo sizeInfo;
-    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];
+    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 };
     SkYUVColorSpace colorSpace;
 
     // Check that the YUV decoding API does not cause any crashes
-    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 };
+    ig.queryYUV8(&sizeInfo, nullptr);
+    ig.queryYUV8(&sizeInfo, &colorSpace);
+    sizeInfo.fWidthBytes[SkYUVSizeInfo::kY] = 250;
+    sizeInfo.fWidthBytes[SkYUVSizeInfo::kU] = 250;
+    sizeInfo.fWidthBytes[SkYUVSizeInfo::kV] = 250;
     int dummy;
-    planes[0] = planes[1] = planes[2] = planes[3] = &dummy;
-    ig.getYUVA8Planes(sizeInfo, yuvaIndices, planes);
+    planes[SkYUVSizeInfo::kY] = planes[SkYUVSizeInfo::kU] = planes[SkYUVSizeInfo::kV] = &dummy;
+    ig.getYUV8Planes(sizeInfo, planes);
 
     // Suppressed due to https://code.google.com/p/skia/issues/detail?id=4339
     if (false) {
