Clean up FPDF_AvailContext and related classes. - Do more initialization in the constructors. - Make classes encapsulated. - Convert to Google-style variable names. Change-Id: I701f9c2148c399b8df2d2be2023fe16b239e515b Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/58930 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_dataavail.cpp b/fpdfsdk/fpdf_dataavail.cpp index aa3968f..48156e4 100644 --- a/fpdfsdk/fpdf_dataavail.cpp +++ b/fpdfsdk/fpdf_dataavail.cpp
@@ -52,18 +52,16 @@ class FPDF_FileAvailContext final : public CPDF_DataAvail::FileAvail { public: - FPDF_FileAvailContext() : m_pfileAvail(nullptr) {} - ~FPDF_FileAvailContext() override {} - - void Set(FX_FILEAVAIL* pfileAvail) { m_pfileAvail = pfileAvail; } + explicit FPDF_FileAvailContext(FX_FILEAVAIL* avail) : avail_(avail) {} + ~FPDF_FileAvailContext() override = default; // CPDF_DataAvail::FileAvail: bool IsDataAvail(FX_FILESIZE offset, size_t size) override { - return !!m_pfileAvail->IsDataAvail(m_pfileAvail, offset, size); + return !!avail_->IsDataAvail(avail_, offset, size); } private: - FX_FILEAVAIL* m_pfileAvail; + FX_FILEAVAIL* const avail_; }; class FPDF_FileAccessContext final : public IFX_SeekableReadStream { @@ -71,10 +69,8 @@ template <typename T, typename... Args> friend RetainPtr<T> pdfium::MakeRetain(Args&&... args); - void Set(FPDF_FILEACCESS* pFile) { m_pFileAccess = pFile; } - - // IFX_SeekableReadStream - FX_FILESIZE GetSize() override { return m_pFileAccess->m_FileLen; } + // IFX_SeekableReadStream: + FX_FILESIZE GetSize() override { return file_->m_FileLen; } bool ReadBlockAtOffset(void* buffer, FX_FILESIZE offset, @@ -85,15 +81,15 @@ FX_SAFE_FILESIZE new_pos = pdfium::base::checked_cast<FX_FILESIZE>(size); new_pos += offset; return new_pos.IsValid() && new_pos.ValueOrDie() <= GetSize() && - m_pFileAccess->m_GetBlock(m_pFileAccess->m_Param, offset, - static_cast<uint8_t*>(buffer), size); + file_->m_GetBlock(file_->m_Param, offset, + static_cast<uint8_t*>(buffer), size); } private: - FPDF_FileAccessContext() : m_pFileAccess(nullptr) {} + explicit FPDF_FileAccessContext(FPDF_FILEACCESS* file) : file_(file) {} ~FPDF_FileAccessContext() override = default; - FPDF_FILEACCESS* m_pFileAccess; + FPDF_FILEACCESS* const file_; }; class FPDF_DownloadHintsContext final : public CPDF_DataAvail::DownloadHints { @@ -116,14 +112,20 @@ class FPDF_AvailContext { public: - FPDF_AvailContext() - : m_FileAvail(pdfium::MakeUnique<FPDF_FileAvailContext>()), - m_FileRead(pdfium::MakeRetain<FPDF_FileAccessContext>()) {} - ~FPDF_AvailContext() {} + FPDF_AvailContext(FX_FILEAVAIL* file_avail, FPDF_FILEACCESS* file) + : file_avail_(pdfium::MakeUnique<FPDF_FileAvailContext>(file_avail)), + file_read_(pdfium::MakeRetain<FPDF_FileAccessContext>(file)), + data_avail_(pdfium::MakeUnique<CPDF_DataAvail>(file_avail_.get(), + file_read_, + true)) {} + ~FPDF_AvailContext() = default; - std::unique_ptr<FPDF_FileAvailContext> m_FileAvail; - RetainPtr<FPDF_FileAccessContext> m_FileRead; - std::unique_ptr<CPDF_DataAvail> m_pDataAvail; + CPDF_DataAvail* data_avail() { return data_avail_.get(); } + + private: + std::unique_ptr<FPDF_FileAvailContext> const file_avail_; + RetainPtr<FPDF_FileAccessContext> const file_read_; + std::unique_ptr<CPDF_DataAvail> const data_avail_; }; FPDF_AvailContext* FPDFAvailContextFromFPDFAvail(FPDF_AVAIL avail) { @@ -134,11 +136,7 @@ FPDF_EXPORT FPDF_AVAIL FPDF_CALLCONV FPDFAvail_Create(FX_FILEAVAIL* file_avail, FPDF_FILEACCESS* file) { - auto pAvail = pdfium::MakeUnique<FPDF_AvailContext>(); - pAvail->m_FileAvail->Set(file_avail); - pAvail->m_FileRead->Set(file); - pAvail->m_pDataAvail = pdfium::MakeUnique<CPDF_DataAvail>( - pAvail->m_FileAvail.get(), pAvail->m_FileRead, true); + auto pAvail = pdfium::MakeUnique<FPDF_AvailContext>(file_avail, file); return pAvail.release(); // Caller takes ownership. } @@ -152,7 +150,7 @@ if (!avail) return PDF_DATA_ERROR; FPDF_DownloadHintsContext hints_context(hints); - return FPDFAvailContextFromFPDFAvail(avail)->m_pDataAvail->IsDocAvail( + return FPDFAvailContextFromFPDFAvail(avail)->data_avail()->IsDocAvail( &hints_context); } @@ -163,7 +161,7 @@ return nullptr; CPDF_Parser::Error error; std::unique_ptr<CPDF_Document> document; - std::tie(error, document) = pDataAvail->m_pDataAvail->ParseDocument( + std::tie(error, document) = pDataAvail->data_avail()->ParseDocument( pdfium::MakeUnique<CPDF_DocRenderData>(), pdfium::MakeUnique<CPDF_DocPageData>(), password); if (error != CPDF_Parser::SUCCESS) { @@ -192,7 +190,7 @@ if (page_index < 0) return PDF_DATA_NOTAVAIL; FPDF_DownloadHintsContext hints_context(hints); - return FPDFAvailContextFromFPDFAvail(avail)->m_pDataAvail->IsPageAvail( + return FPDFAvailContextFromFPDFAvail(avail)->data_avail()->IsPageAvail( page_index, &hints_context); } @@ -201,12 +199,12 @@ if (!avail) return PDF_FORM_ERROR; FPDF_DownloadHintsContext hints_context(hints); - return FPDFAvailContextFromFPDFAvail(avail)->m_pDataAvail->IsFormAvail( + return FPDFAvailContextFromFPDFAvail(avail)->data_avail()->IsFormAvail( &hints_context); } FPDF_EXPORT int FPDF_CALLCONV FPDFAvail_IsLinearized(FPDF_AVAIL avail) { if (!avail) return PDF_LINEARIZATION_UNKNOWN; - return FPDFAvailContextFromFPDFAvail(avail)->m_pDataAvail->IsLinearizedPDF(); + return FPDFAvailContextFromFPDFAvail(avail)->data_avail()->IsLinearizedPDF(); }