Rename CFX_LZWDecompressor to fxcodec::LZWDecompressor
Give it the same treatment we previously applied to GifDecoder.
Change-Id: Iae43c951400dab186f314f0dc6f73d6b8bc62b0c
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/80693
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxcodec/BUILD.gn b/core/fxcodec/BUILD.gn
index 842695c..784dcce 100644
--- a/core/fxcodec/BUILD.gn
+++ b/core/fxcodec/BUILD.gn
@@ -107,12 +107,12 @@
"gif/cfx_gif.h",
"gif/cfx_gifcontext.cpp",
"gif/cfx_gifcontext.h",
- "gif/cfx_lzwdecompressor.cpp",
- "gif/cfx_lzwdecompressor.h",
"gif/gif_decoder.cpp",
"gif/gif_decoder.h",
"gif/gif_progressive_decoder.cpp",
"gif/gif_progressive_decoder.h",
+ "gif/lzw_decompressor.cpp",
+ "gif/lzw_decompressor.h",
]
}
if (pdf_enable_xfa_png) {
@@ -155,7 +155,7 @@
if (pdf_enable_xfa_gif) {
sources += [
"gif/cfx_gifcontext_unittest.cpp",
- "gif/cfx_lzwdecompressor_unittest.cpp",
+ "gif/lzw_decompressor_unittest.cpp",
]
}
}
diff --git a/core/fxcodec/gif/cfx_gifcontext.cpp b/core/fxcodec/gif/cfx_gifcontext.cpp
index 42f6d9b..c1ec81a 100644
--- a/core/fxcodec/gif/cfx_gifcontext.cpp
+++ b/core/fxcodec/gif/cfx_gifcontext.cpp
@@ -234,33 +234,33 @@
}
if (!lzw_decompressor_.get()) {
- lzw_decompressor_ = CFX_LZWDecompressor::Create(
- GetPaletteExp(gif_image), gif_image->code_exp);
+ lzw_decompressor_ = LZWDecompressor::Create(GetPaletteExp(gif_image),
+ gif_image->code_exp);
}
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_LZWDecompressor::Status ret =
+ LZWDecompressor::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_LZWDecompressor::Status::kError;
- if (ret == CFX_LZWDecompressor::Status::kError) {
+ : LZWDecompressor::Status::kError;
+ if (ret == LZWDecompressor::Status::kError) {
DecodingFailureAtTailCleanup(gif_image);
return GifDecoder::Status::kError;
}
- while (ret != CFX_LZWDecompressor::Status::kError) {
- if (ret == CFX_LZWDecompressor::Status::kSuccess) {
+ while (ret != LZWDecompressor::Status::kError) {
+ if (ret == LZWDecompressor::Status::kSuccess) {
ReadScanline(gif_image->row_num, gif_image->row_buffer.data());
gif_image->row_buffer.clear();
SaveDecodingStatus(GIF_D_STATUS_TAIL);
return GifDecoder::Status::kSuccess;
}
- if (ret == CFX_LZWDecompressor::Status::kUnfinished) {
+ if (ret == LZWDecompressor::Status::kUnfinished) {
read_marker = input_buffer_->GetPosition();
if (!ReadAllOrNone(&img_data_size, sizeof(img_data_size)))
return GifDecoder::Status::kUnfinished;
@@ -273,7 +273,7 @@
}
if (!lzw_decompressor_.get()) {
- lzw_decompressor_ = CFX_LZWDecompressor::Create(
+ lzw_decompressor_ = LZWDecompressor::Create(
GetPaletteExp(gif_image), gif_image->code_exp);
}
SaveDecodingStatus(GIF_D_STATUS_IMG_DATA);
@@ -284,11 +284,11 @@
img_data.data(), img_data_size,
gif_image->row_buffer.data() + img_row_offset_,
&img_row_avail_size_)
- : CFX_LZWDecompressor::Status::kError;
+ : LZWDecompressor::Status::kError;
}
}
- if (ret == CFX_LZWDecompressor::Status::kInsufficientDestSize) {
+ if (ret == LZWDecompressor::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_];
@@ -311,11 +311,11 @@
img_data.data(), img_data_size,
gif_image->row_buffer.data() + img_row_offset_,
&img_row_avail_size_)
- : CFX_LZWDecompressor::Status::kError;
+ : LZWDecompressor::Status::kError;
}
- if (ret == CFX_LZWDecompressor::Status::kInsufficientDestSize ||
- ret == CFX_LZWDecompressor::Status::kError) {
+ if (ret == LZWDecompressor::Status::kInsufficientDestSize ||
+ ret == LZWDecompressor::Status::kError) {
DecodingFailureAtTailCleanup(gif_image);
return GifDecoder::Status::kError;
}
diff --git a/core/fxcodec/gif/cfx_gifcontext.h b/core/fxcodec/gif/cfx_gifcontext.h
index 27d882f..050125a 100644
--- a/core/fxcodec/gif/cfx_gifcontext.h
+++ b/core/fxcodec/gif/cfx_gifcontext.h
@@ -11,8 +11,8 @@
#include <vector>
#include "core/fxcodec/gif/cfx_gif.h"
-#include "core/fxcodec/gif/cfx_lzwdecompressor.h"
#include "core/fxcodec/gif/gif_decoder.h"
+#include "core/fxcodec/gif/lzw_decompressor.h"
#include "core/fxcrt/retain_ptr.h"
#include "core/fxcrt/unowned_ptr.h"
@@ -54,7 +54,7 @@
int32_t decode_status_ = GIF_D_STATUS_SIG;
std::unique_ptr<CFX_GifGraphicControlExtension> graphic_control_extension_;
std::vector<std::unique_ptr<CFX_GifImage>> images_;
- std::unique_ptr<CFX_LZWDecompressor> lzw_decompressor_;
+ std::unique_ptr<LZWDecompressor> lzw_decompressor_;
int width_ = 0;
int height_ = 0;
uint8_t bc_index_ = 0;
diff --git a/core/fxcodec/gif/cfx_lzwdecompressor.cpp b/core/fxcodec/gif/lzw_decompressor.cpp
similarity index 83%
rename from core/fxcodec/gif/cfx_lzwdecompressor.cpp
rename to core/fxcodec/gif/lzw_decompressor.cpp
index 144dca6..12b30fc 100644
--- a/core/fxcodec/gif/cfx_lzwdecompressor.cpp
+++ b/core/fxcodec/gif/lzw_decompressor.cpp
@@ -4,7 +4,7 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#include "core/fxcodec/gif/cfx_lzwdecompressor.h"
+#include "core/fxcodec/gif/lzw_decompressor.h"
#include <algorithm>
#include <cstring>
@@ -15,30 +15,31 @@
#include "third_party/base/numerics/safe_math.h"
#include "third_party/base/ptr_util.h"
-std::unique_ptr<CFX_LZWDecompressor> CFX_LZWDecompressor::Create(
- uint8_t color_exp,
- uint8_t code_exp) {
+namespace fxcodec {
+
+std::unique_ptr<LZWDecompressor> LZWDecompressor::Create(uint8_t color_exp,
+ uint8_t code_exp) {
// |color_exp| generates 2^(n + 1) codes, where as the code_exp reserves 2^n.
// This is a quirk of the GIF spec.
if (code_exp > GIF_MAX_LZW_EXP || code_exp < color_exp + 1)
return nullptr;
// Private ctor.
- return pdfium::WrapUnique(new CFX_LZWDecompressor(color_exp, code_exp));
+ return pdfium::WrapUnique(new LZWDecompressor(color_exp, code_exp));
}
-CFX_LZWDecompressor::CFX_LZWDecompressor(uint8_t color_exp, uint8_t code_exp)
+LZWDecompressor::LZWDecompressor(uint8_t color_exp, uint8_t code_exp)
: code_size_(code_exp),
code_color_end_(static_cast<uint16_t>(1 << (color_exp + 1))),
code_clear_(static_cast<uint16_t>(1 << code_exp)),
code_end_(static_cast<uint16_t>((1 << code_exp) + 1)) {}
-CFX_LZWDecompressor::~CFX_LZWDecompressor() = default;
+LZWDecompressor::~LZWDecompressor() = default;
-CFX_LZWDecompressor::Status CFX_LZWDecompressor::Decode(const uint8_t* src_buf,
- uint32_t src_size,
- uint8_t* dest_buf,
- uint32_t* dest_size) {
+LZWDecompressor::Status 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 Status::kError;
@@ -131,7 +132,7 @@
return Status::kUnfinished;
}
-void CFX_LZWDecompressor::ClearTable() {
+void LZWDecompressor::ClearTable() {
code_size_cur_ = code_size_ + 1;
code_next_ = code_end_ + 1;
code_old_ = static_cast<uint16_t>(-1);
@@ -142,7 +143,7 @@
decompressed_next_ = 0;
}
-void CFX_LZWDecompressor::AddCode(uint16_t prefix_code, uint8_t append_char) {
+void LZWDecompressor::AddCode(uint16_t prefix_code, uint8_t append_char) {
if (code_next_ == GIF_MAX_LZW_CODE)
return;
@@ -154,7 +155,7 @@
}
}
-bool CFX_LZWDecompressor::DecodeString(uint16_t code) {
+bool LZWDecompressor::DecodeString(uint16_t code) {
decompressed_.resize(code_next_ - code_clear_ + 1);
decompressed_next_ = 0;
@@ -175,8 +176,7 @@
return true;
}
-uint32_t CFX_LZWDecompressor::ExtractData(uint8_t* dest_buf,
- uint32_t dest_size) {
+uint32_t LZWDecompressor::ExtractData(uint8_t* dest_buf, uint32_t dest_size) {
if (dest_size == 0)
return 0;
@@ -188,3 +188,5 @@
decompressed_next_ -= copy_size;
return copy_size;
}
+
+} // namespace fxcodec
diff --git a/core/fxcodec/gif/cfx_lzwdecompressor.h b/core/fxcodec/gif/lzw_decompressor.h
similarity index 79%
rename from core/fxcodec/gif/cfx_lzwdecompressor.h
rename to core/fxcodec/gif/lzw_decompressor.h
index f1628ac..390cedb 100644
--- a/core/fxcodec/gif/cfx_lzwdecompressor.h
+++ b/core/fxcodec/gif/lzw_decompressor.h
@@ -4,8 +4,8 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#ifndef CORE_FXCODEC_GIF_CFX_LZWDECOMPRESSOR_H_
-#define CORE_FXCODEC_GIF_CFX_LZWDECOMPRESSOR_H_
+#ifndef CORE_FXCODEC_GIF_LZW_DECOMPRESSOR_H_
+#define CORE_FXCODEC_GIF_LZW_DECOMPRESSOR_H_
#include <memory>
#include <vector>
@@ -13,7 +13,9 @@
#include "core/fxcodec/gif/cfx_gif.h"
#include "core/fxcrt/fx_memory_wrappers.h"
-class CFX_LZWDecompressor {
+namespace fxcodec {
+
+class LZWDecompressor {
public:
enum class Status {
kError,
@@ -28,9 +30,9 @@
};
// Returns nullptr on error
- static std::unique_ptr<CFX_LZWDecompressor> Create(uint8_t color_exp,
- uint8_t code_exp);
- ~CFX_LZWDecompressor();
+ static std::unique_ptr<LZWDecompressor> Create(uint8_t color_exp,
+ uint8_t code_exp);
+ ~LZWDecompressor();
Status Decode(const uint8_t* src_buf,
uint32_t src_size,
@@ -49,7 +51,7 @@
private:
// Use Create() instead.
- CFX_LZWDecompressor(uint8_t color_exp, uint8_t code_exp);
+ LZWDecompressor(uint8_t color_exp, uint8_t code_exp);
void ClearTable();
void AddCode(uint16_t prefix_code, uint8_t append_char);
@@ -73,4 +75,8 @@
CodeEntry code_table_[GIF_MAX_LZW_CODE];
};
-#endif // CORE_FXCODEC_GIF_CFX_LZWDECOMPRESSOR_H_
+} // namespace fxcodec
+
+using LZWDecompressor = fxcodec::LZWDecompressor;
+
+#endif // CORE_FXCODEC_GIF_LZW_DECOMPRESSOR_H_
diff --git a/core/fxcodec/gif/cfx_lzwdecompressor_unittest.cpp b/core/fxcodec/gif/lzw_decompressor_unittest.cpp
similarity index 83%
rename from core/fxcodec/gif/cfx_lzwdecompressor_unittest.cpp
rename to core/fxcodec/gif/lzw_decompressor_unittest.cpp
index 1e42c1b..3434beb 100644
--- a/core/fxcodec/gif/cfx_lzwdecompressor_unittest.cpp
+++ b/core/fxcodec/gif/lzw_decompressor_unittest.cpp
@@ -2,21 +2,21 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "core/fxcodec/gif/cfx_lzwdecompressor.h"
+#include "core/fxcodec/gif/lzw_decompressor.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/base/stl_util.h"
-TEST(CFX_LZWDecompressor, CreateBadParams) {
- EXPECT_EQ(nullptr, CFX_LZWDecompressor::Create(0x10, 0x02));
- EXPECT_EQ(nullptr, CFX_LZWDecompressor::Create(0x04, 0x0F));
- EXPECT_EQ(nullptr, CFX_LZWDecompressor::Create(0x02, 0x02));
+TEST(LZWDecompressor, CreateBadParams) {
+ EXPECT_EQ(nullptr, LZWDecompressor::Create(0x10, 0x02));
+ EXPECT_EQ(nullptr, LZWDecompressor::Create(0x04, 0x0F));
+ EXPECT_EQ(nullptr, LZWDecompressor::Create(0x02, 0x02));
}
-TEST(CFX_LZWDecompressor, ExtractData) {
+TEST(LZWDecompressor, ExtractData) {
uint8_t palette_exp = 0x1;
uint8_t code_exp = 0x2;
- auto decompressor = CFX_LZWDecompressor::Create(palette_exp, code_exp);
+ auto decompressor = LZWDecompressor::Create(palette_exp, code_exp);
ASSERT_NE(nullptr, decompressor);
// Check that 0 length extract does nothing
@@ -79,10 +79,10 @@
}
}
-TEST(CFX_LZWDecompressor, DecodeBadParams) {
+TEST(LZWDecompressor, DecodeBadParams) {
uint8_t palette_exp = 0x0;
uint8_t code_exp = 0x2;
- auto decompressor = CFX_LZWDecompressor::Create(palette_exp, code_exp);
+ auto decompressor = LZWDecompressor::Create(palette_exp, code_exp);
ASSERT_NE(nullptr, decompressor);
uint8_t image_data[10];
@@ -92,26 +92,26 @@
uint32_t output_size = pdfium::size(output_data);
EXPECT_EQ(
- CFX_LZWDecompressor::Status::kError,
+ LZWDecompressor::Status::kError,
decompressor->Decode(nullptr, image_size, output_data, &output_size));
- EXPECT_EQ(CFX_LZWDecompressor::Status::kError,
+ EXPECT_EQ(LZWDecompressor::Status::kError,
decompressor->Decode(image_data, 0, output_data, &output_size));
EXPECT_EQ(
- CFX_LZWDecompressor::Status::kError,
+ LZWDecompressor::Status::kError,
decompressor->Decode(image_data, image_size, nullptr, &output_size));
- EXPECT_EQ(CFX_LZWDecompressor::Status::kError,
+ EXPECT_EQ(LZWDecompressor::Status::kError,
decompressor->Decode(image_data, image_size, output_data, nullptr));
output_size = 0;
EXPECT_EQ(
- CFX_LZWDecompressor::Status::kInsufficientDestSize,
+ LZWDecompressor::Status::kInsufficientDestSize,
decompressor->Decode(image_data, image_size, output_data, &output_size));
}
-TEST(CFX_LZWDecompressor, Decode1x1SingleColour) {
+TEST(LZWDecompressor, Decode1x1SingleColour) {
uint8_t palette_exp = 0x0;
uint8_t code_exp = 0x2;
- auto decompressor = CFX_LZWDecompressor::Create(palette_exp, code_exp);
+ auto decompressor = LZWDecompressor::Create(palette_exp, code_exp);
ASSERT_NE(nullptr, decompressor);
uint8_t image_data[] = {0x44, 0x01};
@@ -123,17 +123,17 @@
uint32_t output_size = pdfium::size(output_data);
EXPECT_EQ(
- CFX_LZWDecompressor::Status::kSuccess,
+ LZWDecompressor::Status::kSuccess,
decompressor->Decode(image_data, image_size, output_data, &output_size));
EXPECT_EQ(pdfium::size(output_data), output_size);
EXPECT_TRUE(0 == memcmp(expected_data, output_data, sizeof(expected_data)));
}
-TEST(CFX_LZWDecompressor, Decode10x10SingleColour) {
+TEST(LZWDecompressor, Decode10x10SingleColour) {
uint8_t palette_exp = 0x0;
uint8_t code_exp = 0x2;
- auto decompressor = CFX_LZWDecompressor::Create(palette_exp, code_exp);
+ auto decompressor = LZWDecompressor::Create(palette_exp, code_exp);
ASSERT_NE(nullptr, decompressor);
static constexpr uint8_t kImageData[] = {0x84, 0x8F, 0xA9, 0xCB,
@@ -155,17 +155,17 @@
uint32_t output_size = pdfium::size(output_data);
EXPECT_EQ(
- CFX_LZWDecompressor::Status::kSuccess,
+ LZWDecompressor::Status::kSuccess,
decompressor->Decode(kImageData, image_size, output_data, &output_size));
EXPECT_EQ(pdfium::size(output_data), output_size);
EXPECT_TRUE(0 == memcmp(kExpectedData, output_data, sizeof(kExpectedData)));
}
-TEST(CFX_LZWDecompressor, Decode10x10MultipleColour) {
+TEST(LZWDecompressor, Decode10x10MultipleColour) {
uint8_t palette_exp = 0x1;
uint8_t code_exp = 0x2;
- auto decompressor = CFX_LZWDecompressor::Create(palette_exp, code_exp);
+ auto decompressor = LZWDecompressor::Create(palette_exp, code_exp);
ASSERT_NE(nullptr, decompressor);
static constexpr uint8_t kImageData[] = {
@@ -189,18 +189,18 @@
uint32_t output_size = pdfium::size(output_data);
EXPECT_EQ(
- CFX_LZWDecompressor::Status::kSuccess,
+ LZWDecompressor::Status::kSuccess,
decompressor->Decode(kImageData, image_size, output_data, &output_size));
EXPECT_EQ(pdfium::size(output_data), output_size);
EXPECT_TRUE(0 == memcmp(kExpectedData, output_data, sizeof(kExpectedData)));
}
-TEST(CFX_LZWDecompressor, HandleColourCodeOutOfPalette) {
+TEST(LZWDecompressor, HandleColourCodeOutOfPalette) {
uint8_t palette_exp = 0x2; // Image uses 10 colours, so the palette exp
// should be 3, 2^(3+1) = 16 colours.
uint8_t code_exp = 0x4;
- auto decompressor = CFX_LZWDecompressor::Create(palette_exp, code_exp);
+ auto decompressor = LZWDecompressor::Create(palette_exp, code_exp);
ASSERT_NE(nullptr, decompressor);
static constexpr uint8_t kImageData[] = {
@@ -214,6 +214,6 @@
uint32_t output_size = pdfium::size(output_data);
EXPECT_EQ(
- CFX_LZWDecompressor::Status::kError,
+ LZWDecompressor::Status::kError,
decompressor->Decode(kImageData, image_size, output_data, &output_size));
}
diff --git a/testing/fuzzers/pdf_lzw_fuzzer.cc b/testing/fuzzers/pdf_lzw_fuzzer.cc
index 9ab5886..196841a 100644
--- a/testing/fuzzers/pdf_lzw_fuzzer.cc
+++ b/testing/fuzzers/pdf_lzw_fuzzer.cc
@@ -4,7 +4,7 @@
#include <vector>
-#include "core/fxcodec/gif/cfx_lzwdecompressor.h"
+#include "core/fxcodec/gif/lzw_decompressor.h"
#include "third_party/base/numerics/safe_conversions.h"
// Between 2x and 5x is a standard range for LZW according to a quick
@@ -16,8 +16,8 @@
size_t src_size,
uint8_t color_exp,
uint8_t code_exp) {
- std::unique_ptr<CFX_LZWDecompressor> decompressor =
- CFX_LZWDecompressor::Create(color_exp, code_exp);
+ std::unique_ptr<LZWDecompressor> decompressor =
+ LZWDecompressor::Create(color_exp, code_exp);
if (!decompressor)
return;
@@ -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_LZWDecompressor::Status::kInsufficientDestSize !=
+ if (LZWDecompressor::Status::kInsufficientDestSize !=
decompressor->Decode(src_buf, src_size, dest_buf.data(), &dest_size)) {
return;
}