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(); }