Create FPDFPage_RemoveObject().

This call removes a page object from a page. We currently offer an
API to insert these objects, but not to remove.

Bug: pdfium:1037
Change-Id: I35ff596f9e7c87a39051f0cb1de40a5bec40fee5
Reviewed-on: https://pdfium-review.googlesource.com/28492
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/fpdfsdk/fpdfeditpage.cpp b/fpdfsdk/fpdfeditpage.cpp
index ca2cf3f..8006133 100644
--- a/fpdfsdk/fpdfeditpage.cpp
+++ b/fpdfsdk/fpdfeditpage.cpp
@@ -174,10 +174,25 @@
   if (!IsPageObject(pPage))
     return;
   pPageObj->SetDirty(true);
+
+  // TODO(hnakashima): Move into CPDF_Page.
   pPage->GetPageObjectList()->push_back(std::move(pPageObjHolder));
   CalcBoundingBox(pPageObj);
 }
 
+FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
+FPDFPage_RemoveObject(FPDF_PAGE page, FPDF_PAGEOBJECT page_obj) {
+  CPDF_PageObject* pPageObj = CPDFPageObjectFromFPDFPageObject(page_obj);
+  if (!pPageObj)
+    return false;
+
+  CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
+  if (!IsPageObject(pPage))
+    return false;
+
+  return pPage->RemoveObject(pPageObj);
+}
+
 FPDF_EXPORT int FPDF_CALLCONV FPDFPage_CountObject(FPDF_PAGE page) {
   return FPDFPage_CountObjects(page);
 }
@@ -186,6 +201,8 @@
   CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
   if (!IsPageObject(pPage))
     return -1;
+
+  // TODO(hnakashima): Move into CPDF_Page.
   return pdfium::CollectionSize<int>(*pPage->GetPageObjectList());
 }
 
@@ -194,6 +211,8 @@
   CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
   if (!IsPageObject(pPage))
     return nullptr;
+
+  // TODO(hnakashima): Move into CPDF_Page.
   return pPage->GetPageObjectList()->GetPageObjectByIndex(index);
 }