From 0158106c1c77c6af4f7195d086cb0f2d129de838 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Wed, 30 Aug 2017 14:19:26 -0700 Subject: Add truly const versions of CPDF_Document getters. Instead of only having CPDF_Dictionary* GetRoot() const, provide const CPDF_Dictionary* GetRoot() const and CPDF_Dictionary* GetRoot(). Do the same for GetInfo(). Change-Id: I6eae1208d38327fcdc7d0cd75069a01c95f4a92a Reviewed-on: https://pdfium-review.googlesource.com/11671 Commit-Queue: Lei Zhang Reviewed-by: Tom Sepez Reviewed-by: dsinclair --- core/fpdfapi/edit/cpdf_creator.cpp | 2 +- core/fpdfapi/parser/cpdf_data_avail.cpp | 6 +++--- core/fpdfapi/parser/cpdf_document.cpp | 10 +++++----- core/fpdfapi/parser/cpdf_document.h | 8 +++++--- core/fpdfapi/parser/cpdf_parser.cpp | 2 +- core/fpdfdoc/cpdf_action.cpp | 4 ++-- core/fpdfdoc/cpdf_action.h | 2 +- core/fpdfdoc/cpdf_annotlist.cpp | 2 +- core/fpdfdoc/cpdf_bookmarktree.cpp | 2 +- core/fpdfdoc/cpdf_metadata.cpp | 4 ++-- core/fpdfdoc/cpdf_metadata.h | 2 +- core/fpdfdoc/cpdf_nametree.cpp | 4 ++-- core/fpdfdoc/cpdf_nametree.h | 2 +- core/fpdfdoc/cpdf_pagelabel.cpp | 4 ++-- core/fpdfdoc/cpdf_structtree.cpp | 4 ++-- core/fpdfdoc/cpdf_viewerpreferences.cpp | 2 +- core/fpdfdoc/cpvt_generateap.cpp | 8 +++++--- 17 files changed, 36 insertions(+), 32 deletions(-) (limited to 'core') diff --git a/core/fpdfapi/edit/cpdf_creator.cpp b/core/fpdfapi/edit/cpdf_creator.cpp index 9735460f41..4c25f372ac 100644 --- a/core/fpdfapi/edit/cpdf_creator.cpp +++ b/core/fpdfapi/edit/cpdf_creator.cpp @@ -407,7 +407,7 @@ int32_t CPDF_Creator::WriteDoc_Stage1() { if (m_bSecurityChanged && IsOriginal()) m_dwFlags &= ~FPDFCREATE_INCREMENTAL; - CPDF_Dictionary* pDict = m_pDocument->GetRoot(); + const CPDF_Dictionary* pDict = m_pDocument->GetRoot(); m_pMetadata = pDict ? pDict->GetDirectObjectFor("Metadata") : nullptr; m_iStage = 10; } diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp index c9cb1d75fc..76190fa9a9 100644 --- a/core/fpdfapi/parser/cpdf_data_avail.cpp +++ b/core/fpdfapi/parser/cpdf_data_avail.cpp @@ -431,7 +431,7 @@ bool CPDF_DataAvail::CheckRoot() { } bool CPDF_DataAvail::PreparePageItem() { - CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); + const CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); CPDF_Reference* pRef = ToReference(pRoot ? pRoot->GetObjectFor("Pages") : nullptr); if (!pRef) { @@ -1486,7 +1486,7 @@ CPDF_DataAvail::DocFormStatus CPDF_DataAvail::IsFormAvail( } if (!m_bLinearizedFormParamLoad) { - CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); + const CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); if (!pRoot) return FormAvailable; @@ -1520,7 +1520,7 @@ bool CPDF_DataAvail::ValidatePage(uint32_t dwPage) { } bool CPDF_DataAvail::ValidateForm() { - CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); + const CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); if (!pRoot) return true; CPDF_Object* pAcroForm = pRoot->GetObjectFor("AcroForm"); diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp index 6aedc09d14..47155176ae 100644 --- a/core/fpdfapi/parser/cpdf_document.cpp +++ b/core/fpdfapi/parser/cpdf_document.cpp @@ -342,7 +342,6 @@ CPDF_Document::CPDF_Document(std::unique_ptr pParser) : CPDF_IndirectObjectHolder(), m_pParser(std::move(pParser)), m_pRootDict(nullptr), - m_pInfoDict(nullptr), m_iNextPageToTraverse(0), m_bReachedMaxPageLevel(false), m_bLinearized(false), @@ -474,7 +473,7 @@ void CPDF_Document::ResetTraversal() { } CPDF_Dictionary* CPDF_Document::GetPagesDict() const { - CPDF_Dictionary* pRoot = GetRoot(); + const CPDF_Dictionary* pRoot = GetRoot(); return pRoot ? pRoot->GetDictFor("Pages") : nullptr; } @@ -518,7 +517,7 @@ int CPDF_Document::FindPageIndex(CPDF_Dictionary* pNode, uint32_t* skip_count, uint32_t objnum, int* index, - int level) { + int level) const { if (!pNode->KeyExist("Kids")) { if (objnum == pNode->GetObjNum()) return *index; @@ -654,7 +653,8 @@ CFX_RetainPtr CPDF_Document::LoadImageFromPageData( } void CPDF_Document::CreateNewDoc() { - ASSERT(!m_pRootDict && !m_pInfoDict); + ASSERT(!m_pRootDict); + ASSERT(!m_pInfoDict); m_pRootDict = NewIndirect(); m_pRootDict->SetNewFor("Type", "Catalog"); @@ -725,7 +725,7 @@ bool CPDF_Document::InsertDeletePDFPage(CPDF_Dictionary* pPages, } bool CPDF_Document::InsertNewPage(int iPage, CPDF_Dictionary* pPageDict) { - CPDF_Dictionary* pRoot = GetRoot(); + const CPDF_Dictionary* pRoot = GetRoot(); CPDF_Dictionary* pPages = pRoot ? pRoot->GetDictFor("Pages") : nullptr; if (!pPages) return false; diff --git a/core/fpdfapi/parser/cpdf_document.h b/core/fpdfapi/parser/cpdf_document.h index e6107e1040..87d40fd61b 100644 --- a/core/fpdfapi/parser/cpdf_document.h +++ b/core/fpdfapi/parser/cpdf_document.h @@ -49,8 +49,10 @@ class CPDF_Document : public CPDF_IndirectObjectHolder { ~CPDF_Document() override; CPDF_Parser* GetParser() const { return m_pParser.get(); } - CPDF_Dictionary* GetRoot() const { return m_pRootDict; } - CPDF_Dictionary* GetInfo() const { return m_pInfoDict.Get(); } + const CPDF_Dictionary* GetRoot() const { return m_pRootDict; } + CPDF_Dictionary* GetRoot() { return m_pRootDict; } + const CPDF_Dictionary* GetInfo() const { return m_pInfoDict.Get(); } + CPDF_Dictionary* GetInfo() { return m_pInfoDict.Get(); } void DeletePage(int iPage); int GetPageCount() const; @@ -112,7 +114,7 @@ class CPDF_Document : public CPDF_IndirectObjectHolder { uint32_t* skip_count, uint32_t objnum, int* index, - int level = 0); + int level = 0) const; std::unique_ptr ParseIndirectObject(uint32_t objnum) override; void LoadDocInternal(); size_t CalculateEncodingDict(int charset, CPDF_Dictionary* pBaseDict); diff --git a/core/fpdfapi/parser/cpdf_parser.cpp b/core/fpdfapi/parser/cpdf_parser.cpp index 167c1f438b..3bd0574000 100644 --- a/core/fpdfapi/parser/cpdf_parser.cpp +++ b/core/fpdfapi/parser/cpdf_parser.cpp @@ -1018,7 +1018,7 @@ bool CPDF_Parser::LoadCrossRefV5(FX_FILESIZE* pos, bool bMainXRef) { CPDF_Object* pUnownedObject = pObject.get(); if (m_pDocument) { - CPDF_Dictionary* pRootDict = m_pDocument->GetRoot(); + const CPDF_Dictionary* pRootDict = m_pDocument->GetRoot(); if (pRootDict && pRootDict->GetObjNum() == objnum) return false; if (!m_pDocument->ReplaceIndirectObjectIfHigherGeneration( diff --git a/core/fpdfdoc/cpdf_action.cpp b/core/fpdfdoc/cpdf_action.cpp index 557fbdafa9..4d9e630d97 100644 --- a/core/fpdfdoc/cpdf_action.cpp +++ b/core/fpdfdoc/cpdf_action.cpp @@ -85,7 +85,7 @@ CFX_WideString CPDF_Action::GetFilePath() const { return CFX_WideString(); } -CFX_ByteString CPDF_Action::GetURI(CPDF_Document* pDoc) const { +CFX_ByteString CPDF_Action::GetURI(const CPDF_Document* pDoc) const { CFX_ByteString csURI; if (!m_pDict) return csURI; @@ -93,7 +93,7 @@ CFX_ByteString CPDF_Action::GetURI(CPDF_Document* pDoc) const { return csURI; csURI = m_pDict->GetStringFor("URI"); - CPDF_Dictionary* pRoot = pDoc->GetRoot(); + const CPDF_Dictionary* pRoot = pDoc->GetRoot(); CPDF_Dictionary* pURI = pRoot->GetDictFor("URI"); if (pURI) { auto result = csURI.Find(":"); diff --git a/core/fpdfdoc/cpdf_action.h b/core/fpdfdoc/cpdf_action.h index bd1ce58ec6..be4d461867 100644 --- a/core/fpdfdoc/cpdf_action.h +++ b/core/fpdfdoc/cpdf_action.h @@ -46,7 +46,7 @@ class CPDF_Action { ActionType GetType() const; CPDF_Dest GetDest(CPDF_Document* pDoc) const; CFX_WideString GetFilePath() const; - CFX_ByteString GetURI(CPDF_Document* pDoc) const; + CFX_ByteString GetURI(const CPDF_Document* pDoc) const; bool GetHideStatus() const { return m_pDict->GetBooleanFor("H", true); } CFX_ByteString GetNamedAction() const { return m_pDict->GetStringFor("N"); } uint32_t GetFlags() const { return m_pDict->GetIntegerFor("Flags"); } diff --git a/core/fpdfdoc/cpdf_annotlist.cpp b/core/fpdfdoc/cpdf_annotlist.cpp index 34c8d3a869..df3b631626 100644 --- a/core/fpdfdoc/cpdf_annotlist.cpp +++ b/core/fpdfdoc/cpdf_annotlist.cpp @@ -85,7 +85,7 @@ CPDF_AnnotList::CPDF_AnnotList(CPDF_Page* pPage) if (!pAnnots) return; - CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); + const CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); CPDF_Dictionary* pAcroForm = pRoot->GetDictFor("AcroForm"); bool bRegenerateAP = pAcroForm && pAcroForm->GetBooleanFor("NeedAppearances"); for (size_t i = 0; i < pAnnots->GetCount(); ++i) { diff --git a/core/fpdfdoc/cpdf_bookmarktree.cpp b/core/fpdfdoc/cpdf_bookmarktree.cpp index b5dfe4f45f..33c9f3d15b 100644 --- a/core/fpdfdoc/cpdf_bookmarktree.cpp +++ b/core/fpdfdoc/cpdf_bookmarktree.cpp @@ -18,7 +18,7 @@ CPDF_Bookmark CPDF_BookmarkTree::GetFirstChild( if (pParentDict) return CPDF_Bookmark(pParentDict->GetDictFor("First")); - CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); + const CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); if (!pRoot) return CPDF_Bookmark(); diff --git a/core/fpdfdoc/cpdf_metadata.cpp b/core/fpdfdoc/cpdf_metadata.cpp index 5379275544..b31348aa0b 100644 --- a/core/fpdfdoc/cpdf_metadata.cpp +++ b/core/fpdfdoc/cpdf_metadata.cpp @@ -11,8 +11,8 @@ #include "core/fpdfapi/parser/cpdf_stream_acc.h" #include "core/fxcrt/xml/cxml_element.h" -CPDF_Metadata::CPDF_Metadata(CPDF_Document* pDoc) { - CPDF_Dictionary* pRoot = pDoc->GetRoot(); +CPDF_Metadata::CPDF_Metadata(const CPDF_Document* pDoc) { + const CPDF_Dictionary* pRoot = pDoc->GetRoot(); if (!pRoot) return; diff --git a/core/fpdfdoc/cpdf_metadata.h b/core/fpdfdoc/cpdf_metadata.h index dd68dda713..fa958153fc 100644 --- a/core/fpdfdoc/cpdf_metadata.h +++ b/core/fpdfdoc/cpdf_metadata.h @@ -14,7 +14,7 @@ class CXML_Element; class CPDF_Metadata { public: - explicit CPDF_Metadata(CPDF_Document* pDoc); + explicit CPDF_Metadata(const CPDF_Document* pDoc); ~CPDF_Metadata(); const CXML_Element* GetRoot() const; diff --git a/core/fpdfdoc/cpdf_nametree.cpp b/core/fpdfdoc/cpdf_nametree.cpp index dc5b6e526d..d225d3f0bf 100644 --- a/core/fpdfdoc/cpdf_nametree.cpp +++ b/core/fpdfdoc/cpdf_nametree.cpp @@ -299,10 +299,10 @@ size_t CountNames(CPDF_Dictionary* pNode, int nLevel = 0) { CPDF_NameTree::CPDF_NameTree(CPDF_Dictionary* pRoot) : m_pRoot(pRoot) {} -CPDF_NameTree::CPDF_NameTree(CPDF_Document* pDoc, +CPDF_NameTree::CPDF_NameTree(const CPDF_Document* pDoc, const CFX_ByteString& category) : m_pRoot(nullptr) { - CPDF_Dictionary* pRoot = pDoc->GetRoot(); + const CPDF_Dictionary* pRoot = pDoc->GetRoot(); if (!pRoot) return; diff --git a/core/fpdfdoc/cpdf_nametree.h b/core/fpdfdoc/cpdf_nametree.h index 8c26c9380e..4dc43fc3ac 100644 --- a/core/fpdfdoc/cpdf_nametree.h +++ b/core/fpdfdoc/cpdf_nametree.h @@ -20,7 +20,7 @@ class CPDF_Object; class CPDF_NameTree { public: explicit CPDF_NameTree(CPDF_Dictionary* pRoot); - CPDF_NameTree(CPDF_Document* pDoc, const CFX_ByteString& category); + CPDF_NameTree(const CPDF_Document* pDoc, const CFX_ByteString& category); ~CPDF_NameTree(); bool AddValueAndName(std::unique_ptr pObj, diff --git a/core/fpdfdoc/cpdf_pagelabel.cpp b/core/fpdfdoc/cpdf_pagelabel.cpp index 41cbb8974e..7b5e66e585 100644 --- a/core/fpdfdoc/cpdf_pagelabel.cpp +++ b/core/fpdfdoc/cpdf_pagelabel.cpp @@ -84,7 +84,7 @@ bool CPDF_PageLabel::GetLabel(int nPage, CFX_WideString* wsLabel) const { if (nPage < 0 || nPage >= m_pDocument->GetPageCount()) return false; - CPDF_Dictionary* pPDFRoot = m_pDocument->GetRoot(); + const CPDF_Dictionary* pPDFRoot = m_pDocument->GetRoot(); if (!pPDFRoot) return false; @@ -124,7 +124,7 @@ int32_t CPDF_PageLabel::GetPageByLabel(const CFX_ByteStringC& bsLabel) const { if (!m_pDocument) return -1; - CPDF_Dictionary* pPDFRoot = m_pDocument->GetRoot(); + const CPDF_Dictionary* pPDFRoot = m_pDocument->GetRoot(); if (!pPDFRoot) return -1; diff --git a/core/fpdfdoc/cpdf_structtree.cpp b/core/fpdfdoc/cpdf_structtree.cpp index 62500ac155..9168a4f01a 100644 --- a/core/fpdfdoc/cpdf_structtree.cpp +++ b/core/fpdfdoc/cpdf_structtree.cpp @@ -19,8 +19,8 @@ namespace { const int nMaxRecursion = 32; bool IsTagged(const CPDF_Document* pDoc) { - CPDF_Dictionary* pCatalog = pDoc->GetRoot(); - CPDF_Dictionary* pMarkInfo = pCatalog->GetDictFor("MarkInfo"); + const CPDF_Dictionary* pCatalog = pDoc->GetRoot(); + const CPDF_Dictionary* pMarkInfo = pCatalog->GetDictFor("MarkInfo"); return pMarkInfo && pMarkInfo->GetIntegerFor("Marked"); } diff --git a/core/fpdfdoc/cpdf_viewerpreferences.cpp b/core/fpdfdoc/cpdf_viewerpreferences.cpp index f1fc4b0347..e25316b6fb 100644 --- a/core/fpdfdoc/cpdf_viewerpreferences.cpp +++ b/core/fpdfdoc/cpdf_viewerpreferences.cpp @@ -55,6 +55,6 @@ bool CPDF_ViewerPreferences::GenericName(const CFX_ByteString& bsKey, } CPDF_Dictionary* CPDF_ViewerPreferences::GetViewerPreferences() const { - CPDF_Dictionary* pDict = m_pDoc->GetRoot(); + const CPDF_Dictionary* pDict = m_pDoc->GetRoot(); return pDict ? pDict->GetDictFor("ViewerPreferences") : nullptr; } diff --git a/core/fpdfdoc/cpvt_generateap.cpp b/core/fpdfdoc/cpvt_generateap.cpp index 90d5d94f7f..132e771d47 100644 --- a/core/fpdfdoc/cpvt_generateap.cpp +++ b/core/fpdfdoc/cpvt_generateap.cpp @@ -34,9 +34,11 @@ namespace { bool GenerateWidgetAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict, const int32_t& nWidgetType) { - CPDF_Dictionary* pFormDict = nullptr; - if (CPDF_Dictionary* pRootDict = pDoc->GetRoot()) - pFormDict = pRootDict->GetDictFor("AcroForm"); + const CPDF_Dictionary* pRootDict = pDoc->GetRoot(); + if (!pRootDict) + return false; + + const CPDF_Dictionary* pFormDict = pRootDict->GetDictFor("AcroForm"); if (!pFormDict) return false; -- cgit v1.2.3