Make CXFA_ItemLayoutProcessor::m_pPageMgr an UnownedPtr<>.

Then re-order members in CXFA_LayoutProcessor to preserve invariant.

Change-Id: I6c9aadd4a16d0c2378b017739635aa7e1866fc81
Reviewed-on: https://pdfium-review.googlesource.com/c/47830
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp b/xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp
index 189e4c4..db24066 100644
--- a/xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp
+++ b/xfa/fxfa/parser/cxfa_itemlayoutprocessor.cpp
@@ -1135,7 +1135,7 @@
       continue;
 
     auto pProcessor = pdfium::MakeUnique<CXFA_ItemLayoutProcessor>(
-        m_pCurChildNode, m_pPageMgr);
+        m_pCurChildNode, m_pPageMgr.Get());
     if (pContext && pContext->m_prgSpecifiedColumnWidths) {
       int32_t iColSpan =
           m_pCurChildNode->JSObject()->GetInteger(XFA_Attribute::ColSpan);
@@ -1273,7 +1273,7 @@
       continue;
 
     auto pProcessor = pdfium::MakeUnique<CXFA_ItemLayoutProcessor>(
-        m_pCurChildNode, m_pPageMgr);
+        m_pCurChildNode, m_pPageMgr.Get());
     pProcessor->DoLayout(false, FLT_MAX, FLT_MAX, pLayoutContext);
     if (!pProcessor->HasLayoutItem())
       continue;
@@ -1887,7 +1887,7 @@
           } else if (m_pPageMgr && m_pPageMgr->ProcessBookendLeaderOrTrailer(
                                        m_pCurChildNode, true, pLeaderNode)) {
             pProcessor = pdfium::MakeUnique<CXFA_ItemLayoutProcessor>(
-                pLeaderNode, m_pPageMgr);
+                pLeaderNode, m_pPageMgr.Get());
           }
 
           if (pProcessor) {
@@ -1915,7 +1915,7 @@
           } else if (m_pPageMgr && m_pPageMgr->ProcessBookendLeaderOrTrailer(
                                        m_pCurChildNode, false, pTrailerNode)) {
             pProcessor = pdfium::MakeUnique<CXFA_ItemLayoutProcessor>(
-                pTrailerNode, m_pPageMgr);
+                pTrailerNode, m_pPageMgr.Get());
           }
           if (pProcessor) {
             if (InsertFlowedItem(pProcessor.get(), bContainerWidthAutoSize,
@@ -1953,7 +1953,7 @@
             bNewRow = true;
           } else {
             pProcessor = pdfium::MakeUnique<CXFA_ItemLayoutProcessor>(
-                m_pCurChildNode, m_pPageMgr);
+                m_pCurChildNode, m_pPageMgr.Get());
           }
 
           pProcessor->InsertPendingItems(m_pCurChildNode);
diff --git a/xfa/fxfa/parser/cxfa_itemlayoutprocessor.h b/xfa/fxfa/parser/cxfa_itemlayoutprocessor.h
index bb86110..4eea23e 100644
--- a/xfa/fxfa/parser/cxfa_itemlayoutprocessor.h
+++ b/xfa/fxfa/parser/cxfa_itemlayoutprocessor.h
@@ -14,6 +14,7 @@
 #include <vector>
 
 #include "core/fxcrt/fx_coordinates.h"
+#include "core/fxcrt/unowned_ptr.h"
 #include "xfa/fxfa/fxfa_basic.h"
 
 constexpr float kXFALayoutPrecision = 0.0005f;
@@ -166,7 +167,7 @@
   CXFA_ContentLayoutItem* m_pLayoutItem = nullptr;
   CXFA_Node* m_pCurChildNode = nullptr;
   float m_fUsedSize = 0;
-  CXFA_LayoutPageMgr* m_pPageMgr;
+  UnownedPtr<CXFA_LayoutPageMgr> m_pPageMgr;
   std::list<CXFA_Node*> m_PendingNodes;
   bool m_bBreakPending = true;
   std::vector<float> m_rgSpecifiedColumnWidths;
diff --git a/xfa/fxfa/parser/cxfa_layoutprocessor.h b/xfa/fxfa/parser/cxfa_layoutprocessor.h
index bba4357..b5b831e 100644
--- a/xfa/fxfa/parser/cxfa_layoutprocessor.h
+++ b/xfa/fxfa/parser/cxfa_layoutprocessor.h
@@ -46,8 +46,8 @@
   bool IsNeedLayout();
 
   UnownedPtr<CXFA_Document> const m_pDocument;
-  std::unique_ptr<CXFA_ItemLayoutProcessor> m_pRootItemLayoutProcessor;
   std::unique_ptr<CXFA_LayoutPageMgr> m_pLayoutPageMgr;
+  std::unique_ptr<CXFA_ItemLayoutProcessor> m_pRootItemLayoutProcessor;
   std::vector<CXFA_Node*> m_rgChangedContainers;
   uint32_t m_nProgressCounter;
   bool m_bNeedLayout;