diff --git a/src/codec/SkCodec.cpp b/src/codec/SkCodec.cpp
index 8bfaae8..5564e89 100644
--- a/src/codec/SkCodec.cpp
+++ b/src/codec/SkCodec.cpp
@@ -280,8 +280,8 @@
     }
 
     const int requiredFrame = frame->getRequiredFrame();
-    if (requiredFrame != kNone) {
-        if (options.fPriorFrame != kNone) {
+    if (requiredFrame != kNoFrame) {
+        if (options.fPriorFrame != kNoFrame) {
             // Check for a valid frame as a starting point. Alternatively, we could
             // treat an invalid frame as not providing one, but rejecting it will
             // make it easier to catch the mistake.
@@ -728,7 +728,7 @@
 }
 
 static bool independent(const SkFrame& frame) {
-    return frame.getRequiredFrame() == SkCodec::kNone;
+    return frame.getRequiredFrame() == SkCodec::kNoFrame;
 }
 
 static bool restore_bg(const SkFrame& frame) {
@@ -743,7 +743,7 @@
     const int i = frame->frameId();
     if (0 == i) {
         frame->setHasAlpha(reportsAlpha || frameRect != screenRect);
-        frame->setRequiredFrame(SkCodec::kNone);
+        frame->setRequiredFrame(SkCodec::kNoFrame);
         return;
     }
 
@@ -751,7 +751,7 @@
     const bool blendWithPrevFrame = frame->getBlend() == SkCodecAnimation::Blend::kPriorFrame;
     if ((!reportsAlpha || !blendWithPrevFrame) && frameRect == screenRect) {
         frame->setHasAlpha(reportsAlpha);
-        frame->setRequiredFrame(SkCodec::kNone);
+        frame->setRequiredFrame(SkCodec::kNoFrame);
         return;
     }
 
@@ -760,7 +760,7 @@
         const int prevId = prevFrame->frameId();
         if (0 == prevId) {
             frame->setHasAlpha(true);
-            frame->setRequiredFrame(SkCodec::kNone);
+            frame->setRequiredFrame(SkCodec::kNoFrame);
             return;
         }
 
@@ -773,7 +773,7 @@
     if (clearPrevFrame) {
         if (prevFrameRect == screenRect || independent(*prevFrame)) {
             frame->setHasAlpha(true);
-            frame->setRequiredFrame(SkCodec::kNone);
+            frame->setRequiredFrame(SkCodec::kNoFrame);
             return;
         }
     }
@@ -790,8 +790,8 @@
 
     while (frameRect.contains(prevFrameRect)) {
         const int prevRequiredFrame = prevFrame->getRequiredFrame();
-        if (prevRequiredFrame == SkCodec::kNone) {
-            frame->setRequiredFrame(SkCodec::kNone);
+        if (prevRequiredFrame == SkCodec::kNoFrame) {
+            frame->setRequiredFrame(SkCodec::kNoFrame);
             frame->setHasAlpha(true);
             return;
         }
@@ -803,7 +803,7 @@
     if (restore_bg(*prevFrame)) {
         frame->setHasAlpha(true);
         if (prevFrameRect == screenRect || independent(*prevFrame)) {
-            frame->setRequiredFrame(SkCodec::kNone);
+            frame->setRequiredFrame(SkCodec::kNoFrame);
         } else {
             // Note: As above, frame could still be independent, e.g. if
             // prevFrame covers its required frame and that frame is
