FX_BOOL not always 0 or 1 in CPDF_PageObjects::m_ParserState
authorTom Sepez <tsepez@chromium.org>
Thu, 23 Jul 2015 21:36:34 +0000 (14:36 -0700)
committerTom Sepez <tsepez@chromium.org>
Thu, 23 Jul 2015 21:36:34 +0000 (14:36 -0700)
This fixes part of the failure encountered at 320b2313d198.

R=thestig@chromium.org

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

core/include/fpdfapi/fpdf_page.h
core/src/fpdfapi/fpdf_page/fpdf_page.cpp
core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
core/src/fpdfapi/fpdf_page/pageint.h

index 7aed626..bd8b5c9 100644 (file)
@@ -24,37 +24,20 @@ class CPDF_StreamContentParser;
 #define PDFTRANS_GROUP                 0x0100
 #define PDFTRANS_ISOLATED              0x0200
 #define PDFTRANS_KNOCKOUT              0x0400
-#define PDF_CONTENT_NOT_PARSED 0
-#define PDF_CONTENT_PARSING            1
-#define PDF_CONTENT_PARSED             2
+
 class CPDF_PageObjects
 {
 public:
-
     CPDF_PageObjects(FX_BOOL bReleaseMembers = TRUE);
-
     ~CPDF_PageObjects();
 
-
-
-
     void                               ContinueParse(IFX_Pause* pPause);
 
-    int                                        GetParseState() const
-    {
-        return m_ParseState;
-    }
-
     FX_BOOL                            IsParsed() const
     {
-        return m_ParseState == PDF_CONTENT_PARSED;
+        return m_ParseState == CONTENT_PARSED;
     }
 
-    int                                        EstimateParseProgress() const;
-
-
-
-
     FX_POSITION                        GetFirstObjectPosition() const
     {
         return m_ObjectList.GetHeadPosition();
@@ -89,10 +72,6 @@ public:
 
     CPDF_PageObject*   GetObjectByIndex(int index) const;
 
-
-
-
-
     FX_POSITION                        InsertObject(FX_POSITION posInsertAfter, CPDF_PageObject* pNewObject);
 
     void                               Transform(const CFX_AffineMatrix& matrix);
@@ -105,17 +84,11 @@ public:
     CFX_FloatRect              CalcBoundingBox() const;
 
     CPDF_Dictionary*   m_pFormDict;
-
     CPDF_Stream*               m_pFormStream;
-
     CPDF_Document*             m_pDocument;
-
     CPDF_Dictionary*   m_pPageResources;
-
     CPDF_Dictionary*   m_pResources;
-
     CFX_FloatRect              m_BBox;
-
     int                                        m_Transparency;
 
 protected:
@@ -123,18 +96,22 @@ protected:
     friend class               CPDF_StreamContentParser;
     friend class               CPDF_AllStates;
 
-    CFX_PtrList                        m_ObjectList;
-
-    FX_BOOL                            m_bBackgroundAlphaNeeded;
+    enum ParseState {
+        CONTENT_NOT_PARSED,
+        CONTENT_PARSING,
+        CONTENT_PARSED
+    };
 
-    FX_BOOL                            m_bReleaseMembers;
     void                               LoadTransInfo();
     void                ClearCacheObjects();
 
+    CFX_PtrList                        m_ObjectList;
+    FX_BOOL                            m_bBackgroundAlphaNeeded;
+    FX_BOOL                            m_bReleaseMembers;
     CPDF_ContentParser*        m_pParser;
-
-    FX_BOOL                            m_ParseState;
+    ParseState                 m_ParseState;
 };
+
 class CPDF_Page : public CPDF_PageObjects, public CFX_PrivateData
 {
 public:
index c0cdb22..f404352 100644 (file)
@@ -720,14 +720,19 @@ void CPDF_FormObject::CalcBoundingBox()
     m_Right = form_rect.right;
     m_Top = form_rect.top;
 }
-CPDF_PageObjects::CPDF_PageObjects(FX_BOOL bReleaseMembers) : m_ObjectList(128)
+CPDF_PageObjects::CPDF_PageObjects(FX_BOOL bReleaseMembers)
+    : m_pFormDict(nullptr),
+      m_pFormStream(nullptr),
+      m_pDocument(nullptr),
+      m_pPageResources(nullptr),
+      m_pResources(nullptr),
+      m_Transparency(0),
+      m_ObjectList(128),
+      m_bBackgroundAlphaNeeded(FALSE),
+      m_bReleaseMembers(bReleaseMembers),
+      m_pParser(nullptr),
+      m_ParseState(CONTENT_NOT_PARSED)
 {
-    m_bBackgroundAlphaNeeded = FALSE;
-    m_bReleaseMembers = bReleaseMembers;
-    m_ParseState = PDF_CONTENT_NOT_PARSED;
-    m_pParser = NULL;
-    m_pFormStream = NULL;
-    m_pResources = NULL;
 }
 CPDF_PageObjects::~CPDF_PageObjects()
 {
@@ -747,18 +752,11 @@ void CPDF_PageObjects::ContinueParse(IFX_Pause* pPause)
     }
     m_pParser->Continue(pPause);
     if (m_pParser->GetStatus() == CPDF_ContentParser::Done) {
-        m_ParseState = PDF_CONTENT_PARSED;
+        m_ParseState = CONTENT_PARSED;
         delete m_pParser;
         m_pParser = NULL;
     }
 }
-int CPDF_PageObjects::EstimateParseProgress() const
-{
-    if (!m_pParser) {
-        return m_ParseState == PDF_CONTENT_PARSED ? 100 : 0;
-    }
-    return m_pParser->EstimateProgress();
-}
 FX_POSITION CPDF_PageObjects::InsertObject(FX_POSITION posInsertAfter, CPDF_PageObject* pNewObject)
 {
     if (!posInsertAfter) {
@@ -843,7 +841,7 @@ void CPDF_PageObjects::LoadTransInfo()
 }
 void CPDF_PageObjects::ClearCacheObjects()
 {
-    m_ParseState = PDF_CONTENT_NOT_PARSED;
+    m_ParseState = CONTENT_NOT_PARSED;
     delete m_pParser;
     m_pParser = NULL;
     if (m_bReleaseMembers) {
@@ -930,12 +928,12 @@ void CPDF_Page::StartParse(CPDF_ParseOptions* pOptions, FX_BOOL bReParse)
     if (bReParse) {
         ClearCacheObjects();
     }
-    if (m_ParseState == PDF_CONTENT_PARSED || m_ParseState == PDF_CONTENT_PARSING) {
+    if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) {
         return;
     }
     m_pParser = new CPDF_ContentParser;
     m_pParser->Start(this, pOptions);
-    m_ParseState = PDF_CONTENT_PARSING;
+    m_ParseState = CONTENT_PARSING;
 }
 void CPDF_Page::ParseContent(CPDF_ParseOptions* pOptions, FX_BOOL bReParse)
 {
@@ -994,12 +992,12 @@ CPDF_Form::~CPDF_Form()
 void CPDF_Form::StartParse(CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix,
                            CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level)
 {
-    if (m_ParseState == PDF_CONTENT_PARSED || m_ParseState == PDF_CONTENT_PARSING) {
+    if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) {
         return;
     }
     m_pParser = new CPDF_ContentParser;
     m_pParser->Start(this, pGraphicStates, pParentMatrix, pType3Char, pOptions, level);
-    m_ParseState = PDF_CONTENT_PARSING;
+    m_ParseState = CONTENT_PARSING;
 }
 void CPDF_Form::ParseContent(CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix,
                              CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level)
index 37ffea9..b2cfce7 100644 (file)
@@ -1133,19 +1133,3 @@ void CPDF_ContentParser::Continue(IFX_Pause* pPause)
         }
     }
 }
-int CPDF_ContentParser::EstimateProgress()
-{
-    if (m_Status == Ready) {
-        return 0;
-    }
-    if (m_Status == Done) {
-        return 100;
-    }
-    if (m_InternalStage == PAGEPARSE_STAGE_GETCONTENT) {
-        return 10;
-    }
-    if (m_InternalStage == PAGEPARSE_STAGE_CHECKCLIP) {
-        return 90;
-    }
-    return 10 + 80 * m_CurrentOffset / m_Size;
-}
index cf1fe47..8cd393c 100644 (file)
@@ -309,9 +309,15 @@ protected:
 class CPDF_ContentParser
 {
 public:
+    enum ParseStatus {
+        Ready,
+        ToBeContinued,
+        Done
+    };
+
     CPDF_ContentParser();
     ~CPDF_ContentParser();
-    typedef enum { Ready, ToBeContinued, Done } ParseStatus;
+
     ParseStatus                        GetStatus()
     {
         return m_Status;
@@ -320,7 +326,7 @@ public:
     void                               Start(CPDF_Form* pForm, CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix,
                               CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level);
     void                               Continue(IFX_Pause* pPause);
-    int                                        EstimateProgress();
+
 protected:
     void                               Clear();
     ParseStatus                        m_Status;