Create popup with Contents only for same annotations subtypes.
The subtypes are listed in "PDF Reference 1.7", page 617.
Bug: chromium:856331
Change-Id: I41d6094949ff22007a72ef7c1493c413c5af5f7b
Reviewed-on: https://pdfium-review.googlesource.com/38790
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/core/fpdfdoc/cpdf_annotlist.cpp b/core/fpdfdoc/cpdf_annotlist.cpp
index 5fbe699..496fcc6 100644
--- a/core/fpdfdoc/cpdf_annotlist.cpp
+++ b/core/fpdfdoc/cpdf_annotlist.cpp
@@ -28,9 +28,48 @@
namespace {
+bool PopupAppearsForAnnotType(CPDF_Annot::Subtype subtype) {
+ switch (subtype) {
+ case CPDF_Annot::Subtype::TEXT:
+ case CPDF_Annot::Subtype::LINE:
+ case CPDF_Annot::Subtype::SQUARE:
+ case CPDF_Annot::Subtype::CIRCLE:
+ case CPDF_Annot::Subtype::POLYGON:
+ case CPDF_Annot::Subtype::POLYLINE:
+ case CPDF_Annot::Subtype::HIGHLIGHT:
+ case CPDF_Annot::Subtype::UNDERLINE:
+ case CPDF_Annot::Subtype::SQUIGGLY:
+ case CPDF_Annot::Subtype::STRIKEOUT:
+ case CPDF_Annot::Subtype::STAMP:
+ case CPDF_Annot::Subtype::CARET:
+ case CPDF_Annot::Subtype::INK:
+ case CPDF_Annot::Subtype::FILEATTACHMENT:
+ return true;
+ case CPDF_Annot::Subtype::UNKNOWN:
+ case CPDF_Annot::Subtype::LINK:
+ case CPDF_Annot::Subtype::FREETEXT:
+ case CPDF_Annot::Subtype::POPUP:
+ case CPDF_Annot::Subtype::SOUND:
+ case CPDF_Annot::Subtype::MOVIE:
+ case CPDF_Annot::Subtype::WIDGET:
+ case CPDF_Annot::Subtype::SCREEN:
+ case CPDF_Annot::Subtype::PRINTERMARK:
+ case CPDF_Annot::Subtype::TRAPNET:
+ case CPDF_Annot::Subtype::WATERMARK:
+ case CPDF_Annot::Subtype::THREED:
+ case CPDF_Annot::Subtype::RICHMEDIA:
+ case CPDF_Annot::Subtype::XFAWIDGET:
+ default:
+ return false;
+ }
+}
+
std::unique_ptr<CPDF_Annot> CreatePopupAnnot(CPDF_Annot* pAnnot,
CPDF_Document* pDocument,
CPDF_Page* pPage) {
+ if (!PopupAppearsForAnnotType(pAnnot->GetSubtype()))
+ return nullptr;
+
CPDF_Dictionary* pParentDict = pAnnot->GetAnnotDict();
if (!pParentDict)
return nullptr;