Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2025)

Unified Diff: xfa/fxfa/parser/xfa_object_imp.cpp

Issue 1890563003: Simplify XFA event handling. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: cleanup CXFA_Node Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « xfa/fxfa/parser/xfa_object.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: xfa/fxfa/parser/xfa_object_imp.cpp
diff --git a/xfa/fxfa/parser/xfa_object_imp.cpp b/xfa/fxfa/parser/xfa_object_imp.cpp
index 87941af070350665662581b4c64fd04738573720..4c35cb7afb9499323425142a290b7f62499b82d8 100644
--- a/xfa/fxfa/parser/xfa_object_imp.cpp
+++ b/xfa/fxfa/parser/xfa_object_imp.cpp
@@ -1298,9 +1298,9 @@ void CXFA_Node::Script_Attribute_BOOLRead(FXJSE_HVALUE hValue,
ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET);
}
}
+
void CXFA_Node::Script_Attribute_SendAttributeChangeMessage(
- void* eAttribute,
- void* eValue,
+ XFA_ATTRIBUTE eAttribute,
FX_BOOL bScriptModify) {
CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor();
if (!pLayoutPro) {
@@ -1317,20 +1317,19 @@ void CXFA_Node::Script_Attribute_SendAttributeChangeMessage(
switch (eType) {
case XFA_ELEMENT_Caption:
bNeedFindContainer = TRUE;
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, this, GetNodeItem(XFA_NODEITEM_Parent));
+ pNotify->OnValueChanged(this, eAttribute, this,
+ GetNodeItem(XFA_NODEITEM_Parent));
break;
case XFA_ELEMENT_Font:
case XFA_ELEMENT_Para: {
bNeedFindContainer = TRUE;
CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent);
if (pParentNode->GetClassID() == XFA_ELEMENT_Caption) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, pParentNode,
- pParentNode->GetNodeItem(XFA_NODEITEM_Parent));
+ pNotify->OnValueChanged(
+ this, eAttribute, pParentNode,
+ pParentNode->GetNodeItem(XFA_NODEITEM_Parent));
} else {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, this, pParentNode);
+ pNotify->OnValueChanged(this, eAttribute, this, pParentNode);
}
} break;
case XFA_ELEMENT_Margin: {
@@ -1338,18 +1337,16 @@ void CXFA_Node::Script_Attribute_SendAttributeChangeMessage(
CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent);
XFA_ELEMENT eParentType = pParentNode->GetClassID();
if (pParentNode->IsContainerNode()) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, this, pParentNode);
+ pNotify->OnValueChanged(this, eAttribute, this, pParentNode);
} else if (eParentType == XFA_ELEMENT_Caption) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, pParentNode,
- pParentNode->GetNodeItem(XFA_NODEITEM_Parent));
+ pNotify->OnValueChanged(
+ this, eAttribute, pParentNode,
+ pParentNode->GetNodeItem(XFA_NODEITEM_Parent));
} else {
CXFA_Node* pNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent);
if (pNode && pNode->GetClassID() == XFA_ELEMENT_Ui) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, pNode,
- pNode->GetNodeItem(XFA_NODEITEM_Parent));
+ pNotify->OnValueChanged(this, eAttribute, pNode,
+ pNode->GetNodeItem(XFA_NODEITEM_Parent));
}
}
} break;
@@ -1361,9 +1358,8 @@ void CXFA_Node::Script_Attribute_SendAttributeChangeMessage(
eUIType == XFA_ELEMENT_TextEdit)) {
CXFA_Node* pUINode = pEditNode->GetNodeItem(XFA_NODEITEM_Parent);
if (pUINode) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, pUINode,
- pUINode->GetNodeItem(XFA_NODEITEM_Parent));
+ pNotify->OnValueChanged(this, eAttribute, pUINode,
+ pUINode->GetNodeItem(XFA_NODEITEM_Parent));
}
}
} break;
@@ -1376,18 +1372,16 @@ void CXFA_Node::Script_Attribute_SendAttributeChangeMessage(
case XFA_ELEMENT_TextEdit: {
CXFA_Node* pUINode = GetNodeItem(XFA_NODEITEM_Parent);
if (pUINode) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, pUINode,
- pUINode->GetNodeItem(XFA_NODEITEM_Parent));
+ pNotify->OnValueChanged(this, eAttribute, pUINode,
+ pUINode->GetNodeItem(XFA_NODEITEM_Parent));
}
} break;
case XFA_ELEMENT_CheckButton: {
bNeedFindContainer = TRUE;
CXFA_Node* pUINode = GetNodeItem(XFA_NODEITEM_Parent);
if (pUINode) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, pUINode,
- pUINode->GetNodeItem(XFA_NODEITEM_Parent));
+ pNotify->OnValueChanged(this, eAttribute, pUINode,
+ pUINode->GetNodeItem(XFA_NODEITEM_Parent));
}
} break;
case XFA_ELEMENT_Keep:
@@ -1405,8 +1399,7 @@ void CXFA_Node::Script_Attribute_SendAttributeChangeMessage(
case XFA_ELEMENT_Subform:
case XFA_ELEMENT_SubformSet:
pLayoutPro->AddChangedContainer(this);
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, this, this);
+ pNotify->OnValueChanged(this, eAttribute, this, this);
break;
case XFA_ELEMENT_Sharptext:
case XFA_ELEMENT_Sharpxml:
@@ -1427,19 +1420,16 @@ void CXFA_Node::Script_Attribute_SendAttributeChangeMessage(
if (bScriptModify) {
pValueNode = pNode;
}
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, pValueNode, pNode);
+ pNotify->OnValueChanged(this, eAttribute, pValueNode, pNode);
} else {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, pNode,
- pNode->GetNodeItem(XFA_NODEITEM_Parent));
+ pNotify->OnValueChanged(this, eAttribute, pNode,
+ pNode->GetNodeItem(XFA_NODEITEM_Parent));
}
} else {
if (eType == XFA_ELEMENT_Items) {
CXFA_Node* pNode = pValueNode->GetNodeItem(XFA_NODEITEM_Parent);
if (pNode && pNode->IsContainerNode()) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute,
- eValue, pValueNode, pNode);
+ pNotify->OnValueChanged(this, eAttribute, pValueNode, pNode);
}
}
}
@@ -1460,10 +1450,10 @@ void CXFA_Node::Script_Attribute_SendAttributeChangeMessage(
}
}
} else {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, eValue,
- this, this);
+ pNotify->OnValueChanged(this, eAttribute, this, this);
}
}
+
void CXFA_Node::Script_Attribute_String(FXJSE_HVALUE hValue,
FX_BOOL bSetting,
XFA_ATTRIBUTE eAttribute) {
@@ -3754,7 +3744,7 @@ FX_BOOL CXFA_Node::HasAttribute(XFA_ATTRIBUTE eAttr, FX_BOOL bCanInherit) {
}
FX_BOOL CXFA_Node::SetAttribute(XFA_ATTRIBUTE eAttr,
const CFX_WideStringC& wsValue,
- FX_BOOL bNotify) {
+ bool bNotify) {
const XFA_ATTRIBUTEINFO* pAttr = XFA_GetAttributeByID(eAttr);
if (pAttr == NULL) {
return FALSE;
@@ -3850,7 +3840,7 @@ FX_BOOL CXFA_Node::GetAttribute(XFA_ATTRIBUTE eAttr,
}
FX_BOOL CXFA_Node::SetAttribute(const CFX_WideStringC& wsAttr,
const CFX_WideStringC& wsValue,
- FX_BOOL bNotify) {
+ bool bNotify) {
const XFA_ATTRIBUTEINFO* pAttributeInfo = XFA_GetAttributeByName(wsValue);
if (pAttributeInfo) {
return SetAttribute(pAttributeInfo->eName, wsValue, bNotify);
@@ -3908,15 +3898,17 @@ FX_BOOL CXFA_Node::TryEnum(XFA_ATTRIBUTE eAttr,
eValue = (XFA_ATTRIBUTEENUM)(uintptr_t)pValue;
return TRUE;
}
+
FX_BOOL CXFA_Node::SetMeasure(XFA_ATTRIBUTE eAttr,
CXFA_Measurement mValue,
- FX_BOOL bNotify) {
+ bool bNotify) {
void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr);
- OnChanging(eAttr, &mValue, bNotify);
+ OnChanging(eAttr, bNotify);
SetMapModuleBuffer(pKey, &mValue, sizeof(CXFA_Measurement));
- OnChanged(eAttr, &mValue, bNotify);
+ OnChanged(eAttr, bNotify, FALSE);
Tom Sepez 2016/04/14 22:45:44 nit: false vs. FALSE ?
Lei Zhang 2016/04/15 01:16:40 I didn't change the last parameter to a bool yet.
return TRUE;
}
+
FX_BOOL CXFA_Node::TryMeasure(XFA_ATTRIBUTE eAttr,
CXFA_Measurement& mValue,
FX_BOOL bUseDefault) const {
@@ -3943,10 +3935,10 @@ CXFA_Measurement CXFA_Node::GetMeasure(XFA_ATTRIBUTE eAttr) const {
FX_BOOL CXFA_Node::SetCData(XFA_ATTRIBUTE eAttr,
const CFX_WideString& wsValue,
- FX_BOOL bNotify,
+ bool bNotify,
FX_BOOL bScriptModify) {
void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr);
- OnChanging(eAttr, (void*)wsValue.c_str(), bNotify);
+ OnChanging(eAttr, bNotify);
if (eAttr == XFA_ATTRIBUTE_Value) {
CFX_WideString* pClone = new CFX_WideString(wsValue);
SetUserData(pKey, pClone, &deleteWideStringCallBack);
@@ -3955,7 +3947,7 @@ FX_BOOL CXFA_Node::SetCData(XFA_ATTRIBUTE eAttr,
if (eAttr == XFA_ATTRIBUTE_Name)
UpdateNameHash();
}
- OnChanged(eAttr, (void*)wsValue.c_str(), bNotify, bScriptModify);
+ OnChanged(eAttr, bNotify, bScriptModify);
if (IsNeedSavingXMLNode() && eAttr != XFA_ATTRIBUTE_QualifiedName &&
eAttr != XFA_ATTRIBUTE_BindingNode) {
if (eAttr == XFA_ATTRIBUTE_Name &&
@@ -4012,14 +4004,13 @@ FX_BOOL CXFA_Node::SetCData(XFA_ATTRIBUTE eAttr,
}
FX_BOOL CXFA_Node::SetAttributeValue(const CFX_WideString& wsValue,
const CFX_WideString& wsXMLValue,
- FX_BOOL bNotify,
+ bool bNotify,
FX_BOOL bScriptModify) {
void* pKey = XFA_GetMapKey_Element(GetClassID(), XFA_ATTRIBUTE_Value);
- OnChanging(XFA_ATTRIBUTE_Value, (void*)wsValue.c_str(), bNotify);
+ OnChanging(XFA_ATTRIBUTE_Value, bNotify);
CFX_WideString* pClone = new CFX_WideString(wsValue);
SetUserData(pKey, pClone, &deleteWideStringCallBack);
- OnChanged(XFA_ATTRIBUTE_Value, (void*)wsValue.c_str(), bNotify,
- bScriptModify);
+ OnChanged(XFA_ATTRIBUTE_Value, bNotify, bScriptModify);
if (IsNeedSavingXMLNode()) {
FDE_XMLNODETYPE eXMLType = m_pXMLNode->GetType();
switch (eXMLType) {
@@ -4126,11 +4117,11 @@ FX_BOOL CXFA_Node::TryObject(XFA_ATTRIBUTE eAttr, void*& pData) {
FX_BOOL CXFA_Node::SetValue(XFA_ATTRIBUTE eAttr,
XFA_ATTRIBUTETYPE eType,
void* pValue,
- FX_BOOL bNotify) {
+ bool bNotify) {
void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr);
- OnChanging(eAttr, pValue, bNotify);
+ OnChanging(eAttr, bNotify);
SetMapModuleValue(pKey, pValue);
- OnChanged(eAttr, pValue, bNotify);
+ OnChanged(eAttr, bNotify, FALSE);
Tom Sepez 2016/04/14 22:45:44 ditto
Lei Zhang 2016/04/15 01:16:40 same as above.
if (IsNeedSavingXMLNode()) {
FXSYS_assert(m_pXMLNode->GetType() == FDE_XMLNODE_Element);
const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttr);
@@ -4192,7 +4183,7 @@ FX_BOOL CXFA_Node::TryUserData(void* pKey, void*& pData, FX_BOOL bProtoAlso) {
}
FX_BOOL CXFA_Node::SetScriptContent(const CFX_WideString& wsContent,
const CFX_WideString& wsXMLValue,
- FX_BOOL bNotify,
+ bool bNotify,
FX_BOOL bScriptModify,
FX_BOOL bSyncData) {
CXFA_Node* pNode = NULL;
@@ -4368,7 +4359,7 @@ FX_BOOL CXFA_Node::SetScriptContent(const CFX_WideString& wsContent,
}
FX_BOOL CXFA_Node::SetContent(const CFX_WideString& wsContent,
const CFX_WideString& wsXMLValue,
- FX_BOOL bNotify,
+ bool bNotify,
FX_BOOL bScriptModify,
FX_BOOL bSyncData) {
return SetScriptContent(wsContent, wsXMLValue, bNotify, bScriptModify,
@@ -4620,9 +4611,9 @@ int32_t CXFA_Node::InsertChild(int32_t index, CXFA_Node* pNode) {
ASSERT(m_pLastChild->m_pNext == NULL);
pNode->SetFlag(XFA_NODEFLAG_HasRemoved, FALSE);
CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify();
- if (pNotify) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ChildAdded, pNode);
- }
+ if (pNotify)
+ pNotify->OnChildAdded(this);
+
if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) {
FXSYS_assert(pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent) == NULL);
m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, index);
@@ -4666,9 +4657,9 @@ FX_BOOL CXFA_Node::InsertChild(CXFA_Node* pNode, CXFA_Node* pBeforeNode) {
ASSERT(m_pLastChild->m_pNext == NULL);
pNode->SetFlag(XFA_NODEFLAG_HasRemoved, FALSE);
CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify();
- if (pNotify) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ChildAdded, pNode);
- }
+ if (pNotify)
+ pNotify->OnChildAdded(this);
+
if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) {
FXSYS_assert(pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent) == NULL);
m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, nIndex);
@@ -4688,7 +4679,7 @@ CXFA_Node* CXFA_Node::Deprecated_GetPrevSibling() {
}
return NULL;
}
-FX_BOOL CXFA_Node::RemoveChild(CXFA_Node* pNode, FX_BOOL bNotify) {
+FX_BOOL CXFA_Node::RemoveChild(CXFA_Node* pNode, bool bNotify) {
if (pNode == NULL || pNode->m_pParent != this) {
FXSYS_assert(FALSE);
return FALSE;
@@ -4710,7 +4701,7 @@ FX_BOOL CXFA_Node::RemoveChild(CXFA_Node* pNode, FX_BOOL bNotify) {
pNode->m_pParent = NULL;
}
ASSERT(m_pLastChild == NULL || m_pLastChild->m_pNext == NULL);
- OnRemoved(this, pNode, bNotify);
+ OnRemoved(bNotify);
pNode->SetFlag(XFA_NODEFLAG_HasRemoved);
m_pDocument->AddPurgeNode(pNode);
if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) {
@@ -4851,14 +4842,14 @@ FX_BOOL CXFA_Node::HasFlag(uint32_t dwFlag) const {
}
return FALSE;
}
-void CXFA_Node::SetFlag(uint32_t dwFlag, FX_BOOL bOn, FX_BOOL bNotify) {
+void CXFA_Node::SetFlag(uint32_t dwFlag, FX_BOOL bOn, bool bNotify) {
if (bOn) {
switch (dwFlag) {
case XFA_NODEFLAG_Initialized:
if (bNotify && !HasFlag(XFA_NODEFLAG_Initialized)) {
CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify();
if (pNotify) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_Ready);
+ pNotify->OnNodeReady(this);
}
}
break;
@@ -4873,36 +4864,33 @@ void CXFA_Node::SetFlag(uint32_t dwFlag, FX_BOOL bOn, FX_BOOL bNotify) {
FX_BOOL CXFA_Node::IsAttributeInXML() {
return GetEnum(XFA_ATTRIBUTE_Contains) == XFA_ATTRIBUTEENUM_MetaData;
}
-void CXFA_Node::OnRemoved(CXFA_Node* pParent,
- CXFA_Node* pRemoved,
- FX_BOOL bNotify) {
- if (bNotify && pParent) {
+
+void CXFA_Node::OnRemoved(bool bNotify) {
+ if (bNotify) {
Tom Sepez 2016/04/14 22:45:44 nit: maybe early return?
Lei Zhang 2016/04/15 01:16:41 Done.
CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify();
if (pNotify) {
- pNotify->OnNodeEvent(pParent, XFA_NODEEVENT_ChildRemoved, pRemoved);
+ pNotify->OnChildRemoved();
}
}
}
-void CXFA_Node::OnChanging(XFA_ATTRIBUTE eAttr,
- void* pNewValue,
- FX_BOOL bNotify) {
+
+void CXFA_Node::OnChanging(XFA_ATTRIBUTE eAttr, bool bNotify) {
if (bNotify && HasFlag(XFA_NODEFLAG_Initialized)) {
CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify();
if (pNotify) {
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanging,
- (void*)(uintptr_t)eAttr, pNewValue);
+ pNotify->OnValueChanging(this, eAttr);
}
}
}
+
void CXFA_Node::OnChanged(XFA_ATTRIBUTE eAttr,
- void* pNewValue,
- FX_BOOL bNotify,
+ bool bNotify,
FX_BOOL bScriptModify) {
if (bNotify && HasFlag(XFA_NODEFLAG_Initialized)) {
- Script_Attribute_SendAttributeChangeMessage((void*)(uintptr_t)eAttr,
- pNewValue, bScriptModify);
+ Script_Attribute_SendAttributeChangeMessage(eAttr, bScriptModify);
}
}
+
int32_t CXFA_Node::execSingleEventByName(const CFX_WideStringC& wsEventName,
XFA_ELEMENT eElementType) {
int32_t iRet = XFA_EVENTERROR_NotExist;
« no previous file with comments | « xfa/fxfa/parser/xfa_object.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698