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