From ade4b495433751ac853f2d677b9e1da94d0d6bf7 Mon Sep 17 00:00:00 2001 From: tonikitoo Date: Wed, 24 Aug 2016 10:37:00 -0700 Subject: Lazy generate an "AP" when an Annot's hidden state changes Now that Document::getAnnot works and annotation instances can have its properties changed, consider the following scenario: - A PDF content has an annotation without AP and CPVT_GenerateAP is called to generate one. - However the annotation also has its hidden flag set (/F 2), and CPVT_GenerateAP bails out earlier, not generating an AP. - When the PDF's Javascript runs, it acquires an instance of this annotation object, bounded to JS using Document::getAnnot(), and set its "hidden" flag to false. - At this point, the annotation should get drawn, but it does not because its "AP" was never generated. CL fixes this scenario by making PDFium able to lazy generate APs, if needed. BUG=pdfium:492 Review-Url: https://codereview.chromium.org/2265313002 --- core/fpdfdoc/include/cpdf_annot.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'core/fpdfdoc/include') diff --git a/core/fpdfdoc/include/cpdf_annot.h b/core/fpdfdoc/include/cpdf_annot.h index 4999349155..4029bba4cc 100644 --- a/core/fpdfdoc/include/cpdf_annot.h +++ b/core/fpdfdoc/include/cpdf_annot.h @@ -63,6 +63,8 @@ class CPDF_Annot { CPDF_Form* GetAPForm(const CPDF_Page* pPage, AppearanceMode mode); private: + void GenerateAPIfNeeded(); + CPDF_Dictionary* const m_pAnnotDict; CPDF_Document* const m_pDocument; const CFX_ByteString m_sSubtype; -- cgit v1.2.3