Do early returns in CXFA_LayoutPageMgr.

Also convert some switch-statements into if-statements.

Change-Id: I7768b57953cf32e721b325d1c019960f0668c2b1
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/49430
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp b/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp
index 5a8c3af..56c193b 100644
--- a/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp
+++ b/xfa/fxfa/layout/cxfa_itemlayoutprocessor.cpp
@@ -1698,7 +1698,7 @@
           if (!bUseBreakControl || !m_pPageMgr ||
               !m_pPageMgr->ProcessBreakBeforeOrAfter(m_pCurChildNode, true,
                                                      pLeaderNode, pTrailerNode,
-                                                     bCreatePage) ||
+                                                     &bCreatePage) ||
               GetFormNode()->GetElementType() == XFA_Element::Form ||
               !bCreatePage) {
             break;
@@ -1737,7 +1737,7 @@
           if (!bUseBreakControl || !m_pPageMgr ||
               !m_pPageMgr->ProcessBreakBeforeOrAfter(m_pCurChildNode, false,
                                                      pLeaderNode, pTrailerNode,
-                                                     bCreatePage) ||
+                                                     &bCreatePage) ||
               GetFormNode()->GetElementType() == XFA_Element::Form) {
             break;
           }
diff --git a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
index 8188544..eb7fe70 100644
--- a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
+++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
@@ -282,10 +282,10 @@
            pPageSetLayoutItem->GetFirstChild();
        pPageAreaLayoutItem;
        pPageAreaLayoutItem = pPageAreaLayoutItem->GetNextSibling()) {
-    if (pPageAreaLayoutItem->GetFormNode()->GetElementType() !=
-        XFA_Element::PageArea) {
+    XFA_Element type = pPageAreaLayoutItem->GetFormNode()->GetElementType();
+    if (type != XFA_Element::PageArea)
       continue;
-    }
+
     ++nCount;
     pLast = pPageAreaLayoutItem;
   }
@@ -383,11 +383,13 @@
   int32_t iCount = 0;
   for (pPageArea = m_pTemplatePageSetRoot->GetFirstChild(); pPageArea;
        pPageArea = pPageArea->GetNextSibling()) {
-    if (pPageArea->GetElementType() == XFA_Element::PageArea) {
-      iCount++;
-      if (pPageArea->GetFirstChildByClass<CXFA_ContentArea>(
-              XFA_Element::ContentArea))
-        return true;
+    if (pPageArea->GetElementType() != XFA_Element::PageArea)
+      continue;
+
+    iCount++;
+    if (pPageArea->GetFirstChildByClass<CXFA_ContentArea>(
+            XFA_Element::ContentArea)) {
+      return true;
     }
   }
   if (iCount > 0)
@@ -835,15 +837,15 @@
     bool bBefore,
     CXFA_Node*& pBreakLeaderNode,
     CXFA_Node*& pBreakTrailerNode,
-    bool& bCreatePage) {
+    bool* pCreatePage) {
   CXFA_Node* pLeaderTemplate = nullptr;
   CXFA_Node* pTrailerTemplate = nullptr;
   CXFA_Node* pFormNode = pBreakNode->GetContainerParent();
   if (!pFormNode->PresenceRequiresSpace())
     return false;
 
-  bCreatePage = ExecuteBreakBeforeOrAfter(pBreakNode, bBefore, pLeaderTemplate,
-                                          pTrailerTemplate);
+  *pCreatePage = ExecuteBreakBeforeOrAfter(pBreakNode, bBefore, pLeaderTemplate,
+                                           pTrailerTemplate);
   CXFA_Document* pDocument = pBreakNode->GetDocument();
   CXFA_Node* pDataScope = nullptr;
   pFormNode = pFormNode->GetContainerParent();
@@ -1053,20 +1055,20 @@
   if (pBookendNode->GetElementType() == XFA_Element::Break) {
     WideString leader = pBookendNode->JSObject()->GetCData(
         bLeader ? XFA_Attribute::BookendLeader : XFA_Attribute::BookendTrailer);
-    if (!leader.IsEmpty()) {
-      pBookendAppendTemplate = ResolveBreakTarget(pContainer, false, leader);
-      return true;
-    }
-    return false;
-  }
+    if (leader.IsEmpty())
+      return false;
 
-  if (pBookendNode->GetElementType() == XFA_Element::Bookend) {
-    WideString leader = pBookendNode->JSObject()->GetCData(
-        bLeader ? XFA_Attribute::Leader : XFA_Attribute::Trailer);
-    pBookendAppendTemplate = ResolveBreakTarget(pContainer, true, leader);
+    pBookendAppendTemplate = ResolveBreakTarget(pContainer, false, leader);
     return true;
   }
-  return false;
+
+  if (pBookendNode->GetElementType() != XFA_Element::Bookend)
+    return false;
+
+  WideString leader = pBookendNode->JSObject()->GetCData(
+      bLeader ? XFA_Attribute::Leader : XFA_Attribute::Trailer);
+  pBookendAppendTemplate = ResolveBreakTarget(pContainer, true, leader);
+  return true;
 }
 
 bool CXFA_LayoutPageMgr::FindPageAreaFromPageSet(CXFA_Node* pPageSet,
@@ -1380,13 +1382,12 @@
       return false;
     }
     if (pContentAreaLayout) {
-      if (pContentAreaLayout->GetFormNode() != pCurContentNode) {
-        CXFA_ContainerRecord* pNewRecord =
-            CreateContainerRecord(nullptr, false);
-        pNewRecord->pCurContentArea = pContentAreaLayout;
-        return true;
-      }
-      return false;
+      if (pContentAreaLayout->GetFormNode() == pCurContentNode)
+        return false;
+
+      CXFA_ContainerRecord* pNewRecord = CreateContainerRecord(nullptr, false);
+      pNewRecord->pCurContentArea = pContentAreaLayout;
+      return true;
     }
   }
 
@@ -1573,11 +1574,8 @@
 
   float fNextContentHeight = pContentArea->JSObject()->GetMeasureInUnit(
       XFA_Attribute::H, XFA_Unit::Pt);
-  if (fNextContentHeight < kXFALayoutPrecision)
-    return true;
-  if (fNextContentHeight > fChildHeight)
-    return true;
-  return false;
+  return fNextContentHeight < kXFALayoutPrecision ||
+         fNextContentHeight > fChildHeight;
 }
 
 void CXFA_LayoutPageMgr::ClearData() {
@@ -1867,15 +1865,12 @@
         iterator(pRootLayoutItem);
     for (CXFA_ContainerLayoutItem* pContainerItem = iterator.GetCurrent();
          pContainerItem; pContainerItem = iterator.MoveToNext()) {
-      CXFA_Node* pNode = pContainerItem->GetFormNode();
-      switch (pNode->GetElementType()) {
-        case XFA_Element::PageArea:
-          m_pLayoutProcessor->GetRootRootItemLayoutProcessor()
-              ->DoLayoutPageArea(pContainerItem);
-          break;
-        default:
-          break;
-      }
+      XFA_Element type = pContainerItem->GetFormNode()->GetElementType();
+      if (type != XFA_Element::PageArea)
+        continue;
+
+      m_pLayoutProcessor->GetRootRootItemLayoutProcessor()->DoLayoutPageArea(
+          pContainerItem);
     }
   }
 }
@@ -1894,39 +1889,36 @@
         iteratorParent(pRootLayoutItem);
     for (CXFA_ContainerLayoutItem* pContainerItem = iteratorParent.GetCurrent();
          pContainerItem; pContainerItem = iteratorParent.MoveToNext()) {
-      switch (pContainerItem->GetFormNode()->GetElementType()) {
-        case XFA_Element::PageArea: {
-          nPageIdx++;
-          uint32_t dwRelevant =
-              XFA_WidgetStatus_Viewable | XFA_WidgetStatus_Printable;
-          CXFA_NodeIteratorTemplate<CXFA_LayoutItem,
-                                    CXFA_TraverseStrategy_LayoutItem>
-              iterator(pContainerItem);
-          CXFA_LayoutItem* pChildLayoutItem = iterator.GetCurrent();
-          while (pChildLayoutItem) {
-            CXFA_ContentLayoutItem* pContentItem =
-                pChildLayoutItem->AsContentLayoutItem();
-            if (!pContentItem) {
-              pChildLayoutItem = iterator.MoveToNext();
-              continue;
-            }
+      XFA_Element type = pContainerItem->GetFormNode()->GetElementType();
+      if (type != XFA_Element::PageArea)
+        continue;
 
-            XFA_AttributeValue presence =
-                pContentItem->GetFormNode()
-                    ->JSObject()
-                    ->TryEnum(XFA_Attribute::Presence, true)
-                    .value_or(XFA_AttributeValue::Visible);
-            bool bVisible = presence == XFA_AttributeValue::Visible;
-            uint32_t dwRelevantChild =
-                GetRelevant(pContentItem->GetFormNode(), dwRelevant);
-            SyncContainer(pNotify, m_pLayoutProcessor, pContentItem,
-                          dwRelevantChild, bVisible, nPageIdx);
-            pChildLayoutItem = iterator.SkipChildrenAndMoveToNext();
-          }
-          break;
+      nPageIdx++;
+      uint32_t dwRelevant =
+          XFA_WidgetStatus_Viewable | XFA_WidgetStatus_Printable;
+      CXFA_NodeIteratorTemplate<CXFA_LayoutItem,
+                                CXFA_TraverseStrategy_LayoutItem>
+          iterator(pContainerItem);
+      CXFA_LayoutItem* pChildLayoutItem = iterator.GetCurrent();
+      while (pChildLayoutItem) {
+        CXFA_ContentLayoutItem* pContentItem =
+            pChildLayoutItem->AsContentLayoutItem();
+        if (!pContentItem) {
+          pChildLayoutItem = iterator.MoveToNext();
+          continue;
         }
-        default:
-          break;
+
+        XFA_AttributeValue presence =
+            pContentItem->GetFormNode()
+                ->JSObject()
+                ->TryEnum(XFA_Attribute::Presence, true)
+                .value_or(XFA_AttributeValue::Visible);
+        bool bVisible = presence == XFA_AttributeValue::Visible;
+        uint32_t dwRelevantChild =
+            GetRelevant(pContentItem->GetFormNode(), dwRelevant);
+        SyncContainer(pNotify, m_pLayoutProcessor, pContentItem,
+                      dwRelevantChild, bVisible, nPageIdx);
+        pChildLayoutItem = iterator.SkipChildrenAndMoveToNext();
       }
     }
   }
diff --git a/xfa/fxfa/layout/cxfa_layoutpagemgr.h b/xfa/fxfa/layout/cxfa_layoutpagemgr.h
index 90ac7d9..e41f73a 100644
--- a/xfa/fxfa/layout/cxfa_layoutpagemgr.h
+++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.h
@@ -41,7 +41,7 @@
                                  bool bBefore,
                                  CXFA_Node*& pBreakLeaderNode,
                                  CXFA_Node*& pBreakTrailerNode,
-                                 bool& bCreatePage);
+                                 bool* pCreatePage);
   bool ProcessOverflow(CXFA_Node* pFormNode,
                        CXFA_Node*& pLeaderNode,
                        CXFA_Node*& pTrailerNode,