Test bad inputs for newly added annotation APIs.
Change-Id: I3297ebf5c8ee71baaefb128a7d68bbcb699866a5
Reviewed-on: https://pdfium-review.googlesource.com/c/51153
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/fpdfsdk/fpdf_annot_embeddertest.cpp b/fpdfsdk/fpdf_annot_embeddertest.cpp
index 9a3e681..e9ed205 100644
--- a/fpdfsdk/fpdf_annot_embeddertest.cpp
+++ b/fpdfsdk/fpdf_annot_embeddertest.cpp
@@ -1690,6 +1690,11 @@
ASSERT_TRUE(annot);
EXPECT_EQ(26, FPDFAnnot_GetOptionCount(form_handle(), annot.get()));
+
+ // Check bad form handle / annot.
+ EXPECT_EQ(-1, FPDFAnnot_GetOptionCount(nullptr, nullptr));
+ EXPECT_EQ(-1, FPDFAnnot_GetOptionCount(form_handle(), nullptr));
+ EXPECT_EQ(-1, FPDFAnnot_GetOptionCount(nullptr, annot.get()));
}
UnloadPage(page);
@@ -1777,11 +1782,18 @@
buf.data(), len));
EXPECT_STREQ(L"Zucchini", BufferToWString(buf).c_str());
- // indices out of range
+ // Indices out of range
EXPECT_EQ(0u, FPDFAnnot_GetOptionLabel(form_handle(), annot.get(), -1,
nullptr, 0));
EXPECT_EQ(0u, FPDFAnnot_GetOptionLabel(form_handle(), annot.get(), 26,
nullptr, 0));
+
+ // Check bad form handle / annot.
+ EXPECT_EQ(0u, FPDFAnnot_GetOptionLabel(nullptr, nullptr, 0, nullptr, 0));
+ EXPECT_EQ(0u,
+ FPDFAnnot_GetOptionLabel(nullptr, annot.get(), 0, nullptr, 0));
+ EXPECT_EQ(0u,
+ FPDFAnnot_GetOptionLabel(form_handle(), nullptr, 0, nullptr, 0));
}
UnloadPage(page);
diff --git a/fpdfsdk/fpdf_formfill_embeddertest.cpp b/fpdfsdk/fpdf_formfill_embeddertest.cpp
index 03924a3..be3248f 100644
--- a/fpdfsdk/fpdf_formfill_embeddertest.cpp
+++ b/fpdfsdk/fpdf_formfill_embeddertest.cpp
@@ -859,6 +859,49 @@
EXPECT_EQ(FORMTYPE_XFA_FOREGROUND, FPDF_GetFormType(document_));
}
+TEST_F(FPDFFormFillEmbedderTest, BadApiInputsText) {
+ ASSERT_TRUE(OpenDocument("text_form.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+
+ EXPECT_FALSE(FORM_SetIndexSelected(nullptr, nullptr, 0, true));
+ EXPECT_FALSE(FORM_SetIndexSelected(nullptr, page, 0, true));
+ EXPECT_FALSE(FORM_SetIndexSelected(form_handle(), nullptr, 0, true));
+ EXPECT_FALSE(FORM_SetIndexSelected(form_handle(), page, -1, true));
+ EXPECT_FALSE(FORM_IsIndexSelected(nullptr, nullptr, 0));
+ EXPECT_FALSE(FORM_IsIndexSelected(nullptr, page, 0));
+ EXPECT_FALSE(FORM_IsIndexSelected(form_handle(), nullptr, 0));
+ EXPECT_FALSE(FORM_IsIndexSelected(form_handle(), page, -1));
+
+ UnloadPage(page);
+}
+
+TEST_F(FPDFFormFillEmbedderTest, BadApiInputsComboBox) {
+ ASSERT_TRUE(OpenDocument("combobox_form.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+
+ EXPECT_FALSE(FORM_SetIndexSelected(form_handle(), page, -1, true));
+ EXPECT_FALSE(FORM_SetIndexSelected(form_handle(), page, 100, true));
+ EXPECT_FALSE(FORM_IsIndexSelected(form_handle(), page, -1));
+ EXPECT_FALSE(FORM_IsIndexSelected(form_handle(), page, 100));
+
+ UnloadPage(page);
+}
+
+TEST_F(FPDFFormFillEmbedderTest, BadApiInputsListBox) {
+ ASSERT_TRUE(OpenDocument("listbox_form.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+
+ EXPECT_FALSE(FORM_SetIndexSelected(form_handle(), page, -1, true));
+ EXPECT_FALSE(FORM_SetIndexSelected(form_handle(), page, 100, true));
+ EXPECT_FALSE(FORM_IsIndexSelected(form_handle(), page, -1));
+ EXPECT_FALSE(FORM_IsIndexSelected(form_handle(), page, 100));
+
+ UnloadPage(page);
+}
+
TEST_F(FPDFFormFillTextFormEmbedderTest, GetSelectedTextEmptyAndBasicKeyboard) {
// Test empty selection.
CheckFocusedFieldText(L"");