Merge to XFA: Cache the CPDF_Annot's subtype, since it should never changes.
authorLei Zhang <thestig@chromium.org>
Wed, 10 Jun 2015 21:51:39 +0000 (14:51 -0700)
committerLei Zhang <thestig@chromium.org>
Wed, 10 Jun 2015 21:51:39 +0000 (14:51 -0700)
BUG=495300
R=tsepez@chromium.org

Review URL: https://codereview.chromium.org/1178513002.

(cherry picked from commit 7b2897c47245f04c806cfa8cee09458e31ba3777)

Review URL: https://codereview.chromium.org/1177003002.

core/include/fpdfdoc/fpdf_doc.h
core/src/fpdfdoc/doc_annot.cpp

index 3c4820a..be1bcd9 100644 (file)
@@ -565,6 +565,8 @@ class CPDF_Annot : public CFX_PrivateData
 
     CPDF_AnnotList* const m_pList;
 
+    const CFX_ByteString m_sSubtype;
+
     CFX_MapPtrToPtr m_APMap;
 };
 
index a72285c..24ee6a9 100644 (file)
@@ -135,8 +135,9 @@ int CPDF_AnnotList::GetIndex(CPDF_Annot* pAnnot)
     return -1;
 }
 CPDF_Annot::CPDF_Annot(CPDF_Dictionary* pDict, CPDF_AnnotList* pList)
-  : m_pAnnotDict(pDict),
-    m_pList(pList)
+    : m_pAnnotDict(pDict),
+      m_pList(pList),
+      m_sSubtype(m_pAnnotDict->GetConstString(FX_BSTRC("Subtype")))
 {
 }
 CPDF_Annot::~CPDF_Annot()
@@ -156,7 +157,7 @@ void CPDF_Annot::ClearCachedAP()
 }
 CFX_ByteString CPDF_Annot::GetSubType() const
 {
-    return m_pAnnotDict ? m_pAnnotDict->GetConstString(FX_BSTRC("Subtype")) : CFX_ByteStringC();
+    return m_sSubtype;
 }
 
 void CPDF_Annot::GetRect(CPDF_Rect& rect) const