Clean up CXFA_Node::AddBindItem() and RemoveBindItem(). - Simplify AddBindItem(). - Make AddBindItem() return void, since no one checks the result. - Make RemoveBindItem() return bool, since that is what the callers care about. Change-Id: I91ab6c9d183dde19a1adf973db790625667f339e Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/74051 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp index c675844..8b9de5c 100644 --- a/xfa/fxfa/parser/cxfa_node.cpp +++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -1289,38 +1289,30 @@ return std::vector<CXFA_Node*>(binding_nodes_.begin(), binding_nodes_.end()); } -int32_t CXFA_Node::AddBindItem(CXFA_Node* pFormNode) { +void CXFA_Node::AddBindItem(CXFA_Node* pFormNode) { ASSERT(pFormNode); if (BindsFormItems()) { - bool found = false; - for (const auto& v : binding_nodes_) { - if (v == pFormNode) { - found = true; - break; - } - } - if (!found) + if (!pdfium::Contains(binding_nodes_, pFormNode)) binding_nodes_.emplace_back(pFormNode); - return pdfium::CollectionSize<int32_t>(binding_nodes_); + return; } CXFA_Node* pOldFormItem = GetBindingNode(); if (!pOldFormItem) { SetBindingNode(pFormNode); - return 1; + return; } if (pOldFormItem == pFormNode) - return 1; + return; binding_nodes_.clear(); binding_nodes_.push_back(pOldFormItem); binding_nodes_.push_back(pFormNode); m_uNodeFlags |= XFA_NodeFlag_BindFormItems; - return 2; } -int32_t CXFA_Node::RemoveBindItem(CXFA_Node* pFormNode) { +bool CXFA_Node::RemoveBindItem(CXFA_Node* pFormNode) { if (BindsFormItems()) { auto it = std::find(binding_nodes_.begin(), binding_nodes_.end(), pFormNode); @@ -1329,17 +1321,17 @@ if (binding_nodes_.size() == 1) { m_uNodeFlags &= ~XFA_NodeFlag_BindFormItems; - return 1; + return true; } - return pdfium::CollectionSize<int32_t>(binding_nodes_); + return !binding_nodes_.empty(); } CXFA_Node* pOldFormItem = GetBindingNode(); if (pOldFormItem != pFormNode) - return pOldFormItem ? 1 : 0; + return !!pOldFormItem; SetBindingNode(nullptr); - return 0; + return false; } bool CXFA_Node::HasBindItem() const { @@ -1983,7 +1975,7 @@ if (!pDataNode) continue; - if (pDataNode->RemoveBindItem(pFormNode) == 0) { + if (!pDataNode->RemoveBindItem(pFormNode)) { if (CXFA_Node* pDataParent = pDataNode->GetParent()) { pDataParent->RemoveChildAndNotify(pDataNode, true); }
diff --git a/xfa/fxfa/parser/cxfa_node.h b/xfa/fxfa/parser/cxfa_node.h index fdea32a..f32cfae 100644 --- a/xfa/fxfa/parser/cxfa_node.h +++ b/xfa/fxfa/parser/cxfa_node.h
@@ -192,8 +192,9 @@ CXFA_Node* GetBindData(); bool HasBindItems() const { return !binding_nodes_.empty(); } std::vector<CXFA_Node*> GetBindItemsCopy() const; - int32_t AddBindItem(CXFA_Node* pFormNode); - int32_t RemoveBindItem(CXFA_Node* pFormNode); + void AddBindItem(CXFA_Node* pFormNode); + // Returns true if there are still more items. + bool RemoveBindItem(CXFA_Node* pFormNode); bool HasBindItem() const; CXFA_Node* GetContainerNode(); LocaleIface* GetLocale();