Index: pdf/pdfium/pdfium_engine.cc |
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc |
index 0528c94ecca007a1e58ec053c96689974027318d..1739f7192a091f1acca5ec5fbc55a324be42c92c 100644 |
--- a/pdf/pdfium/pdfium_engine.cc |
+++ b/pdf/pdfium/pdfium_engine.cc |
@@ -2597,11 +2597,15 @@ void PDFiumEngine::ContinueLoadingDocument( |
permissions_handler_revision_ = FPDF_GetSecurityHandlerRevision(doc_); |
if (!form_) { |
- // Only returns 0 when data isn't available. If form data is downloaded, or |
- // if this isn't a form, returns positive values. |
- if (!doc_loader_.IsDocumentComplete() && |
- !FPDFAvail_IsFormAvail(fpdf_availability_, &download_hints_)) { |
- return; |
+ if (fpdf_availability_) { |
spelchat
2015/12/30 19:01:08
This check and DCHECK_NE could be removed instead.
Lei Zhang
2015/12/30 19:58:19
I think for this to happen, the error from FPDFAva
spelchat
2015/12/30 20:14:00
Yes all the FPDFAvail_* functions get called but r
|
+ int form_status = |
+ FPDFAvail_IsFormAvail(fpdf_availability_, &download_hints_); |
+ DCHECK_NE(form_status, PDF_FORM_ERROR); |
+ bool doc_complete = doc_loader_.IsDocumentComplete(); |
+ // Try again if the data is not available and the document hasn't finished |
+ // downloading. |
+ if (form_status == PDF_FORM_NOTAVAIL && !doc_complete) |
+ return; |
} |
form_ = FPDFDOC_InitFormFillEnvironment( |