Add FPDFViewEmbedderTest.DocumentWithEmptyPageTreeNode.

Test a corner case where the first non-root node in a pages tree has an
empty /Kids list.

Change-Id: I1756f829df3a9f07afb25c82eff1b5d3e93d5f66
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/103132
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/fpdf_view_embeddertest.cpp b/fpdfsdk/fpdf_view_embeddertest.cpp
index 0f33f6e..d30ace9 100644
--- a/fpdfsdk/fpdf_view_embeddertest.cpp
+++ b/fpdfsdk/fpdf_view_embeddertest.cpp
@@ -507,6 +507,11 @@
   ASSERT_EQ(6, FPDF_GetPageCount(document()));
 }
 
+TEST_F(FPDFViewEmbedderTest, DocumentWithEmptyPageTreeNode) {
+  ASSERT_TRUE(OpenDocument("page_tree_empty_node.pdf"));
+  ASSERT_EQ(2, FPDF_GetPageCount(document()));
+}
+
 // See https://crbug.com/pdfium/465
 TEST_F(FPDFViewEmbedderTest, EmptyDocument) {
   CreateEmptyDocument();
diff --git a/testing/resources/page_tree_empty_node.in b/testing/resources/page_tree_empty_node.in
new file mode 100644
index 0000000..4a9b901
--- /dev/null
+++ b/testing/resources/page_tree_empty_node.in
@@ -0,0 +1,40 @@
+{{header}}
+{{object 1 0}} <<
+  /Type /Catalog
+  /Pages 2 0 R
+>>
+endobj
+{{object 2 0}} <<
+  /Type /Pages
+  /MediaBox [0 0 200 200]
+  /Kids [3 0 R 4 0 R]
+>>
+endobj
+{{object 3 0}} <<
+  /Type /Pages
+  /Count 0
+  /Kids []
+  /Parent 2 0 R
+>>
+endobj
+{{object 4 0}} <<
+  /Type /Pages
+  /Count 2
+  /Kids [5 0 R 6 0 R]
+  /Parent 2 0 R
+>>
+endobj
+{{object 5 0}} <<
+  /Type /Page
+  /Parent 4 0 R
+>>
+endobj
+{{object 6 0}} <<
+  /Type /Page
+  /Parent 4 0 R
+>>
+endobj
+{{xref}}
+{{trailer}}
+{{startxref}}
+%%EOF
diff --git a/testing/resources/page_tree_empty_node.pdf b/testing/resources/page_tree_empty_node.pdf
new file mode 100644
index 0000000..bf80a1a
--- /dev/null
+++ b/testing/resources/page_tree_empty_node.pdf
@@ -0,0 +1,53 @@
+%PDF-1.7
+% ò¤ô
+1 0 obj <<
+  /Type /Catalog
+  /Pages 2 0 R
+>>
+endobj
+2 0 obj <<
+  /Type /Pages
+  /MediaBox [0 0 200 200]
+  /Kids [3 0 R 4 0 R]
+>>
+endobj
+3 0 obj <<
+  /Type /Pages
+  /Count 0
+  /Kids []
+  /Parent 2 0 R
+>>
+endobj
+4 0 obj <<
+  /Type /Pages
+  /Count 2
+  /Kids [5 0 R 6 0 R]
+  /Parent 2 0 R
+>>
+endobj
+5 0 obj <<
+  /Type /Page
+  /Parent 4 0 R
+>>
+endobj
+6 0 obj <<
+  /Type /Page
+  /Parent 4 0 R
+>>
+endobj
+xref
+0 7
+0000000000 65535 f 
+0000000015 00000 n 
+0000000068 00000 n 
+0000000152 00000 n 
+0000000226 00000 n 
+0000000311 00000 n 
+0000000362 00000 n 
+trailer <<
+  /Root 1 0 R
+  /Size 7
+>>
+startxref
+413
+%%EOF