summaryrefslogtreecommitdiff
path: root/core/fpdfapi/fpdf_parser/cpdf_parser.cpp
diff options
context:
space:
mode:
authortsepez <tsepez@chromium.org>2016-08-16 11:12:21 -0700
committerCommit bot <commit-bot@chromium.org>2016-08-16 11:12:21 -0700
commit4540fbaa718b0b06e076321e0e1a61e80a161499 (patch)
tree0264321d30996058a3b120cff7707e93562bb425 /core/fpdfapi/fpdf_parser/cpdf_parser.cpp
parent3421d2bd1f12dc51916df1869ec8beab8711faec (diff)
downloadpdfium-4540fbaa718b0b06e076321e0e1a61e80a161499.tar.xz
Get CPDF_Parser out of the document creation business.
Precursor to someday using possibly subclassed documents. Review-Url: https://codereview.chromium.org/2248123002
Diffstat (limited to 'core/fpdfapi/fpdf_parser/cpdf_parser.cpp')
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_parser.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/core/fpdfapi/fpdf_parser/cpdf_parser.cpp b/core/fpdfapi/fpdf_parser/cpdf_parser.cpp
index e2c88d7e71..7bcbf392d6 100644
--- a/core/fpdfapi/fpdf_parser/cpdf_parser.cpp
+++ b/core/fpdfapi/fpdf_parser/cpdf_parser.cpp
@@ -158,7 +158,9 @@ void CPDF_Parser::CloseParser() {
}
}
-CPDF_Parser::Error CPDF_Parser::StartParse(IFX_FileRead* pFileAccess) {
+CPDF_Parser::Error CPDF_Parser::StartParse(
+ IFX_FileRead* pFileAccess,
+ std::unique_ptr<CPDF_Document> pDocument) {
CloseParser();
m_bXRefStream = FALSE;
@@ -188,7 +190,7 @@ CPDF_Parser::Error CPDF_Parser::StartParse(IFX_FileRead* pFileAccess) {
return FORMAT_ERROR;
m_pSyntax->RestorePos(m_pSyntax->m_FileLen - m_pSyntax->m_HeaderOffset - 9);
- m_pDocument.reset(new CPDF_Document(this));
+ m_pDocument = std::move(pDocument);
FX_BOOL bXRefRebuilt = FALSE;
if (m_pSyntax->SearchWord("startxref", TRUE, FALSE, 4096)) {
@@ -1543,7 +1545,9 @@ FX_BOOL CPDF_Parser::IsLinearizedFile(IFX_FileRead* pFileAccess,
return FALSE;
}
-CPDF_Parser::Error CPDF_Parser::StartAsyncParse(IFX_FileRead* pFileAccess) {
+CPDF_Parser::Error CPDF_Parser::StartAsyncParse(
+ IFX_FileRead* pFileAccess,
+ std::unique_ptr<CPDF_Document> pDocument) {
CloseParser();
m_bXRefStream = FALSE;
m_LastXRefOffset = 0;
@@ -1555,10 +1559,10 @@ CPDF_Parser::Error CPDF_Parser::StartAsyncParse(IFX_FileRead* pFileAccess) {
if (!IsLinearizedFile(pFileAccess, offset)) {
m_pSyntax->m_pFileAccess = nullptr;
- return StartParse(pFileAccess);
+ return StartParse(pFileAccess, std::move(pDocument));
}
- m_pDocument.reset(new CPDF_Document(this));
+ m_pDocument = std::move(pDocument);
FX_FILESIZE dwFirstXRefOffset = m_pSyntax->SavePos();
FX_BOOL bXRefRebuilt = FALSE;