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"");