diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/fpdfapi/parser/cfdf_document.cpp | 4 | ||||
-rw-r--r-- | core/fpdfapi/parser/cpdf_data_avail.cpp | 9 | ||||
-rw-r--r-- | core/fpdfapi/parser/cpdf_parser.cpp | 4 | ||||
-rw-r--r-- | core/fpdfapi/parser/cpdf_parser_unittest.cpp | 3 | ||||
-rw-r--r-- | core/fpdfapi/parser/cpdf_syntax_parser_unittest.cpp | 26 | ||||
-rw-r--r-- | core/fxcrt/fx_extension.cpp | 36 | ||||
-rw-r--r-- | core/fxcrt/fx_stream.h | 25 |
7 files changed, 58 insertions, 49 deletions
diff --git a/core/fpdfapi/parser/cfdf_document.cpp b/core/fpdfapi/parser/cfdf_document.cpp index 41e285245d..a6045e7795 100644 --- a/core/fpdfapi/parser/cfdf_document.cpp +++ b/core/fpdfapi/parser/cfdf_document.cpp @@ -45,8 +45,8 @@ std::unique_ptr<CFDF_Document> CFDF_Document::ParseFile( std::unique_ptr<CFDF_Document> CFDF_Document::ParseMemory(const uint8_t* pData, uint32_t size) { - return CFDF_Document::ParseFile(FX_CreateMemoryStream((uint8_t*)pData, size), - true); + return CFDF_Document::ParseFile( + IFX_MemoryStream::Create((uint8_t*)pData, size), true); } void CFDF_Document::ParseStream(IFX_SeekableReadStream* pFile, bool bOwnFile) { diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp index 1ac6e06a97..248748470c 100644 --- a/core/fpdfapi/parser/cpdf_data_avail.cpp +++ b/core/fpdfapi/parser/cpdf_data_avail.cpp @@ -718,7 +718,7 @@ bool CPDF_DataAvail::IsLinearizedFile(uint8_t* pData, uint32_t dwLen) { if (m_pLinearized) return true; - ScopedFileStream file(FX_CreateMemoryStream(pData, (size_t)dwLen, false)); + ScopedFileStream file(IFX_MemoryStream::Create(pData, (size_t)dwLen, false)); int32_t offset = GetHeaderOffset(file.get()); if (offset == -1) { m_docStatus = PDF_DATAAVAIL_ERROR; @@ -753,7 +753,8 @@ bool CPDF_DataAvail::CheckEnd(DownloadHints* pHints) { uint8_t buffer[1024]; m_pFileRead->ReadBlock(buffer, req_pos, dwSize); - ScopedFileStream file(FX_CreateMemoryStream(buffer, (size_t)dwSize, false)); + ScopedFileStream file( + IFX_MemoryStream::Create(buffer, (size_t)dwSize, false)); m_syntaxParser.InitParser(file.get(), 0); m_syntaxParser.RestorePos(dwSize - 1); @@ -800,7 +801,7 @@ int32_t CPDF_DataAvail::CheckCrossRefStream(DownloadHints* pHints, m_pFileRead->ReadBlock(pBuf, m_dwCurrentXRefSteam, iSize); - ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, false)); + ScopedFileStream file(IFX_MemoryStream::Create(pBuf, (size_t)iSize, false)); m_parser.m_pSyntax->InitParser(file.get(), 0); bool bNumber; @@ -1046,7 +1047,7 @@ bool CPDF_DataAvail::CheckTrailer(DownloadHints* pHints) { if (!m_pFileRead->ReadBlock(pBuf, m_dwTrailerOffset, iSize)) return false; - ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, false)); + ScopedFileStream file(IFX_MemoryStream::Create(pBuf, (size_t)iSize, false)); m_syntaxParser.InitParser(file.get(), 0); std::unique_ptr<CPDF_Object> pTrailer( diff --git a/core/fpdfapi/parser/cpdf_parser.cpp b/core/fpdfapi/parser/cpdf_parser.cpp index 2f432ed9f9..1fae0d641c 100644 --- a/core/fpdfapi/parser/cpdf_parser.cpp +++ b/core/fpdfapi/parser/cpdf_parser.cpp @@ -1124,7 +1124,7 @@ std::unique_ptr<CPDF_Object> CPDF_Parser::ParseIndirectObject( if (!pObjStream) return nullptr; - ScopedFileStream file(FX_CreateMemoryStream( + ScopedFileStream file(IFX_MemoryStream::Create( (uint8_t*)pObjStream->GetData(), (size_t)pObjStream->GetSize(), false)); CPDF_SyntaxParser syntax; syntax.InitParser(file.get(), 0); @@ -1204,7 +1204,7 @@ void CPDF_Parser::GetIndirectBinary(uint32_t objnum, const uint8_t* pData = pObjStream->GetData(); uint32_t totalsize = pObjStream->GetSize(); ScopedFileStream file( - FX_CreateMemoryStream((uint8_t*)pData, (size_t)totalsize, false)); + IFX_MemoryStream::Create((uint8_t*)pData, (size_t)totalsize, false)); CPDF_SyntaxParser syntax; syntax.InitParser(file.get(), 0); diff --git a/core/fpdfapi/parser/cpdf_parser_unittest.cpp b/core/fpdfapi/parser/cpdf_parser_unittest.cpp index 7148c54f30..0a70103d3a 100644 --- a/core/fpdfapi/parser/cpdf_parser_unittest.cpp +++ b/core/fpdfapi/parser/cpdf_parser_unittest.cpp @@ -45,7 +45,8 @@ class CPDF_TestParser : public CPDF_Parser { // Setup reading from a file and initial states. bool InitTestFromFile(const FX_CHAR* path) { - IFX_SeekableReadStream* pFileAccess = FX_CreateFileRead(path); + IFX_SeekableReadStream* pFileAccess = + IFX_SeekableReadStream::CreateFromFilename(path); if (!pFileAccess) return false; diff --git a/core/fpdfapi/parser/cpdf_syntax_parser_unittest.cpp b/core/fpdfapi/parser/cpdf_syntax_parser_unittest.cpp index a23c0ed64e..f94b431c82 100644 --- a/core/fpdfapi/parser/cpdf_syntax_parser_unittest.cpp +++ b/core/fpdfapi/parser/cpdf_syntax_parser_unittest.cpp @@ -16,7 +16,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Empty string. uint8_t data[] = ""; - ScopedFileStream stream(FX_CreateMemoryStream(data, 0, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 0, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -27,7 +27,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Blank string. uint8_t data[] = " "; - ScopedFileStream stream(FX_CreateMemoryStream(data, 2, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 2, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -38,7 +38,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Skips unknown characters. uint8_t data[] = "z12b"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 4, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 4, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -49,7 +49,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Skips unknown characters. uint8_t data[] = "*<&*#$^&@1"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 10, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 10, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -60,7 +60,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Skips unknown characters. uint8_t data[] = "\x80zab"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 4, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 4, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -71,7 +71,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Skips unknown characters. uint8_t data[] = "\xffzab"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 4, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 4, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -82,7 +82,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Regular conversion. uint8_t data[] = "1A2b>abcd"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 9, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 9, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -93,7 +93,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Position out of bounds. uint8_t data[] = "12ab>"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 5, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 5, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -117,7 +117,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Missing ending >. uint8_t data[] = "1A2b"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 4, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 4, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -128,7 +128,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Missing ending >. uint8_t data[] = "12abz"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 5, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 5, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -139,7 +139,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Uneven number of bytes. uint8_t data[] = "1A2>asdf"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 8, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 8, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -150,7 +150,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Uneven number of bytes. uint8_t data[] = "1A2zasdf"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 8, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 8, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); @@ -161,7 +161,7 @@ TEST(cpdf_syntax_parser, ReadHexString) { { // Just ending character. uint8_t data[] = ">"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 1, false)); + ScopedFileStream stream(IFX_MemoryStream::Create(data, 1, false)); CPDF_SyntaxParser parser; parser.InitParser(stream.get(), 0); diff --git a/core/fxcrt/fx_extension.cpp b/core/fxcrt/fx_extension.cpp index 39bf028205..6bf61f1fb5 100644 --- a/core/fxcrt/fx_extension.cpp +++ b/core/fxcrt/fx_extension.cpp @@ -40,7 +40,7 @@ void CFX_CRTFileAccess::GetPath(CFX_WideString& wsPath) { } IFX_SeekableStream* CFX_CRTFileAccess::CreateFileStream(uint32_t dwModes) { - return FX_CreateFileStream(m_path.c_str(), dwModes); + return IFX_SeekableStream::CreateFromFilename(m_path.c_str(), dwModes); } bool CFX_CRTFileAccess::Init(const CFX_WideStringC& wsPath) { @@ -338,33 +338,41 @@ IFX_FileAccess* FX_CreateDefaultFileAccess(const CFX_WideStringC& wsPath) { } #endif // PDF_ENABLE_XFA -IFX_SeekableStream* FX_CreateFileStream(const FX_CHAR* filename, - uint32_t dwModes) { +// static +IFX_SeekableStream* IFX_SeekableStream::CreateFromFilename( + const FX_CHAR* filename, + uint32_t dwModes) { std::unique_ptr<IFXCRT_FileAccess> pFA(IFXCRT_FileAccess::Create()); if (!pFA->Open(filename, dwModes)) return nullptr; return new CFX_CRTFileStream(std::move(pFA)); } -IFX_SeekableStream* FX_CreateFileStream(const FX_WCHAR* filename, - uint32_t dwModes) { +// static +IFX_SeekableStream* IFX_SeekableStream::CreateFromFilename( + const FX_WCHAR* filename, + uint32_t dwModes) { std::unique_ptr<IFXCRT_FileAccess> pFA(IFXCRT_FileAccess::Create()); if (!pFA->Open(filename, dwModes)) return nullptr; return new CFX_CRTFileStream(std::move(pFA)); } -IFX_SeekableReadStream* FX_CreateFileRead(const FX_CHAR* filename) { - return FX_CreateFileStream(filename, FX_FILEMODE_ReadOnly); -} -IFX_SeekableReadStream* FX_CreateFileRead(const FX_WCHAR* filename) { - return FX_CreateFileStream(filename, FX_FILEMODE_ReadOnly); + +// static +IFX_SeekableReadStream* IFX_SeekableReadStream::CreateFromFilename( + const FX_CHAR* filename) { + return IFX_SeekableStream::CreateFromFilename(filename, FX_FILEMODE_ReadOnly); } -IFX_MemoryStream* FX_CreateMemoryStream(uint8_t* pBuffer, - size_t dwSize, - bool bTakeOver) { + +// static +IFX_MemoryStream* IFX_MemoryStream::Create(uint8_t* pBuffer, + size_t dwSize, + bool bTakeOver) { return new CFX_MemoryStream(pBuffer, dwSize, bTakeOver); } -IFX_MemoryStream* FX_CreateMemoryStream(bool bConsecutive) { + +// static +IFX_MemoryStream* IFX_MemoryStream::Create(bool bConsecutive) { return new CFX_MemoryStream(bConsecutive); } diff --git a/core/fxcrt/fx_stream.h b/core/fxcrt/fx_stream.h index dc687cf653..fe92c939d9 100644 --- a/core/fxcrt/fx_stream.h +++ b/core/fxcrt/fx_stream.h @@ -85,6 +85,8 @@ class IFX_SeekableWriteStream : public IFX_WriteStream { class IFX_SeekableReadStream : public IFX_ReadStream { public: + static IFX_SeekableReadStream* CreateFromFilename(const FX_CHAR* filename); + // IFX_ReadStream: void Release() override = 0; bool IsEOF() override; @@ -95,12 +97,14 @@ class IFX_SeekableReadStream : public IFX_ReadStream { virtual FX_FILESIZE GetSize() = 0; }; -IFX_SeekableReadStream* FX_CreateFileRead(const FX_CHAR* filename); -IFX_SeekableReadStream* FX_CreateFileRead(const FX_WCHAR* filename); - class IFX_SeekableStream : public IFX_SeekableReadStream, public IFX_SeekableWriteStream { public: + static IFX_SeekableStream* CreateFromFilename(const FX_CHAR* filename, + uint32_t dwModes); + static IFX_SeekableStream* CreateFromFilename(const FX_WCHAR* filename, + uint32_t dwModes); + virtual IFX_SeekableStream* Retain() = 0; // IFX_SeekableReadStream: @@ -119,11 +123,6 @@ class IFX_SeekableStream : public IFX_SeekableReadStream, bool Flush() override = 0; }; -IFX_SeekableStream* FX_CreateFileStream(const FX_CHAR* filename, - uint32_t dwModes); -IFX_SeekableStream* FX_CreateFileStream(const FX_WCHAR* filename, - uint32_t dwModes); - #ifdef PDF_ENABLE_XFA class IFX_FileAccess { public: @@ -138,6 +137,11 @@ IFX_FileAccess* FX_CreateDefaultFileAccess(const CFX_WideStringC& wsPath); class IFX_MemoryStream : public IFX_SeekableStream { public: + static IFX_MemoryStream* Create(uint8_t* pBuffer, + size_t nSize, + bool bTakeOver = false); + static IFX_MemoryStream* Create(bool bConsecutive = false); + virtual bool IsConsecutive() const = 0; virtual void EstimateSize(size_t nInitSize, size_t nGrowSize) = 0; virtual uint8_t* GetBuffer() const = 0; @@ -147,11 +151,6 @@ class IFX_MemoryStream : public IFX_SeekableStream { virtual void DetachBuffer() = 0; }; -IFX_MemoryStream* FX_CreateMemoryStream(uint8_t* pBuffer, - size_t nSize, - bool bTakeOver = false); -IFX_MemoryStream* FX_CreateMemoryStream(bool bConsecutive = false); - class IFX_BufferRead : public IFX_ReadStream { public: // IFX_ReadStream: |