Add virtual AddChangedContainer() to CXFA_Document::LayoutProcessorIface. Prefer interfaces over downcast to specific type as an aid to improving layering down the road. Can remove one circular include now, but several still remain between these directories. Change-Id: I57a570c715b5d5fd9d1069f62f2cce7b9a927dfc Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/63850 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fxjs/xfa/cjx_instancemanager.cpp b/fxjs/xfa/cjx_instancemanager.cpp index af02561..7ea4ba2 100644 --- a/fxjs/xfa/cjx_instancemanager.cpp +++ b/fxjs/xfa/cjx_instancemanager.cpp
@@ -14,7 +14,6 @@ #include "fxjs/xfa/cfxjse_value.h" #include "xfa/fxfa/cxfa_ffdoc.h" #include "xfa/fxfa/cxfa_ffnotify.h" -#include "xfa/fxfa/layout/cxfa_layoutprocessor.h" #include "xfa/fxfa/parser/cxfa_document.h" #include "xfa/fxfa/parser/cxfa_instancemanager.h" #include "xfa/fxfa/parser/cxfa_occur.h" @@ -103,8 +102,7 @@ pNotify->RunNodeInitialize(pNewInstance); } } - auto* pLayout = CXFA_LayoutProcessor::FromDocument(GetDocument()); - pLayout->AddChangedContainer( + GetDocument()->GetLayoutProcessor()->AddChangedContainer( ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Form))); return 0; } @@ -126,8 +124,7 @@ GetXFANode()->RemoveItem(pMoveInstance, false); GetXFANode()->InsertItem(pMoveInstance, iTo, iCount - 1, true); - auto* pLayout = CXFA_LayoutProcessor::FromDocument(GetDocument()); - pLayout->AddChangedContainer( + GetDocument()->GetLayoutProcessor()->AddChangedContainer( ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Form))); return 0; } @@ -199,8 +196,7 @@ } } } - auto* pLayout = CXFA_LayoutProcessor::FromDocument(GetDocument()); - pLayout->AddChangedContainer( + GetDocument()->GetLayoutProcessor()->AddChangedContainer( ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Form))); return CJS_Result::Success(); } @@ -248,9 +244,8 @@ CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); if (pNotify) { pNotify->RunNodeInitialize(pNewInstance); - CXFA_LayoutProcessor::FromDocument(GetDocument()) - ->AddChangedContainer( - ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Form))); + GetDocument()->GetLayoutProcessor()->AddChangedContainer( + ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Form))); } CFXJSE_Value* value = @@ -294,9 +289,8 @@ CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); if (pNotify) { pNotify->RunNodeInitialize(pNewInstance); - CXFA_LayoutProcessor::FromDocument(GetDocument()) - ->AddChangedContainer( - ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Form))); + GetDocument()->GetLayoutProcessor()->AddChangedContainer( + ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Form))); } CFXJSE_Value* value =
diff --git a/fxjs/xfa/cjx_layoutpseudomodel.cpp b/fxjs/xfa/cjx_layoutpseudomodel.cpp index 0fdcb5f..35852a8 100644 --- a/fxjs/xfa/cjx_layoutpseudomodel.cpp +++ b/fxjs/xfa/cjx_layoutpseudomodel.cpp
@@ -402,7 +402,7 @@ CFX_V8* runtime, const std::vector<v8::Local<v8::Value>>& params) { CXFA_Node* pRootNode = GetDocument()->GetRoot(); - auto* pLayoutProcessor = CXFA_LayoutProcessor::FromDocument(GetDocument()); + auto* pLayoutProcessor = GetDocument()->GetLayoutProcessor(); CXFA_Form* pFormRoot = pRootNode->GetFirstChildByClass<CXFA_Form>(XFA_Element::Form); if (pFormRoot) {
diff --git a/xfa/fxfa/cxfa_ffnotify.cpp b/xfa/fxfa/cxfa_ffnotify.cpp index d610cc4..e69d991 100644 --- a/xfa/fxfa/cxfa_ffnotify.cpp +++ b/xfa/fxfa/cxfa_ffnotify.cpp
@@ -412,8 +412,7 @@ } void CXFA_FFNotify::OnContainerChanged(CXFA_Node* pNode) { - auto* pLayout = CXFA_LayoutProcessor::FromDocument(m_pDoc->GetXFADoc()); - pLayout->AddChangedContainer(pNode); + m_pDoc->GetXFADoc()->GetLayoutProcessor()->AddChangedContainer(pNode); } void CXFA_FFNotify::OnChildAdded(CXFA_Node* pSender) {
diff --git a/xfa/fxfa/layout/cxfa_layoutprocessor.h b/xfa/fxfa/layout/cxfa_layoutprocessor.h index 5b6730a..fab6746 100644 --- a/xfa/fxfa/layout/cxfa_layoutprocessor.h +++ b/xfa/fxfa/layout/cxfa_layoutprocessor.h
@@ -29,6 +29,7 @@ // CXFA_Document::LayoutProcessorIface: void SetForceRelayout(bool bForceRestart) override; + void AddChangedContainer(CXFA_Node* pContainer) override; int32_t StartLayout(bool bForceRestart); int32_t DoLayout(); @@ -36,7 +37,6 @@ int32_t CountPages() const; CXFA_ViewLayoutItem* GetPage(int32_t index) const; CXFA_LayoutItem* GetLayoutItem(CXFA_Node* pFormItem); - void AddChangedContainer(CXFA_Node* pContainer); CXFA_ViewLayoutItem* GetRootLayoutItem() const; CXFA_ContentLayoutProcessor* GetRootContentLayoutProcessor() const { return m_pContentLayoutProcessor.get();
diff --git a/xfa/fxfa/parser/cxfa_document.h b/xfa/fxfa/parser/cxfa_document.h index 878284c..ea80475 100644 --- a/xfa/fxfa/parser/cxfa_document.h +++ b/xfa/fxfa/parser/cxfa_document.h
@@ -54,6 +54,7 @@ LayoutProcessorIface(); virtual ~LayoutProcessorIface(); virtual void SetForceRelayout(bool enable) = 0; + virtual void AddChangedContainer(CXFA_Node* pContainer) = 0; void SetDocument(CXFA_Document* pDocument) { m_pDocument = pDocument; } CXFA_Document* GetDocument() const { return m_pDocument.Get(); }