From e3166a8c39c8943f6cafb2ffe10bd9564e3eaf16 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Wed, 5 Aug 2015 10:50:32 -0700 Subject: Merge to XFA: CPDF_Parser shouldnt be in the business of opening files (cherry picked from commit 2b9178181eb82a3611bee5c9435ea5956def24be) Orignal Review URL: https://codereview.chromium.org/1269073003 . TBR=thestig@chromium.org Review URL: https://codereview.chromium.org/1278533002 . --- fpdfsdk/src/fpdfview.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'fpdfsdk/src/fpdfview.cpp') diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp index 159440de59..38a51f9ce2 100644 --- a/fpdfsdk/src/fpdfview.cpp +++ b/fpdfsdk/src/fpdfview.cpp @@ -237,12 +237,20 @@ DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy, return FSDK_SetSandBoxPolicy(policy, enable); } + DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path, FPDF_BYTESTRING password) { - CPDF_Parser* pParser = FX_NEW CPDF_Parser; + // NOTE: the creation of the file needs to be by the embedder on the + // other side of this API. + IFX_FileRead* pFileAccess = FX_CreateFileRead((const FX_CHAR*)file_path); + if (!pFileAccess) { + return nullptr; + } + + CPDF_Parser* pParser = new CPDF_Parser; pParser->SetPassword(password); - FX_DWORD err_code = pParser->StartParse((const FX_CHAR*)file_path); + FX_DWORD err_code = pParser->StartParse(pFileAccess); if (err_code) { delete pParser; ProcessParseError(err_code); -- cgit v1.2.3