diff options
author | Artem Strygin <art-snake@yandex-team.ru> | 2017-10-02 22:08:44 +0300 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-10-04 15:41:16 +0000 |
commit | a5fc8975c865dc3cc90de8ff46ca13fb46c13391 (patch) | |
tree | 36b38e781140fc31eeec8a55d85299911117ac2b /core/fpdfapi/parser/cpdf_parser_embeddertest.cpp | |
parent | 4db6e37b18648dfe2c94b672276c7bf6554fd9d4 (diff) | |
download | pdfium-a5fc8975c865dc3cc90de8ff46ca13fb46c13391.tar.xz |
Unify parsing of cross ref table v4.
We can use 'Prev' value of first-page cross-reference table trailer
for load main cross-reference table,
instead of 'T' value of Linearized header (Offset of first entry in main cross-reference table).
This is better solution, because this is allow us check entry count in main cross-ref table and
unify loading of main cross-ref table with loading methods of non linearized document.
See PDF specification:
http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf#678
(page 678, Example 3/part 3)
Change-Id: I59dcf3c73a0fb561221ded78e827e40535dbd717
Reviewed-on: https://pdfium-review.googlesource.com/13810
Commit-Queue: Art Snake <art-snake@yandex-team.ru>
Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'core/fpdfapi/parser/cpdf_parser_embeddertest.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_parser_embeddertest.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/core/fpdfapi/parser/cpdf_parser_embeddertest.cpp b/core/fpdfapi/parser/cpdf_parser_embeddertest.cpp index 99bc2c2d42..6aa3e2785a 100644 --- a/core/fpdfapi/parser/cpdf_parser_embeddertest.cpp +++ b/core/fpdfapi/parser/cpdf_parser_embeddertest.cpp @@ -57,3 +57,19 @@ TEST_F(CPDFParserEmbeddertest, Bug_602650) { TEST_F(CPDFParserEmbeddertest, Bug_757705) { EXPECT_TRUE(OpenDocument("bug_757705.pdf")); } + +TEST_F(CPDFParserEmbeddertest, LoadMainCrossRefTable) { + EXPECT_TRUE(OpenDocument("feature_linearized_loading.pdf", nullptr, true)); + // To check that main cross ref table is loaded correctly,will be enough to + // check that the second page was correctly loaded. Because it is contains + // crossrefs for second page. + EXPECT_EQ(2, GetPageCount()); + FPDF_PAGE page = LoadPage(1); + EXPECT_NE(nullptr, page); + FPDF_TEXTPAGE text_page = FPDFText_LoadPage(page); + EXPECT_NE(nullptr, text_page); + // The page should not be blank. + EXPECT_LT(0, FPDFText_CountChars(text_page)); + FPDFText_ClosePage(text_page); + UnloadPage(page); +} |