Nest CFX_GifDecodeStatus in GifDecoder

This violates the naming convention that CFX_ objects should be
full-up classes, and not just enum class.

-- remove unused forward decl.

Change-Id: I9d9c1689fb447bef1006f2e9bc1f00a61094521b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/80691
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcodec/gif/cfx_gif.h b/core/fxcodec/gif/cfx_gif.h
index 3565c7b..97a7422 100644
--- a/core/fxcodec/gif/cfx_gif.h
+++ b/core/fxcodec/gif/cfx_gif.h
@@ -12,8 +12,6 @@
 
 #include "core/fxcrt/fx_memory_wrappers.h"
 
-class CFX_GifContext;
-
 extern const char kGifSignature87[];
 extern const char kGifSignature89[];
 
@@ -111,13 +109,6 @@
 };
 #pragma pack()
 
-enum class CFX_GifDecodeStatus {
-  Error,
-  Success,
-  Unfinished,
-  InsufficientDestSize,  // Only used internally by CGifLZWDecoder::Decode()
-};
-
 struct CFX_GifImage {
   CFX_GifImage();
   ~CFX_GifImage();
diff --git a/core/fxcodec/gif/cfx_gifcontext.cpp b/core/fxcodec/gif/cfx_gifcontext.cpp
index 0022a2c..66dea4b 100644
--- a/core/fxcodec/gif/cfx_gifcontext.cpp
+++ b/core/fxcodec/gif/cfx_gifcontext.cpp
@@ -50,23 +50,23 @@
       delay_time, user_input, trans_index, disposal_method, interlace);
 }
 
-CFX_GifDecodeStatus CFX_GifContext::ReadHeader() {
-  CFX_GifDecodeStatus status = ReadGifSignature();
-  if (status != CFX_GifDecodeStatus::Success)
+GifDecoder::Status CFX_GifContext::ReadHeader() {
+  GifDecoder::Status status = ReadGifSignature();
+  if (status != GifDecoder::Status::kSuccess)
     return status;
   return ReadLogicalScreenDescriptor();
 }
 
-CFX_GifDecodeStatus CFX_GifContext::GetFrame() {
-  CFX_GifDecodeStatus ret = CFX_GifDecodeStatus::Success;
+GifDecoder::Status CFX_GifContext::GetFrame() {
+  GifDecoder::Status ret = GifDecoder::Status::kSuccess;
   while (true) {
     switch (decode_status_) {
       case GIF_D_STATUS_TAIL:
-        return CFX_GifDecodeStatus::Success;
+        return GifDecoder::Status::kSuccess;
       case GIF_D_STATUS_SIG: {
         uint8_t signature;
         if (!ReadAllOrNone(&signature, sizeof(signature)))
-          return CFX_GifDecodeStatus::Unfinished;
+          return GifDecoder::Status::kUnfinished;
 
         switch (signature) {
           case GIF_SIG_EXTENSION:
@@ -77,7 +77,7 @@
             continue;
           case GIF_SIG_TRAILER:
             SaveDecodingStatus(GIF_D_STATUS_TAIL);
-            return CFX_GifDecodeStatus::Success;
+            return GifDecoder::Status::kSuccess;
           default:
             if (!input_buffer_->IsEOF()) {
               // The Gif File has non_standard Tag!
@@ -85,13 +85,13 @@
               continue;
             }
             // The Gif File Doesn't have Trailer Tag!
-            return CFX_GifDecodeStatus::Success;
+            return GifDecoder::Status::kSuccess;
         }
       }
       case GIF_D_STATUS_EXT: {
         uint8_t extension;
         if (!ReadAllOrNone(&extension, sizeof(extension)))
-          return CFX_GifDecodeStatus::Unfinished;
+          return GifDecoder::Status::kUnfinished;
 
         switch (extension) {
           case GIF_BLOCK_CE:
@@ -115,7 +115,7 @@
       }
       case GIF_D_STATUS_IMG_INFO: {
         ret = DecodeImageInfo();
-        if (ret != CFX_GifDecodeStatus::Success)
+        if (ret != GifDecoder::Status::kSuccess)
           return ret;
 
         continue;
@@ -125,13 +125,13 @@
         size_t read_marker = input_buffer_->GetPosition();
 
         if (!ReadAllOrNone(&img_data_size, sizeof(img_data_size)))
-          return CFX_GifDecodeStatus::Unfinished;
+          return GifDecoder::Status::kUnfinished;
 
         while (img_data_size != GIF_BLOCK_TERMINAL) {
           if (!input_buffer_->Seek(input_buffer_->GetPosition() +
                                    img_data_size)) {
             input_buffer_->Seek(read_marker);
-            return CFX_GifDecodeStatus::Unfinished;
+            return GifDecoder::Status::kUnfinished;
           }
 
           // This saving of the scan state on partial reads is why
@@ -139,7 +139,7 @@
           SaveDecodingStatus(GIF_D_STATUS_IMG_DATA);
           read_marker = input_buffer_->GetPosition();
           if (!ReadAllOrNone(&img_data_size, sizeof(img_data_size)))
-            return CFX_GifDecodeStatus::Unfinished;
+            return GifDecoder::Status::kUnfinished;
         }
 
         SaveDecodingStatus(GIF_D_STATUS_SIG);
@@ -147,26 +147,26 @@
       }
       default: {
         ret = DecodeExtension();
-        if (ret != CFX_GifDecodeStatus::Success)
+        if (ret != GifDecoder::Status::kSuccess)
           return ret;
         break;
       }
     }
   }
-  return CFX_GifDecodeStatus::Success;
+  return GifDecoder::Status::kSuccess;
 }
 
-CFX_GifDecodeStatus CFX_GifContext::LoadFrame(int32_t frame_num) {
+GifDecoder::Status CFX_GifContext::LoadFrame(int32_t frame_num) {
   if (!pdfium::IndexInBounds(images_, frame_num))
-    return CFX_GifDecodeStatus::Error;
+    return GifDecoder::Status::kError;
 
   CFX_GifImage* gif_image = images_[static_cast<size_t>(frame_num)].get();
   if (gif_image->image_info.height == 0)
-    return CFX_GifDecodeStatus::Error;
+    return GifDecoder::Status::kError;
 
   uint32_t gif_img_row_bytes = gif_image->image_info.width;
   if (gif_img_row_bytes == 0)
-    return CFX_GifDecodeStatus::Error;
+    return GifDecoder::Status::kError;
 
   if (decode_status_ == GIF_D_STATUS_TAIL) {
     gif_image->row_buffer.resize(gif_img_row_bytes);
@@ -186,7 +186,7 @@
           gif_image->image_info.local_flags.interlace);
       if (!bRes) {
         gif_image->row_buffer.clear();
-        return CFX_GifDecodeStatus::Error;
+        return GifDecoder::Status::kError;
       }
     } else {
       bool bRes = GetRecordPosition(
@@ -202,13 +202,13 @@
           gif_image->image_info.local_flags.interlace);
       if (!bRes) {
         gif_image->row_buffer.clear();
-        return CFX_GifDecodeStatus::Error;
+        return GifDecoder::Status::kError;
       }
     }
 
     if (gif_image->code_exp > GIF_MAX_LZW_EXP) {
       gif_image->row_buffer.clear();
-      return CFX_GifDecodeStatus::Error;
+      return GifDecoder::Status::kError;
     }
 
     img_row_offset_ = 0;
@@ -224,13 +224,13 @@
 
   if (decode_status_ == GIF_D_STATUS_IMG_DATA) {
     if (!ReadAllOrNone(&img_data_size, sizeof(img_data_size)))
-      return CFX_GifDecodeStatus::Unfinished;
+      return GifDecoder::Status::kUnfinished;
 
     if (img_data_size != GIF_BLOCK_TERMINAL) {
       img_data.resize(img_data_size);
       if (!ReadAllOrNone(img_data.data(), img_data_size)) {
         input_buffer_->Seek(read_marker);
-        return CFX_GifDecodeStatus::Unfinished;
+        return GifDecoder::Status::kUnfinished;
       }
 
       if (!lzw_decompressor_.get()) {
@@ -240,36 +240,36 @@
       SaveDecodingStatus(GIF_D_STATUS_IMG_DATA);
       img_row_offset_ += img_row_avail_size_;
       img_row_avail_size_ = gif_img_row_bytes - img_row_offset_;
-      CFX_GifDecodeStatus ret =
+      GifDecoder::Status ret =
           lzw_decompressor_.get()
               ? lzw_decompressor_->Decode(
                     img_data.data(), img_data_size,
                     gif_image->row_buffer.data() + img_row_offset_,
                     &img_row_avail_size_)
-              : CFX_GifDecodeStatus::Error;
-      if (ret == CFX_GifDecodeStatus::Error) {
+              : GifDecoder::Status::kError;
+      if (ret == GifDecoder::Status::kError) {
         DecodingFailureAtTailCleanup(gif_image);
-        return CFX_GifDecodeStatus::Error;
+        return GifDecoder::Status::kError;
       }
 
-      while (ret != CFX_GifDecodeStatus::Error) {
-        if (ret == CFX_GifDecodeStatus::Success) {
+      while (ret != GifDecoder::Status::kError) {
+        if (ret == GifDecoder::Status::kSuccess) {
           ReadScanline(gif_image->row_num, gif_image->row_buffer.data());
           gif_image->row_buffer.clear();
           SaveDecodingStatus(GIF_D_STATUS_TAIL);
-          return CFX_GifDecodeStatus::Success;
+          return GifDecoder::Status::kSuccess;
         }
 
-        if (ret == CFX_GifDecodeStatus::Unfinished) {
+        if (ret == GifDecoder::Status::kUnfinished) {
           read_marker = input_buffer_->GetPosition();
           if (!ReadAllOrNone(&img_data_size, sizeof(img_data_size)))
-            return CFX_GifDecodeStatus::Unfinished;
+            return GifDecoder::Status::kUnfinished;
 
           if (img_data_size != GIF_BLOCK_TERMINAL) {
             img_data.resize(img_data_size);
             if (!ReadAllOrNone(img_data.data(), img_data_size)) {
               input_buffer_->Seek(read_marker);
-              return CFX_GifDecodeStatus::Unfinished;
+              return GifDecoder::Status::kUnfinished;
             }
 
             if (!lzw_decompressor_.get()) {
@@ -284,11 +284,11 @@
                             img_data.data(), img_data_size,
                             gif_image->row_buffer.data() + img_row_offset_,
                             &img_row_avail_size_)
-                      : CFX_GifDecodeStatus::Error;
+                      : GifDecoder::Status::kError;
           }
         }
 
-        if (ret == CFX_GifDecodeStatus::InsufficientDestSize) {
+        if (ret == GifDecoder::Status::kInsufficientDestSize) {
           if (gif_image->image_info.local_flags.interlace) {
             ReadScanline(gif_image->row_num, gif_image->row_buffer.data());
             gif_image->row_num += kGifInterlaceStep[img_pass_num_];
@@ -297,7 +297,7 @@
               img_pass_num_++;
               if (img_pass_num_ == pdfium::size(kGifInterlaceStep)) {
                 DecodingFailureAtTailCleanup(gif_image);
-                return CFX_GifDecodeStatus::Error;
+                return GifDecoder::Status::kError;
               }
               gif_image->row_num = kGifInterlaceStep[img_pass_num_] / 2;
             }
@@ -311,19 +311,19 @@
                           img_data.data(), img_data_size,
                           gif_image->row_buffer.data() + img_row_offset_,
                           &img_row_avail_size_)
-                    : CFX_GifDecodeStatus::Error;
+                    : GifDecoder::Status::kError;
         }
 
-        if (ret == CFX_GifDecodeStatus::InsufficientDestSize ||
-            ret == CFX_GifDecodeStatus::Error) {
+        if (ret == GifDecoder::Status::kInsufficientDestSize ||
+            ret == GifDecoder::Status::kError) {
           DecodingFailureAtTailCleanup(gif_image);
-          return CFX_GifDecodeStatus::Error;
+          return GifDecoder::Status::kError;
         }
       }
     }
     SaveDecodingStatus(GIF_D_STATUS_TAIL);
   }
-  return CFX_GifDecodeStatus::Error;
+  return GifDecoder::Status::kError;
 }
 
 void CFX_GifContext::SetInputBuffer(RetainPtr<CFX_CodecMemory> codec_memory) {
@@ -351,30 +351,30 @@
   return true;
 }
 
-CFX_GifDecodeStatus CFX_GifContext::ReadGifSignature() {
+GifDecoder::Status CFX_GifContext::ReadGifSignature() {
   CFX_GifHeader header;
   if (!ReadAllOrNone(reinterpret_cast<uint8_t*>(&header), 6))
-    return CFX_GifDecodeStatus::Unfinished;
+    return GifDecoder::Status::kUnfinished;
 
   if (strncmp(header.signature, kGifSignature87, 6) != 0 &&
       strncmp(header.signature, kGifSignature89, 6) != 0) {
-    return CFX_GifDecodeStatus::Error;
+    return GifDecoder::Status::kError;
   }
 
-  return CFX_GifDecodeStatus::Success;
+  return GifDecoder::Status::kSuccess;
 }
 
-CFX_GifDecodeStatus CFX_GifContext::ReadLogicalScreenDescriptor() {
+GifDecoder::Status CFX_GifContext::ReadLogicalScreenDescriptor() {
   CFX_GifLocalScreenDescriptor lsd;
   size_t read_marker = input_buffer_->GetPosition();
 
   if (!ReadAllOrNone(reinterpret_cast<uint8_t*>(&lsd), sizeof(lsd)))
-    return CFX_GifDecodeStatus::Unfinished;
+    return GifDecoder::Status::kUnfinished;
 
   if (lsd.global_flags.global_pal) {
     uint32_t palette_count = unsigned(2 << lsd.global_flags.pal_bits);
     if (lsd.bc_index >= palette_count)
-      return CFX_GifDecodeStatus::Error;
+      return GifDecoder::Status::kError;
     bc_index_ = lsd.bc_index;
 
     uint32_t palette_size = palette_count * sizeof(CFX_GifPalette);
@@ -383,7 +383,7 @@
                        palette_size)) {
       // Roll back the read for the LSD
       input_buffer_->Seek(read_marker);
-      return CFX_GifDecodeStatus::Unfinished;
+      return GifDecoder::Status::kUnfinished;
     }
 
     global_palette_exp_ = lsd.global_flags.pal_bits;
@@ -397,40 +397,40 @@
   height_ = static_cast<int>(
       FXWORD_GET_LSBFIRST(reinterpret_cast<uint8_t*>(&lsd.height)));
 
-  return CFX_GifDecodeStatus::Success;
+  return GifDecoder::Status::kSuccess;
 }
 
 void CFX_GifContext::SaveDecodingStatus(int32_t status) {
   decode_status_ = status;
 }
 
-CFX_GifDecodeStatus CFX_GifContext::DecodeExtension() {
+GifDecoder::Status CFX_GifContext::DecodeExtension() {
   size_t read_marker = input_buffer_->GetPosition();
 
   switch (decode_status_) {
     case GIF_D_STATUS_EXT_CE: {
       if (!ScanForTerminalMarker()) {
         input_buffer_->Seek(read_marker);
-        return CFX_GifDecodeStatus::Unfinished;
+        return GifDecoder::Status::kUnfinished;
       }
       break;
     }
     case GIF_D_STATUS_EXT_PTE: {
       CFX_GifPlainTextExtension gif_pte;
       if (!ReadAllOrNone(reinterpret_cast<uint8_t*>(&gif_pte), sizeof(gif_pte)))
-        return CFX_GifDecodeStatus::Unfinished;
+        return GifDecoder::Status::kUnfinished;
 
       graphic_control_extension_ = nullptr;
       if (!ScanForTerminalMarker()) {
         input_buffer_->Seek(read_marker);
-        return CFX_GifDecodeStatus::Unfinished;
+        return GifDecoder::Status::kUnfinished;
       }
       break;
     }
     case GIF_D_STATUS_EXT_GCE: {
       CFX_GifGraphicControlExtension gif_gce;
       if (!ReadAllOrNone(reinterpret_cast<uint8_t*>(&gif_gce), sizeof(gif_gce)))
-        return CFX_GifDecodeStatus::Unfinished;
+        return GifDecoder::Status::kUnfinished;
 
       if (!graphic_control_extension_.get())
         graphic_control_extension_ =
@@ -447,23 +447,23 @@
         graphic_control_extension_ = nullptr;
       if (!ScanForTerminalMarker()) {
         input_buffer_->Seek(read_marker);
-        return CFX_GifDecodeStatus::Unfinished;
+        return GifDecoder::Status::kUnfinished;
       }
     }
   }
 
   SaveDecodingStatus(GIF_D_STATUS_SIG);
-  return CFX_GifDecodeStatus::Success;
+  return GifDecoder::Status::kSuccess;
 }
 
-CFX_GifDecodeStatus CFX_GifContext::DecodeImageInfo() {
+GifDecoder::Status CFX_GifContext::DecodeImageInfo() {
   if (width_ <= 0 || height_ <= 0)
-    return CFX_GifDecodeStatus::Error;
+    return GifDecoder::Status::kError;
 
   size_t read_marker = input_buffer_->GetPosition();
   CFX_GifImageInfo img_info;
   if (!ReadAllOrNone(reinterpret_cast<uint8_t*>(&img_info), sizeof(img_info)))
-    return CFX_GifDecodeStatus::Unfinished;
+    return GifDecoder::Status::kUnfinished;
 
   auto gif_image = std::make_unique<CFX_GifImage>();
   gif_image->image_info.left =
@@ -477,7 +477,7 @@
   gif_image->image_info.local_flags = img_info.local_flags;
   if (gif_image->image_info.left + gif_image->image_info.width > width_ ||
       gif_image->image_info.top + gif_image->image_info.height > height_)
-    return CFX_GifDecodeStatus::Error;
+    return GifDecoder::Status::kError;
 
   CFX_GifLocalFlags* gif_img_info_lf = &img_info.local_flags;
   if (gif_img_info_lf->local_pal) {
@@ -487,7 +487,7 @@
     if (!ReadAllOrNone(reinterpret_cast<uint8_t*>(loc_pal.data()),
                        loc_pal_count * sizeof(CFX_GifPalette))) {
       input_buffer_->Seek(read_marker);
-      return CFX_GifDecodeStatus::Unfinished;
+      return GifDecoder::Status::kUnfinished;
     }
 
     gif_image->local_palettes = std::move(loc_pal);
@@ -496,7 +496,7 @@
   uint8_t code_size;
   if (!ReadAllOrNone(&code_size, sizeof(code_size))) {
     input_buffer_->Seek(read_marker);
-    return CFX_GifDecodeStatus::Unfinished;
+    return GifDecoder::Status::kUnfinished;
   }
 
   gif_image->code_exp = code_size;
@@ -509,7 +509,7 @@
       // in the palette being used.
       if (graphic_control_extension_->trans_index >=
           (2 << GetPaletteExp(gif_image.get()))) {
-        return CFX_GifDecodeStatus::Error;
+        return GifDecoder::Status::kError;
       }
     }
     gif_image->image_GCE = std::move(graphic_control_extension_);
@@ -518,7 +518,7 @@
 
   images_.push_back(std::move(gif_image));
   SaveDecodingStatus(GIF_D_STATUS_IMG_DATA);
-  return CFX_GifDecodeStatus::Success;
+  return GifDecoder::Status::kSuccess;
 }
 
 void CFX_GifContext::DecodingFailureAtTailCleanup(CFX_GifImage* gif_image) {
diff --git a/core/fxcodec/gif/cfx_gifcontext.h b/core/fxcodec/gif/cfx_gifcontext.h
index 9298cb9..27d882f 100644
--- a/core/fxcodec/gif/cfx_gifcontext.h
+++ b/core/fxcodec/gif/cfx_gifcontext.h
@@ -39,9 +39,9 @@
                          int32_t trans_index,
                          int32_t disposal_method,
                          bool interlace);
-  CFX_GifDecodeStatus ReadHeader();
-  CFX_GifDecodeStatus GetFrame();
-  CFX_GifDecodeStatus LoadFrame(int32_t frame_num);
+  GifDecoder::Status ReadHeader();
+  GifDecoder::Status GetFrame();
+  GifDecoder::Status LoadFrame(int32_t frame_num);
   void SetInputBuffer(RetainPtr<CFX_CodecMemory> codec_memory);
   uint32_t GetAvailInput() const;
   size_t GetFrameNum() const { return images_.size(); }
@@ -64,15 +64,15 @@
 
  protected:
   bool ReadAllOrNone(uint8_t* dest, uint32_t size);
-  CFX_GifDecodeStatus ReadGifSignature();
-  CFX_GifDecodeStatus ReadLogicalScreenDescriptor();
+  GifDecoder::Status ReadGifSignature();
+  GifDecoder::Status ReadLogicalScreenDescriptor();
 
   RetainPtr<CFX_CodecMemory> input_buffer_;
 
  private:
   void SaveDecodingStatus(int32_t status);
-  CFX_GifDecodeStatus DecodeExtension();
-  CFX_GifDecodeStatus DecodeImageInfo();
+  GifDecoder::Status DecodeExtension();
+  GifDecoder::Status DecodeImageInfo();
   void DecodingFailureAtTailCleanup(CFX_GifImage* gif_image);
   bool ScanForTerminalMarker();
   uint8_t GetPaletteExp(CFX_GifImage* gif_image) const;
diff --git a/core/fxcodec/gif/cfx_gifcontext_unittest.cpp b/core/fxcodec/gif/cfx_gifcontext_unittest.cpp
index 4cbeeb5..f9de186 100644
--- a/core/fxcodec/gif/cfx_gifcontext_unittest.cpp
+++ b/core/fxcodec/gif/cfx_gifcontext_unittest.cpp
@@ -88,7 +88,7 @@
   {
     uint8_t data[1];
     context.SetTestInputBuffer({data, 0});
-    EXPECT_EQ(CFX_GifDecodeStatus::Unfinished, context.ReadGifSignature());
+    EXPECT_EQ(GifDecoder::Status::kUnfinished, context.ReadGifSignature());
     EXPECT_EQ(0u, context.InputBuffer()->GetPosition());
     context.SetTestInputBuffer({});
   }
@@ -96,14 +96,14 @@
   {
     uint8_t data[] = {'G', 'I', 'F'};
     context.SetTestInputBuffer(data);
-    EXPECT_EQ(CFX_GifDecodeStatus::Unfinished, context.ReadGifSignature());
+    EXPECT_EQ(GifDecoder::Status::kUnfinished, context.ReadGifSignature());
     EXPECT_EQ(0u, context.InputBuffer()->GetPosition());
     context.SetTestInputBuffer({});
   }
   {
     uint8_t data[] = {'N', 'O', 'T', 'G', 'I', 'F'};
     context.SetTestInputBuffer(data);
-    EXPECT_EQ(CFX_GifDecodeStatus::Error, context.ReadGifSignature());
+    EXPECT_EQ(GifDecoder::Status::kError, context.ReadGifSignature());
     EXPECT_EQ(6u, context.InputBuffer()->GetPosition());
     context.SetTestInputBuffer({});
   }
@@ -111,7 +111,7 @@
   {
     uint8_t data[] = {'G', 'I', 'F', '8', '0', 'a'};
     context.SetTestInputBuffer(data);
-    EXPECT_EQ(CFX_GifDecodeStatus::Error, context.ReadGifSignature());
+    EXPECT_EQ(GifDecoder::Status::kError, context.ReadGifSignature());
     EXPECT_EQ(6u, context.InputBuffer()->GetPosition());
     context.SetTestInputBuffer({});
   }
@@ -119,7 +119,7 @@
   {
     uint8_t data[] = {'G', 'I', 'F', '9', '2', 'a'};
     context.SetTestInputBuffer(data);
-    EXPECT_EQ(CFX_GifDecodeStatus::Error, context.ReadGifSignature());
+    EXPECT_EQ(GifDecoder::Status::kError, context.ReadGifSignature());
     EXPECT_EQ(6u, context.InputBuffer()->GetPosition());
     context.SetTestInputBuffer({});
   }
@@ -127,7 +127,7 @@
   {
     uint8_t data[] = {'G', 'I', 'F', '8', '7', 'a'};
     context.SetTestInputBuffer(data);
-    EXPECT_EQ(CFX_GifDecodeStatus::Success, context.ReadGifSignature());
+    EXPECT_EQ(GifDecoder::Status::kSuccess, context.ReadGifSignature());
     EXPECT_EQ(6u, context.InputBuffer()->GetPosition());
     context.SetTestInputBuffer({});
   }
@@ -135,7 +135,7 @@
   {
     uint8_t data[] = {'G', 'I', 'F', '8', '9', 'a'};
     context.SetTestInputBuffer(data);
-    EXPECT_EQ(CFX_GifDecodeStatus::Success, context.ReadGifSignature());
+    EXPECT_EQ(GifDecoder::Status::kSuccess, context.ReadGifSignature());
     EXPECT_EQ(6u, context.InputBuffer()->GetPosition());
     context.SetTestInputBuffer({});
   }
@@ -146,7 +146,7 @@
   {
     uint8_t data[1];
     context.SetTestInputBuffer({data, 0});
-    EXPECT_EQ(CFX_GifDecodeStatus::Unfinished,
+    EXPECT_EQ(GifDecoder::Status::kUnfinished,
               context.ReadLogicalScreenDescriptor());
     context.SetTestInputBuffer({});
   }
@@ -156,7 +156,7 @@
     memset(&lsd, 0, sizeof(CFX_GifLocalScreenDescriptor));
     context.SetTestInputBuffer(lsd);
 
-    EXPECT_EQ(CFX_GifDecodeStatus::Success,
+    EXPECT_EQ(GifDecoder::Status::kSuccess,
               context.ReadLogicalScreenDescriptor());
 
     EXPECT_EQ(sizeof(CFX_GifLocalScreenDescriptor),
@@ -172,7 +172,7 @@
                                                          0x00, 0x01, 0x02};
     context.SetTestInputBuffer(lsd);
 
-    EXPECT_EQ(CFX_GifDecodeStatus::Success,
+    EXPECT_EQ(GifDecoder::Status::kSuccess,
               context.ReadLogicalScreenDescriptor());
 
     EXPECT_EQ(sizeof(CFX_GifLocalScreenDescriptor),
@@ -188,7 +188,7 @@
                                                          0x80, 0x01, 0x02};
     context.SetTestInputBuffer(lsd);
 
-    EXPECT_EQ(CFX_GifDecodeStatus::Unfinished,
+    EXPECT_EQ(GifDecoder::Status::kUnfinished,
               context.ReadLogicalScreenDescriptor());
 
     EXPECT_EQ(0u, context.InputBuffer()->GetPosition());
@@ -204,7 +204,7 @@
     context.SetTestInputBuffer(
         {reinterpret_cast<uint8_t*>(&data), sizeof(data)});
 
-    EXPECT_EQ(CFX_GifDecodeStatus::Success,
+    EXPECT_EQ(GifDecoder::Status::kSuccess,
               context.ReadLogicalScreenDescriptor());
 
     EXPECT_EQ(sizeof(data), context.InputBuffer()->GetPosition());
@@ -232,7 +232,7 @@
     context.SetTestInputBuffer(
         {reinterpret_cast<uint8_t*>(&data), sizeof(data)});
 
-    EXPECT_EQ(CFX_GifDecodeStatus::Error, context.ReadHeader());
+    EXPECT_EQ(GifDecoder::Status::kError, context.ReadHeader());
     EXPECT_EQ(sizeof(data.signature), context.InputBuffer()->GetPosition());
     context.SetTestInputBuffer({});
   }
@@ -242,7 +242,7 @@
     context.SetTestInputBuffer(
         {reinterpret_cast<uint8_t*>(&signature), sizeof(signature)});
 
-    EXPECT_EQ(CFX_GifDecodeStatus::Unfinished, context.ReadHeader());
+    EXPECT_EQ(GifDecoder::Status::kUnfinished, context.ReadHeader());
     EXPECT_EQ(sizeof(signature), context.InputBuffer()->GetPosition());
     context.SetTestInputBuffer({});
   }
@@ -256,7 +256,7 @@
     context.SetTestInputBuffer(
         {reinterpret_cast<uint8_t*>(&data), sizeof(data)});
 
-    EXPECT_EQ(CFX_GifDecodeStatus::Success, context.ReadHeader());
+    EXPECT_EQ(GifDecoder::Status::kSuccess, context.ReadHeader());
     EXPECT_EQ(sizeof(data), context.InputBuffer()->GetPosition());
     EXPECT_EQ(0x000A, context.width_);
     EXPECT_EQ(0x0F00, context.height_);
@@ -273,7 +273,7 @@
     context.SetTestInputBuffer(
         {reinterpret_cast<uint8_t*>(&data), sizeof(data)});
 
-    EXPECT_EQ(CFX_GifDecodeStatus::Unfinished, context.ReadHeader());
+    EXPECT_EQ(GifDecoder::Status::kUnfinished, context.ReadHeader());
     EXPECT_EQ(sizeof(data.signature), context.InputBuffer()->GetPosition());
     context.SetTestInputBuffer({});
   }
@@ -289,7 +289,7 @@
     context.SetTestInputBuffer(
         {reinterpret_cast<uint8_t*>(&data), sizeof(data)});
 
-    EXPECT_EQ(CFX_GifDecodeStatus::Success, context.ReadHeader());
+    EXPECT_EQ(GifDecoder::Status::kSuccess, context.ReadHeader());
     EXPECT_EQ(sizeof(data), context.InputBuffer()->GetPosition());
     EXPECT_EQ(0x000A, context.width_);
     EXPECT_EQ(0x0F00, context.height_);
diff --git a/core/fxcodec/gif/cfx_lzwdecompressor.cpp b/core/fxcodec/gif/cfx_lzwdecompressor.cpp
index ccf5c12..3b8fa62 100644
--- a/core/fxcodec/gif/cfx_lzwdecompressor.cpp
+++ b/core/fxcodec/gif/cfx_lzwdecompressor.cpp
@@ -35,15 +35,15 @@
 
 CFX_LZWDecompressor::~CFX_LZWDecompressor() = default;
 
-CFX_GifDecodeStatus CFX_LZWDecompressor::Decode(const uint8_t* src_buf,
-                                                uint32_t src_size,
-                                                uint8_t* dest_buf,
-                                                uint32_t* dest_size) {
+GifDecoder::Status CFX_LZWDecompressor::Decode(const uint8_t* src_buf,
+                                               uint32_t src_size,
+                                               uint8_t* dest_buf,
+                                               uint32_t* dest_size) {
   if (!src_buf || src_size == 0 || !dest_buf || !dest_size)
-    return CFX_GifDecodeStatus::Error;
+    return GifDecoder::Status::kError;
 
   if (*dest_size == 0)
-    return CFX_GifDecodeStatus::InsufficientDestSize;
+    return GifDecoder::Status::kInsufficientDestSize;
 
   next_in_ = src_buf;
   avail_in_ = src_size;
@@ -54,7 +54,7 @@
   if (decompressed_next_ != 0) {
     uint32_t extracted_size = ExtractData(dest_buf, *dest_size);
     if (decompressed_next_ != 0)
-      return CFX_GifDecodeStatus::InsufficientDestSize;
+      return GifDecoder::Status::kInsufficientDestSize;
 
     dest_buf += extracted_size;
     i += extracted_size;
@@ -62,17 +62,17 @@
 
   while (i <= *dest_size && (avail_in_ > 0 || bits_left_ >= code_size_cur_)) {
     if (code_size_cur_ > GIF_MAX_LZW_EXP)
-      return CFX_GifDecodeStatus::Error;
+      return GifDecoder::Status::kError;
 
     if (avail_in_ > 0) {
       if (bits_left_ > 31)
-        return CFX_GifDecodeStatus::Error;
+        return GifDecoder::Status::kError;
 
       FX_SAFE_UINT32 safe_code = *next_in_++;
       safe_code <<= bits_left_;
       safe_code |= code_store_;
       if (!safe_code.IsValid())
-        return CFX_GifDecodeStatus::Error;
+        return GifDecoder::Status::kError;
 
       code_store_ = safe_code.ValueOrDie();
       --avail_in_;
@@ -90,7 +90,7 @@
       }
       if (code == code_end_) {
         *dest_size = i;
-        return CFX_GifDecodeStatus::Success;
+        return GifDecoder::Status::kSuccess;
       }
 
       if (code_old_ != static_cast<uint16_t>(-1)) {
@@ -98,12 +98,12 @@
           if (code == code_next_) {
             AddCode(code_old_, code_first_);
             if (!DecodeString(code))
-              return CFX_GifDecodeStatus::Error;
+              return GifDecoder::Status::kError;
           } else if (code > code_next_) {
-            return CFX_GifDecodeStatus::Error;
+            return GifDecoder::Status::kError;
           } else {
             if (!DecodeString(code))
-              return CFX_GifDecodeStatus::Error;
+              return GifDecoder::Status::kError;
 
             uint8_t append_char = decompressed_[decompressed_next_ - 1];
             AddCode(code_old_, append_char);
@@ -111,13 +111,13 @@
         }
       } else {
         if (!DecodeString(code))
-          return CFX_GifDecodeStatus::Error;
+          return GifDecoder::Status::kError;
       }
 
       code_old_ = code;
       uint32_t extracted_size = ExtractData(dest_buf, *dest_size - i);
       if (decompressed_next_ != 0)
-        return CFX_GifDecodeStatus::InsufficientDestSize;
+        return GifDecoder::Status::kInsufficientDestSize;
 
       dest_buf += extracted_size;
       i += extracted_size;
@@ -125,10 +125,10 @@
   }
 
   if (avail_in_ != 0)
-    return CFX_GifDecodeStatus::Error;
+    return GifDecoder::Status::kError;
 
   *dest_size = i;
-  return CFX_GifDecodeStatus::Unfinished;
+  return GifDecoder::Status::kUnfinished;
 }
 
 void CFX_LZWDecompressor::ClearTable() {
diff --git a/core/fxcodec/gif/cfx_lzwdecompressor.h b/core/fxcodec/gif/cfx_lzwdecompressor.h
index e6d2c02..979686c 100644
--- a/core/fxcodec/gif/cfx_lzwdecompressor.h
+++ b/core/fxcodec/gif/cfx_lzwdecompressor.h
@@ -11,6 +11,7 @@
 #include <vector>
 
 #include "core/fxcodec/gif/cfx_gif.h"
+#include "core/fxcodec/gif/gif_decoder.h"
 #include "core/fxcrt/fx_memory_wrappers.h"
 
 class CFX_LZWDecompressor {
@@ -25,10 +26,10 @@
                                                      uint8_t code_exp);
   ~CFX_LZWDecompressor();
 
-  CFX_GifDecodeStatus Decode(const uint8_t* src_buf,
-                             uint32_t src_size,
-                             uint8_t* dest_buf,
-                             uint32_t* dest_size);
+  GifDecoder::Status Decode(const uint8_t* src_buf,
+                            uint32_t src_size,
+                            uint8_t* dest_buf,
+                            uint32_t* dest_size);
 
   // Used by unittests, should not be called in production code.
   uint32_t ExtractDataForTest(uint8_t* dest_buf, uint32_t dest_size) {
diff --git a/core/fxcodec/gif/cfx_lzwdecompressor_unittest.cpp b/core/fxcodec/gif/cfx_lzwdecompressor_unittest.cpp
index ac824ac4..e952fa0 100644
--- a/core/fxcodec/gif/cfx_lzwdecompressor_unittest.cpp
+++ b/core/fxcodec/gif/cfx_lzwdecompressor_unittest.cpp
@@ -92,19 +92,19 @@
   uint32_t output_size = pdfium::size(output_data);
 
   EXPECT_EQ(
-      CFX_GifDecodeStatus::Error,
+      GifDecoder::Status::kError,
       decompressor->Decode(nullptr, image_size, output_data, &output_size));
-  EXPECT_EQ(CFX_GifDecodeStatus::Error,
+  EXPECT_EQ(GifDecoder::Status::kError,
             decompressor->Decode(image_data, 0, output_data, &output_size));
   EXPECT_EQ(
-      CFX_GifDecodeStatus::Error,
+      GifDecoder::Status::kError,
       decompressor->Decode(image_data, image_size, nullptr, &output_size));
-  EXPECT_EQ(CFX_GifDecodeStatus::Error,
+  EXPECT_EQ(GifDecoder::Status::kError,
             decompressor->Decode(image_data, image_size, output_data, nullptr));
 
   output_size = 0;
   EXPECT_EQ(
-      CFX_GifDecodeStatus::InsufficientDestSize,
+      GifDecoder::Status::kInsufficientDestSize,
       decompressor->Decode(image_data, image_size, output_data, &output_size));
 }
 
@@ -123,7 +123,7 @@
   uint32_t output_size = pdfium::size(output_data);
 
   EXPECT_EQ(
-      CFX_GifDecodeStatus::Success,
+      GifDecoder::Status::kSuccess,
       decompressor->Decode(image_data, image_size, output_data, &output_size));
 
   EXPECT_EQ(pdfium::size(output_data), output_size);
@@ -155,7 +155,7 @@
   uint32_t output_size = pdfium::size(output_data);
 
   EXPECT_EQ(
-      CFX_GifDecodeStatus::Success,
+      GifDecoder::Status::kSuccess,
       decompressor->Decode(kImageData, image_size, output_data, &output_size));
 
   EXPECT_EQ(pdfium::size(output_data), output_size);
@@ -189,7 +189,7 @@
   uint32_t output_size = pdfium::size(output_data);
 
   EXPECT_EQ(
-      CFX_GifDecodeStatus::Success,
+      GifDecoder::Status::kSuccess,
       decompressor->Decode(kImageData, image_size, output_data, &output_size));
 
   EXPECT_EQ(pdfium::size(output_data), output_size);
@@ -214,6 +214,6 @@
   uint32_t output_size = pdfium::size(output_data);
 
   EXPECT_EQ(
-      CFX_GifDecodeStatus::Error,
+      GifDecoder::Status::kError,
       decompressor->Decode(kImageData, image_size, output_data, &output_size));
 }
diff --git a/core/fxcodec/gif/gif_decoder.cpp b/core/fxcodec/gif/gif_decoder.cpp
index 2a46aa3..1b285c4 100644
--- a/core/fxcodec/gif/gif_decoder.cpp
+++ b/core/fxcodec/gif/gif_decoder.cpp
@@ -20,7 +20,7 @@
 }
 
 // static
-CFX_GifDecodeStatus GifDecoder::ReadHeader(
+GifDecoder::Status GifDecoder::ReadHeader(
     ProgressiveDecoderIface::Context* pContext,
     int* width,
     int* height,
@@ -28,8 +28,8 @@
     CFX_GifPalette** pal_pp,
     int* bg_index) {
   auto* context = static_cast<CFX_GifContext*>(pContext);
-  CFX_GifDecodeStatus ret = context->ReadHeader();
-  if (ret != CFX_GifDecodeStatus::Success)
+  Status ret = context->ReadHeader();
+  if (ret != Status::kSuccess)
     return ret;
 
   *width = context->width_;
@@ -38,21 +38,21 @@
   *pal_pp = context->global_palette_.empty() ? nullptr
                                              : context->global_palette_.data();
   *bg_index = context->bc_index_;
-  return CFX_GifDecodeStatus::Success;
+  return Status::kSuccess;
 }
 
 // static
-std::pair<CFX_GifDecodeStatus, size_t> GifDecoder::LoadFrameInfo(
+std::pair<GifDecoder::Status, size_t> GifDecoder::LoadFrameInfo(
     ProgressiveDecoderIface::Context* pContext) {
   auto* context = static_cast<CFX_GifContext*>(pContext);
-  CFX_GifDecodeStatus ret = context->GetFrame();
-  if (ret != CFX_GifDecodeStatus::Success)
+  Status ret = context->GetFrame();
+  if (ret != Status::kSuccess)
     return {ret, 0};
-  return {CFX_GifDecodeStatus::Success, context->GetFrameNum()};
+  return {Status::kSuccess, context->GetFrameNum()};
 }
 
 // static
-CFX_GifDecodeStatus GifDecoder::LoadFrame(
+GifDecoder::Status GifDecoder::LoadFrame(
     ProgressiveDecoderIface::Context* pContext,
     size_t frame_num) {
   return static_cast<CFX_GifContext*>(pContext)->LoadFrame(frame_num);
diff --git a/core/fxcodec/gif/gif_decoder.h b/core/fxcodec/gif/gif_decoder.h
index 2aaa601..9a4df57 100644
--- a/core/fxcodec/gif/gif_decoder.h
+++ b/core/fxcodec/gif/gif_decoder.h
@@ -24,6 +24,13 @@
 
 class GifDecoder {
  public:
+  enum class Status {
+    kError,
+    kSuccess,
+    kUnfinished,
+    kInsufficientDestSize,  // Only used internally by CGifLZWDecoder::Decode()
+  };
+
   class Delegate {
    public:
     virtual void GifRecordCurrentPosition(uint32_t& cur_pos) = 0;
@@ -41,18 +48,16 @@
 
   static std::unique_ptr<ProgressiveDecoderIface::Context> StartDecode(
       Delegate* pDelegate);
-  static CFX_GifDecodeStatus ReadHeader(
-      ProgressiveDecoderIface::Context* context,
-      int* width,
-      int* height,
-      int* pal_num,
-      CFX_GifPalette** pal_pp,
-      int* bg_index);
-  static std::pair<CFX_GifDecodeStatus, size_t> LoadFrameInfo(
+  static Status ReadHeader(ProgressiveDecoderIface::Context* context,
+                           int* width,
+                           int* height,
+                           int* pal_num,
+                           CFX_GifPalette** pal_pp,
+                           int* bg_index);
+  static std::pair<Status, size_t> LoadFrameInfo(
       ProgressiveDecoderIface::Context* context);
-  static CFX_GifDecodeStatus LoadFrame(
-      ProgressiveDecoderIface::Context* context,
-      size_t frame_num);
+  static Status LoadFrame(ProgressiveDecoderIface::Context* context,
+                          size_t frame_num);
   static FX_FILESIZE GetAvailInput(ProgressiveDecoderIface::Context* context);
   static bool Input(ProgressiveDecoderIface::Context* context,
                     RetainPtr<CFX_CodecMemory> codec_memory,
diff --git a/core/fxcodec/progressive_decoder.cpp b/core/fxcodec/progressive_decoder.cpp
index 14a9569..1ddbcd0 100644
--- a/core/fxcodec/progressive_decoder.cpp
+++ b/core/fxcodec/progressive_decoder.cpp
@@ -829,10 +829,10 @@
   m_pGifContext = GifDecoder::StartDecode(this);
   GifDecoder::Input(m_pGifContext.get(), m_pCodecMemory, nullptr);
   m_SrcComponents = 1;
-  CFX_GifDecodeStatus readResult =
+  GifDecoder::Status readResult =
       GifDecoder::ReadHeader(m_pGifContext.get(), &m_SrcWidth, &m_SrcHeight,
                              &m_GifPltNumber, &m_pGifPalette, &m_GifBgIndex);
-  while (readResult == CFX_GifDecodeStatus::Unfinished) {
+  while (readResult == GifDecoder::Status::kUnfinished) {
     FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT;
     if (!GifReadMoreData(&error_status)) {
       m_pGifContext = nullptr;
@@ -843,7 +843,7 @@
         GifDecoder::ReadHeader(m_pGifContext.get(), &m_SrcWidth, &m_SrcHeight,
                                &m_GifPltNumber, &m_pGifPalette, &m_GifBgIndex);
   }
-  if (readResult == CFX_GifDecodeStatus::Success) {
+  if (readResult == GifDecoder::Status::kSuccess) {
     m_SrcBPC = 8;
     m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight);
     return true;
@@ -867,9 +867,9 @@
 }
 
 FXCODEC_STATUS ProgressiveDecoder::GifContinueDecode() {
-  CFX_GifDecodeStatus readRes =
+  GifDecoder::Status readRes =
       GifDecoder::LoadFrame(m_pGifContext.get(), m_FrameCur);
-  while (readRes == CFX_GifDecodeStatus::Unfinished) {
+  while (readRes == GifDecoder::Status::kUnfinished) {
     FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH;
     if (!GifReadMoreData(&error_status)) {
       m_pDeviceBitmap = nullptr;
@@ -880,7 +880,7 @@
     readRes = GifDecoder::LoadFrame(m_pGifContext.get(), m_FrameCur);
   }
 
-  if (readRes == CFX_GifDecodeStatus::Success) {
+  if (readRes == GifDecoder::Status::kSuccess) {
     m_pDeviceBitmap = nullptr;
     m_pFile = nullptr;
     m_status = FXCODEC_STATUS_DECODE_FINISH;
@@ -2117,10 +2117,10 @@
 #ifdef PDF_ENABLE_XFA_GIF
     case FXCODEC_IMAGE_GIF: {
       while (true) {
-        CFX_GifDecodeStatus readResult;
+        GifDecoder::Status readResult;
         std::tie(readResult, m_FrameNumber) =
             GifDecoder::LoadFrameInfo(m_pGifContext.get());
-        while (readResult == CFX_GifDecodeStatus::Unfinished) {
+        while (readResult == GifDecoder::Status::kUnfinished) {
           FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_READ;
           if (!GifReadMoreData(&error_status))
             return {error_status, 0};
@@ -2128,7 +2128,7 @@
           std::tie(readResult, m_FrameNumber) =
               GifDecoder::LoadFrameInfo(m_pGifContext.get());
         }
-        if (readResult == CFX_GifDecodeStatus::Success) {
+        if (readResult == GifDecoder::Status::kSuccess) {
           m_status = FXCODEC_STATUS_DECODE_READY;
           return {m_status, m_FrameNumber};
         }
diff --git a/testing/fuzzers/pdf_lzw_fuzzer.cc b/testing/fuzzers/pdf_lzw_fuzzer.cc
index e4d993e..e868ae4 100644
--- a/testing/fuzzers/pdf_lzw_fuzzer.cc
+++ b/testing/fuzzers/pdf_lzw_fuzzer.cc
@@ -27,7 +27,7 @@
     // This cast should be safe since the caller is checking for overflow on
     // the initial data.
     uint32_t dest_size = static_cast<uint32_t>(dest_buf.size());
-    if (CFX_GifDecodeStatus::InsufficientDestSize !=
+    if (GifDecoder::Status::kInsufficientDestSize !=
         decompressor->Decode(src_buf, src_size, dest_buf.data(), &dest_size)) {
       return;
     }