Merge to XFA: Check if document was opened during testing.
authorDan Sinclair <dsinclair@chromium.org>
Wed, 28 Oct 2015 17:58:49 +0000 (13:58 -0400)
committerDan Sinclair <dsinclair@chromium.org>
Wed, 28 Oct 2015 17:58:49 +0000 (13:58 -0400)
When we call OpenDocument we fail to check if the document was actually opened.
Currently we return true in all cases (assuming we read the file). This CL
updates the code to check if the document was opened and return false if not.

I've updated several tests to check for FALSE instead of TRUE. I verified the
documents in fact don't open with my local (non-PDFium) PDF reader.

BUG=pdfium:223
R=tsepez@chromium.org

Review URL: https://codereview.chromium.org/1417893007 .

(cherry picked from commit dd4cd523ef4546b43d68e8ca6ec0a97fbe8954e9)

Review URL: https://codereview.chromium.org/1418563010 .

core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp
fpdfsdk/src/fpdf_dataavail_embeddertest.cpp
fpdfsdk/src/fpdfview_embeddertest.cpp
testing/embedder_test.cpp

index b6cfc4e..ed2863b 100644 (file)
@@ -9,7 +9,7 @@ class FPDFParserEmbeddertest : public EmbedderTest {};
 
 TEST_F(FPDFParserEmbeddertest, LoadError_454695) {
   // Test trailer dictionary with $$ze instead of Size.
-  EXPECT_TRUE(OpenDocument("testing/resources/bug_454695.pdf"));
+  EXPECT_FALSE(OpenDocument("testing/resources/bug_454695.pdf"));
 }
 
 TEST_F(FPDFParserEmbeddertest, Bug_481363) {
index 292ff79..730a793 100644 (file)
 class FPDFDataAvailEmbeddertest : public EmbedderTest {};
 
 TEST_F(FPDFDataAvailEmbeddertest, TrailerUnterminated) {
-  // Document doesn't even open under XFA but must not crash.
+  // Document must load without crashing but is too malformed to be available.
   EXPECT_FALSE(OpenDocument("testing/resources/trailer_unterminated.pdf"));
+  EXPECT_FALSE(FPDFAvail_IsDocAvail(avail_, &hints_));
 }
 
 TEST_F(FPDFDataAvailEmbeddertest, TrailerAsHexstring) {
-  // Document doesn't even open under XFA but must not crash.
+  // Document must load without crashing but is too malformed to be available.
   EXPECT_FALSE(OpenDocument("testing/resources/trailer_as_hexstring.pdf"));
+  EXPECT_FALSE(FPDFAvail_IsDocAvail(avail_, &hints_));
 }
index e369ed8..36e79d7 100644 (file)
@@ -184,7 +184,7 @@ TEST_F(FPDFViewEmbeddertest, Crasher_113) {
 }
 
 TEST_F(FPDFViewEmbeddertest, Crasher_451830) {
-  // XFA branch detects this document as bad.
+  // Document is damaged and can't be opened.
   EXPECT_FALSE(OpenDocument("testing/resources/bug_451830.pdf"));
 }
 
@@ -196,6 +196,6 @@ TEST_F(FPDFViewEmbeddertest, Crasher_452455) {
 }
 
 TEST_F(FPDFViewEmbeddertest, Crasher_454695) {
-  // XFA branch detects this document as bad.
+  // Document is damanged and can't be opened.
   EXPECT_FALSE(OpenDocument("testing/resources/bug_454695.pdf"));
 }
index c1d19b2..36405d3 100644 (file)
@@ -97,9 +97,8 @@ void EmbedderTest::TearDown() {
 
 bool EmbedderTest::OpenDocument(const std::string& filename) {
   file_contents_ = GetFileContents(filename.c_str(), &file_length_);
-  if (!file_contents_) {
+  if (!file_contents_)
     return false;
-  }
 
   loader_ = new TestLoader(file_contents_, file_length_);
   file_access_.m_FileLen = static_cast<unsigned long>(file_length_);
@@ -115,19 +114,20 @@ bool EmbedderTest::OpenDocument(const std::string& filename) {
   avail_ = FPDFAvail_Create(&file_avail_, &file_access_);
   (void)FPDFAvail_IsDocAvail(avail_, &hints_);
 
-  if (!FPDFAvail_IsLinearized(avail_)) {
+  if (!FPDFAvail_IsLinearized(avail_))
     document_ = FPDF_LoadCustomDocument(&file_access_, nullptr);
-  } else {
+  else
     document_ = FPDFAvail_GetDocument(avail_, nullptr);
-  }
-  if (!document_) {
+
+  if (!document_)
     return false;
-  }
+
   int docType = DOCTYPE_PDF;
   if (FPDF_HasXFAField(document_, &docType)) {
     if (docType != DOCTYPE_PDF)
       (void)FPDF_LoadXFA(document_);
   }
+
   (void)FPDF_GetDocPermissions(document_);
   (void)FPDFAvail_IsFormAvail(avail_, &hints_);