Get rid of CCodec_ModuleMgr::GetFlateModule().
The CCodec_FlateModule class consists of a set of methods that can all
be static. Make the methods static, and make sure CCodec_FlateModule
cannot be instantiated. Then CCodec_ModuleMgr::GetFlateModule() becomes
pointless and all the callers can just call CCodec_FlateModule directly.
Change-Id: I4ad3b9a414eb6ec7355450739269300f1df99c21
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/55010
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/cpdf_modulemgr.cpp b/core/fpdfapi/cpdf_modulemgr.cpp
index 34fe049..5c907d9 100644
--- a/core/fpdfapi/cpdf_modulemgr.cpp
+++ b/core/fpdfapi/cpdf_modulemgr.cpp
@@ -80,10 +80,6 @@
return m_pCodecModule->GetIccModule();
}
-CCodec_FlateModule* CPDF_ModuleMgr::GetFlateModule() {
- return m_pCodecModule->GetFlateModule();
-}
-
void CPDF_ModuleMgr::InitPageModule() {
m_pPageModule = pdfium::MakeUnique<CPDF_PageModule>();
}
diff --git a/core/fpdfapi/parser/fpdf_parser_decode.cpp b/core/fpdfapi/parser/fpdf_parser_decode.cpp
index e90e740..05784df 100644
--- a/core/fpdfapi/parser/fpdf_parser_decode.cpp
+++ b/core/fpdfapi/parser/fpdf_parser_decode.cpp
@@ -337,9 +337,9 @@
if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns))
return nullptr;
}
- return CPDF_ModuleMgr::Get()->GetFlateModule()->CreateDecoder(
- src_span, width, height, nComps, bpc, predictor, Colors, BitsPerComponent,
- Columns);
+ return CCodec_FlateModule::CreateDecoder(src_span, width, height, nComps, bpc,
+ predictor, Colors, BitsPerComponent,
+ Columns);
}
uint32_t FlateOrLZWDecode(bool bLZW,
@@ -362,7 +362,7 @@
if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns))
return FX_INVALID_OFFSET;
}
- return CPDF_ModuleMgr::Get()->GetFlateModule()->FlateOrLZWDecode(
+ return CCodec_FlateModule::FlateOrLZWDecode(
bLZW, src_span, bEarlyChange, predictor, Colors, BitsPerComponent,
Columns, estimated_size, dest_buf, dest_size);
}
@@ -587,15 +587,13 @@
bool FlateEncode(pdfium::span<const uint8_t> src_span,
std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf,
uint32_t* dest_size) {
- CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule();
- return pEncoders->GetFlateModule()->Encode(src_span.data(), src_span.size(),
- dest_buf, dest_size);
+ return CCodec_FlateModule::Encode(src_span.data(), src_span.size(), dest_buf,
+ dest_size);
}
uint32_t FlateDecode(pdfium::span<const uint8_t> src_span,
std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf,
uint32_t* dest_size) {
- CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule();
- return pEncoders->GetFlateModule()->FlateOrLZWDecode(
- false, src_span, false, 0, 0, 0, 0, 0, dest_buf, dest_size);
+ return CCodec_FlateModule::FlateOrLZWDecode(false, src_span, false, 0, 0, 0,
+ 0, 0, dest_buf, dest_size);
}
diff --git a/core/fxcodec/codec/ccodec_flatemodule.cpp b/core/fxcodec/codec/ccodec_flatemodule.cpp
index f447ec5..47bf80a 100644
--- a/core/fxcodec/codec/ccodec_flatemodule.cpp
+++ b/core/fxcodec/codec/ccodec_flatemodule.cpp
@@ -761,6 +761,7 @@
} // namespace
+// static
std::unique_ptr<CCodec_ScanlineDecoder> CCodec_FlateModule::CreateDecoder(
pdfium::span<const uint8_t> src_span,
int width,
@@ -781,6 +782,7 @@
BitsPerComponent, Columns);
}
+// static
uint32_t CCodec_FlateModule::FlateOrLZWDecode(
bool bLZW,
pdfium::span<const uint8_t> src_span,
@@ -834,6 +836,7 @@
return ret ? offset : FX_INVALID_OFFSET;
}
+// static
bool CCodec_FlateModule::Encode(
const uint8_t* src_buf,
uint32_t src_size,
diff --git a/core/fxcodec/codec/ccodec_flatemodule.h b/core/fxcodec/codec/ccodec_flatemodule.h
index d58c184..9f16193 100644
--- a/core/fxcodec/codec/ccodec_flatemodule.h
+++ b/core/fxcodec/codec/ccodec_flatemodule.h
@@ -17,7 +17,7 @@
class CCodec_FlateModule {
public:
- std::unique_ptr<CCodec_ScanlineDecoder> CreateDecoder(
+ static std::unique_ptr<CCodec_ScanlineDecoder> CreateDecoder(
pdfium::span<const uint8_t> src_buf,
int width,
int height,
@@ -28,21 +28,26 @@
int BitsPerComponent,
int Columns);
- uint32_t FlateOrLZWDecode(bool bLZW,
- pdfium::span<const uint8_t> src_buf,
- bool bEarlyChange,
- int predictor,
- int Colors,
- int BitsPerComponent,
- int Columns,
- uint32_t estimated_size,
- std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf,
- uint32_t* dest_size);
+ static uint32_t FlateOrLZWDecode(
+ bool bLZW,
+ pdfium::span<const uint8_t> src_buf,
+ bool bEarlyChange,
+ int predictor,
+ int Colors,
+ int BitsPerComponent,
+ int Columns,
+ uint32_t estimated_size,
+ std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf,
+ uint32_t* dest_size);
- bool Encode(const uint8_t* src_buf,
- uint32_t src_size,
- std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf,
- uint32_t* dest_size);
+ static bool Encode(const uint8_t* src_buf,
+ uint32_t src_size,
+ std::unique_ptr<uint8_t, FxFreeDeleter>* dest_buf,
+ uint32_t* dest_size);
+
+ CCodec_FlateModule() = delete;
+ CCodec_FlateModule(const CCodec_FlateModule&) = delete;
+ CCodec_FlateModule& operator=(const CCodec_FlateModule&) = delete;
};
#endif // CORE_FXCODEC_CODEC_CCODEC_FLATEMODULE_H_
diff --git a/core/fxcodec/codec/fx_codec.cpp b/core/fxcodec/codec/fx_codec.cpp
index b907d5d..0a34a1d 100644
--- a/core/fxcodec/codec/fx_codec.cpp
+++ b/core/fxcodec/codec/fx_codec.cpp
@@ -13,7 +13,6 @@
#include "core/fxcodec/codec/ccodec_basicmodule.h"
#include "core/fxcodec/codec/ccodec_faxmodule.h"
-#include "core/fxcodec/codec/ccodec_flatemodule.h"
#include "core/fxcodec/codec/ccodec_iccmodule.h"
#include "core/fxcodec/codec/ccodec_jbig2module.h"
#include "core/fxcodec/codec/ccodec_jpegmodule.h"
@@ -31,10 +30,9 @@
m_pJpegModule(pdfium::MakeUnique<CCodec_JpegModule>()),
m_pJpxModule(pdfium::MakeUnique<CCodec_JpxModule>()),
m_pJbig2Module(pdfium::MakeUnique<CCodec_Jbig2Module>()),
- m_pIccModule(pdfium::MakeUnique<CCodec_IccModule>()),
- m_pFlateModule(pdfium::MakeUnique<CCodec_FlateModule>()) {}
+ m_pIccModule(pdfium::MakeUnique<CCodec_IccModule>()) {}
-CCodec_ModuleMgr::~CCodec_ModuleMgr() {}
+CCodec_ModuleMgr::~CCodec_ModuleMgr() = default;
bool CCodec_BasicModule::RunLengthEncode(
pdfium::span<const uint8_t> src_span,
diff --git a/core/fxcodec/fx_codec.h b/core/fxcodec/fx_codec.h
index 10792ec..bb332e9 100644
--- a/core/fxcodec/fx_codec.h
+++ b/core/fxcodec/fx_codec.h
@@ -36,7 +36,6 @@
class CCodec_BasicModule;
class CCodec_FaxModule;
-class CCodec_FlateModule;
class CCodec_IccModule;
class CCodec_Jbig2Module;
class CCodec_JpegModule;
@@ -71,7 +70,6 @@
CCodec_JpxModule* GetJpxModule() const { return m_pJpxModule.get(); }
CCodec_Jbig2Module* GetJbig2Module() const { return m_pJbig2Module.get(); }
CCodec_IccModule* GetIccModule() const { return m_pIccModule.get(); }
- CCodec_FlateModule* GetFlateModule() const { return m_pFlateModule.get(); }
#ifdef PDF_ENABLE_XFA
std::unique_ptr<CCodec_ProgressiveDecoder> CreateProgressiveDecoder();
@@ -130,8 +128,6 @@
std::unique_ptr<CCodec_TiffModule> m_pTiffModule;
#endif // PDF_ENABLE_XFA_TIFF
#endif // PDF_ENABLE_XFA
-
- std::unique_ptr<CCodec_FlateModule> m_pFlateModule;
};
void ReverseRGB(uint8_t* pDestBuf, const uint8_t* pSrcBuf, int pixels);
diff --git a/core/fxcodec/jbig2/JBig2_GrdProc.cpp b/core/fxcodec/jbig2/JBig2_GrdProc.cpp
index 278b5c0..2394183 100644
--- a/core/fxcodec/jbig2/JBig2_GrdProc.cpp
+++ b/core/fxcodec/jbig2/JBig2_GrdProc.cpp
@@ -11,7 +11,6 @@
#include <utility>
#include "core/fxcodec/codec/ccodec_faxmodule.h"
-#include "core/fxcodec/fx_codec.h"
#include "core/fxcodec/jbig2/JBig2_ArithDecoder.h"
#include "core/fxcodec/jbig2/JBig2_BitStream.h"
#include "core/fxcodec/jbig2/JBig2_Image.h"
diff --git a/core/fxge/win32/cfx_psrenderer.cpp b/core/fxge/win32/cfx_psrenderer.cpp
index cb83a82..d1aedf2 100644
--- a/core/fxge/win32/cfx_psrenderer.cpp
+++ b/core/fxge/win32/cfx_psrenderer.cpp
@@ -63,8 +63,8 @@
uint32_t dest_size = src_size;
if (PSLevel >= 3) {
std::unique_ptr<uint8_t, FxFreeDeleter> dest_buf_unique;
- if (pEncoders->GetFlateModule()->Encode(src_buf, src_size, &dest_buf_unique,
- &dest_size)) {
+ if (CCodec_FlateModule::Encode(src_buf, src_size, &dest_buf_unique,
+ &dest_size)) {
dest_buf = dest_buf_unique.release();
*filter = "/FlateDecode filter ";
}
diff --git a/xfa/fxfa/parser/cxfa_localemgr.cpp b/xfa/fxfa/parser/cxfa_localemgr.cpp
index fbfc560..1ddadcd 100644
--- a/xfa/fxfa/parser/cxfa_localemgr.cpp
+++ b/xfa/fxfa/parser/cxfa_localemgr.cpp
@@ -13,7 +13,6 @@
#include "core/fpdfapi/cpdf_modulemgr.h"
#include "core/fxcodec/codec/ccodec_flatemodule.h"
-#include "core/fxcodec/fx_codec.h"
#include "fxjs/xfa/cjx_object.h"
#include "third_party/base/ptr_util.h"
#include "xfa/fxfa/parser/cxfa_acrobat.h"
@@ -1073,9 +1072,8 @@
std::unique_ptr<uint8_t, FxFreeDeleter> output;
uint32_t dwSize;
- CCodec_ModuleMgr* pCodecMgr = CPDF_ModuleMgr::Get()->GetCodecModule();
- pCodecMgr->GetFlateModule()->FlateOrLZWDecode(false, src_span, true, 0, 0, 0,
- 0, 0, &output, &dwSize);
+ CCodec_FlateModule::FlateOrLZWDecode(false, src_span, true, 0, 0, 0, 0, 0,
+ &output, &dwSize);
if (!output)
return nullptr;