Remove CXFA_WidgetAcc from CXFA_FFDocView methods

This CL updates CXFA_FFDocView methods and members to use CXFA_Node
objects instead of CXFA_WidgetAcc objects.

Change-Id: Ic79af39ef49152a6d50ed5acfc153063db39353d
Reviewed-on: https://pdfium-review.googlesource.com/23590
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_widget.cpp b/fpdfsdk/cpdfsdk_widget.cpp
index ec63bac..393d119 100644
--- a/fpdfsdk/cpdfsdk_widget.cpp
+++ b/fpdfsdk/cpdfsdk_widget.cpp
@@ -338,7 +338,7 @@
 
   if (bSynchronizeElse) {
     CPDFXFA_Context* context = m_pPageView->GetFormFillEnv()->GetXFAContext();
-    context->GetXFADocView()->ProcessValueChanged(node->GetWidgetAcc());
+    context->GetXFADocView()->ProcessValueChanged(node);
   }
 }
 
diff --git a/xfa/fxfa/cxfa_ffcheckbutton.cpp b/xfa/fxfa/cxfa_ffcheckbutton.cpp
index 4f9f402..a52bcb7 100644
--- a/xfa/fxfa/cxfa_ffcheckbutton.cpp
+++ b/xfa/fxfa/cxfa_ffcheckbutton.cpp
@@ -314,8 +314,8 @@
       if (ProcessCommittedData()) {
         eParam.m_pTarget = exclNode;
         if (exclNode) {
-          m_pDocView->AddValidateWidget(exclNode->GetWidgetAcc());
-          m_pDocView->AddCalculateWidgetAcc(exclNode->GetWidgetAcc());
+          m_pDocView->AddValidateNode(exclNode);
+          m_pDocView->AddCalculateNode(exclNode);
           exclNode->ProcessEvent(GetDocView(), XFA_AttributeEnum::Change,
                                  &eParam);
         }
diff --git a/xfa/fxfa/cxfa_ffcombobox.cpp b/xfa/fxfa/cxfa_ffcombobox.cpp
index 3f3cfe3..fcb8eb1 100644
--- a/xfa/fxfa/cxfa_ffcombobox.cpp
+++ b/xfa/fxfa/cxfa_ffcombobox.cpp
@@ -307,7 +307,7 @@
   eParam.m_wsPrevText = m_pNode->GetWidgetAcc()->GetValue(XFA_VALUEPICTURE_Raw);
   FWLEventSelChange(&eParam);
   if (m_pNode->GetWidgetAcc()->IsChoiceListCommitOnSelect() && bLButtonUp)
-    m_pDocView->SetFocusWidgetAcc(nullptr);
+    m_pDocView->SetFocusNode(nullptr);
 }
 
 void CXFA_FFComboBox::OnPreOpen(CFWL_Widget* pWidget) {
diff --git a/xfa/fxfa/cxfa_ffdocview.cpp b/xfa/fxfa/cxfa_ffdocview.cpp
index 50fa503..376f2d4 100644
--- a/xfa/fxfa/cxfa_ffdocview.cpp
+++ b/xfa/fxfa/cxfa_ffdocview.cpp
@@ -134,9 +134,9 @@
   if (RunLayout())
     ExecEventActivityByDeepFirst(pRootItem, XFA_EVENT_Ready, false, true);
 
-  m_CalculateAccs.clear();
-  if (m_pFocusAcc && !m_pFocusWidget)
-    SetFocusWidgetAcc(m_pFocusAcc.Get());
+  m_CalculateNodes.clear();
+  if (m_pFocusNode && !m_pFocusWidget)
+    SetFocusNode(m_pFocusNode.Get());
 
   m_iStatus = XFA_DOCVIEW_LAYOUTSTATUS_End;
 }
@@ -186,7 +186,7 @@
     RunEventLayoutReady();
 
   m_bLayoutEvent = false;
-  m_CalculateAccs.clear();
+  m_CalculateNodes.clear();
   RunInvalidate();
   UnlockUpdate();
 }
@@ -216,7 +216,7 @@
   if (!validate)
     return true;
 
-  AddValidateWidget(pNode->GetWidgetAcc());
+  AddValidateNode(pNode);
   validate->SetFlag(XFA_NodeFlag_NeedsInitApp, false);
   return true;
 }
@@ -296,23 +296,23 @@
   }
   if (pNewFocus) {
     CXFA_Node* node = pNewFocus->GetNode();
-    m_pFocusAcc = node->IsWidgetReady() ? node->GetWidgetAcc() : nullptr;
+    m_pFocusNode = node->IsWidgetReady() ? node : nullptr;
   } else {
-    m_pFocusAcc = nullptr;
+    m_pFocusNode = nullptr;
   }
   m_pFocusWidget = pNewFocus;
   m_pOldFocusWidget = m_pFocusWidget;
   return true;
 }
 
-void CXFA_FFDocView::SetFocusWidgetAcc(CXFA_WidgetAcc* pWidgetAcc) {
+void CXFA_FFDocView::SetFocusNode(CXFA_Node* node) {
   CXFA_FFWidget* pNewFocus = nullptr;
-  if (pWidgetAcc)
-    pNewFocus = GetWidgetForNode(pWidgetAcc->GetNode());
+  if (node)
+    pNewFocus = GetWidgetForNode(node);
   if (!SetFocus(pNewFocus))
     return;
 
-  m_pFocusAcc = pWidgetAcc;
+  m_pFocusNode = node;
   if (m_iStatus != XFA_DOCVIEW_LAYOUTSTATUS_End)
     return;
 
@@ -321,10 +321,10 @@
 }
 
 void CXFA_FFDocView::DeleteLayoutItem(CXFA_FFWidget* pWidget) {
-  if (m_pFocusAcc && m_pFocusAcc->GetNode() != pWidget->GetNode())
+  if (m_pFocusNode != pWidget->GetNode())
     return;
 
-  m_pFocusAcc = nullptr;
+  m_pFocusNode = nullptr;
   m_pFocusWidget = nullptr;
   m_pOldFocusWidget = nullptr;
 }
@@ -514,11 +514,11 @@
   ExecEventActivityByDeepFirst(pRootItem, XFA_EVENT_DocClose, false, true);
 }
 
-void CXFA_FFDocView::AddCalculateWidgetAcc(CXFA_WidgetAcc* pWidgetAcc) {
-  CXFA_WidgetAcc* pCurrentAcc =
-      !m_CalculateAccs.empty() ? m_CalculateAccs.back() : nullptr;
-  if (pCurrentAcc != pWidgetAcc)
-    m_CalculateAccs.push_back(pWidgetAcc);
+void CXFA_FFDocView::AddCalculateNode(CXFA_Node* node) {
+  CXFA_Node* pCurrentNode =
+      !m_CalculateNodes.empty() ? m_CalculateNodes.back() : nullptr;
+  if (pCurrentNode != node)
+    m_CalculateNodes.push_back(node);
 }
 
 void CXFA_FFDocView::AddCalculateNodeNotify(CXFA_Node* pNodeChange) {
@@ -528,13 +528,13 @@
 
   for (auto* pResult : pGlobalData->m_Globals) {
     if (!pResult->HasRemovedChildren() && pResult->IsWidgetReady())
-      AddCalculateWidgetAcc(pResult->GetWidgetAcc());
+      AddCalculateNode(pResult);
   }
 }
 
 size_t CXFA_FFDocView::RunCalculateRecursive(size_t index) {
-  while (index < m_CalculateAccs.size()) {
-    CXFA_Node* node = m_CalculateAccs[index]->GetNode();
+  while (index < m_CalculateNodes.size()) {
+    CXFA_Node* node = m_CalculateNodes[index];
 
     AddCalculateNodeNotify(node);
     size_t recurse = node->JSObject()->GetCalcRecursionCount() + 1;
@@ -543,7 +543,7 @@
       break;
     if (node->ProcessCalculate(this) == XFA_EVENTERROR_Success &&
         node->IsWidgetReady()) {
-      AddValidateWidget(node->GetWidgetAcc());
+      AddValidateNode(node);
     }
 
     index = RunCalculateRecursive(++index);
@@ -554,28 +554,28 @@
 int32_t CXFA_FFDocView::RunCalculateWidgets() {
   if (!m_pDoc->GetDocEnvironment()->IsCalculationsEnabled(m_pDoc.Get()))
     return XFA_EVENTERROR_Disabled;
-  if (!m_CalculateAccs.empty())
+  if (!m_CalculateNodes.empty())
     RunCalculateRecursive(0);
 
-  for (CXFA_WidgetAcc* pCurAcc : m_CalculateAccs)
-    pCurAcc->GetNode()->JSObject()->SetCalcRecursionCount(0);
+  for (CXFA_Node* node : m_CalculateNodes)
+    node->JSObject()->SetCalcRecursionCount(0);
 
-  m_CalculateAccs.clear();
+  m_CalculateNodes.clear();
   return XFA_EVENTERROR_Success;
 }
 
-void CXFA_FFDocView::AddValidateWidget(CXFA_WidgetAcc* pWidget) {
-  if (!pdfium::ContainsValue(m_ValidateAccs, pWidget))
-    m_ValidateAccs.push_back(pWidget);
+void CXFA_FFDocView::AddValidateNode(CXFA_Node* node) {
+  if (!pdfium::ContainsValue(m_ValidateNodes, node))
+    m_ValidateNodes.push_back(node);
 }
 
 void CXFA_FFDocView::InitCalculate(CXFA_Node* pNode) {
   ExecEventActivityByDeepFirst(pNode, XFA_EVENT_InitCalculate, false, true);
 }
 
-void CXFA_FFDocView::ProcessValueChanged(CXFA_WidgetAcc* widgetAcc) {
-  AddValidateWidget(widgetAcc);
-  AddCalculateWidgetAcc(widgetAcc);
+void CXFA_FFDocView::ProcessValueChanged(CXFA_Node* node) {
+  AddValidateNode(node);
+  AddCalculateNode(node);
   RunCalculateWidgets();
   RunValidate();
 }
@@ -585,7 +585,7 @@
     return false;
 
   ExecEventActivityByDeepFirst(pNode, XFA_EVENT_Validate, false, true);
-  m_ValidateAccs.clear();
+  m_ValidateNodes.clear();
   return true;
 }
 
@@ -593,12 +593,11 @@
   if (!m_pDoc->GetDocEnvironment()->IsValidationsEnabled(m_pDoc.Get()))
     return false;
 
-  for (CXFA_WidgetAcc* pAcc : m_ValidateAccs) {
-    CXFA_Node* node = pAcc->GetNode();
+  for (CXFA_Node* node : m_ValidateNodes) {
     if (!node->HasRemovedChildren())
       node->ProcessValidate(this, 0);
   }
-  m_ValidateAccs.clear();
+  m_ValidateNodes.clear();
   return true;
 }
 
@@ -622,7 +621,6 @@
     if (!pWidgetNode->IsWidgetReady())
       continue;
 
-    CXFA_WidgetAcc* pAcc = pWidgetNode->GetWidgetAcc();
     CFXJSE_Engine* pScriptContext =
         pWidgetNode->GetDocument()->GetScriptContext();
     WideString wsRef = item->GetRef();
@@ -632,7 +630,7 @@
     XFA_RESOLVENODE_RS rs;
     pScriptContext->ResolveObjects(pWidgetNode, wsRef.AsStringView(), &rs,
                                    dwStyle, nullptr);
-    pAcc->DeleteItem(-1, false, false);
+    pWidgetNode->GetWidgetAcc()->DeleteItem(-1, false, false);
     if (rs.dwFlags != XFA_ResolveNode_RSType_Nodes || rs.objects.empty())
       continue;
 
@@ -669,7 +667,7 @@
       } else {
         wsLabel = wsValue;
       }
-      pAcc->InsertItem(wsLabel, wsValue, false);
+      pWidgetNode->GetWidgetAcc()->InsertItem(wsLabel, wsValue, false);
     }
   }
   m_BindItems.clear();
diff --git a/xfa/fxfa/cxfa_ffdocview.h b/xfa/fxfa/cxfa_ffdocview.h
index d21d64c..b3cc5b8 100644
--- a/xfa/fxfa/cxfa_ffdocview.h
+++ b/xfa/fxfa/cxfa_ffdocview.h
@@ -19,8 +19,8 @@
 class CXFA_FFWidgetHandler;
 class CXFA_FFDoc;
 class CXFA_FFWidget;
+class CXFA_Node;
 class CXFA_Subform;
-class CXFA_WidgetAcc;
 class CXFA_ReadyNodeIterator;
 
 extern const XFA_AttributeEnum gs_EventActivity[];
@@ -72,19 +72,19 @@
   void RunInvalidate();
   void RunDocClose();
 
-  void ProcessValueChanged(CXFA_WidgetAcc* widgetAcc);
+  void ProcessValueChanged(CXFA_Node* node);
 
   void SetChangeMark();
 
-  void AddValidateWidget(CXFA_WidgetAcc* pWidget);
+  void AddValidateNode(CXFA_Node* node);
   void AddCalculateNodeNotify(CXFA_Node* pNodeChange);
-  void AddCalculateWidgetAcc(CXFA_WidgetAcc* pWidgetAcc);
+  void AddCalculateNode(CXFA_Node* node);
 
   bool RunLayout();
   void AddNewFormNode(CXFA_Node* pNode);
   void AddIndexChangedSubform(CXFA_Node* pNode);
-  CXFA_WidgetAcc* GetFocusWidgetAcc() const { return m_pFocusAcc.Get(); }
-  void SetFocusWidgetAcc(CXFA_WidgetAcc* pWidgetAcc);
+  CXFA_Node* GetFocusNode() const { return m_pFocusNode.Get(); }
+  void SetFocusNode(CXFA_Node* pNode);
   void DeleteLayoutItem(CXFA_FFWidget* pWidget);
   int32_t ExecEventActivityByDeepFirst(CXFA_Node* pFormNode,
                                        XFA_EVENTTYPE eEventType,
@@ -116,12 +116,12 @@
   UnownedPtr<CXFA_FFDoc> const m_pDoc;
   std::unique_ptr<CXFA_FFWidgetHandler> m_pWidgetHandler;
   CXFA_LayoutProcessor* m_pXFADocLayout = nullptr;  // Not owned.
-  UnownedPtr<CXFA_WidgetAcc> m_pFocusAcc;
+  UnownedPtr<CXFA_Node> m_pFocusNode;
   UnownedPtr<CXFA_FFWidget> m_pFocusWidget;
   UnownedPtr<CXFA_FFWidget> m_pOldFocusWidget;
   std::map<CXFA_FFPageView*, std::unique_ptr<CFX_RectF>> m_mapPageInvalidate;
-  std::vector<CXFA_WidgetAcc*> m_ValidateAccs;
-  std::vector<CXFA_WidgetAcc*> m_CalculateAccs;
+  std::vector<CXFA_Node*> m_ValidateNodes;
+  std::vector<CXFA_Node*> m_CalculateNodes;
   std::vector<CXFA_BindItems*> m_BindItems;
   std::vector<CXFA_Node*> m_NewAddedNodes;
   std::vector<CXFA_Node*> m_IndexChangedSubforms;
diff --git a/xfa/fxfa/cxfa_fffield.cpp b/xfa/fxfa/cxfa_fffield.cpp
index 971936a..64e8e00 100644
--- a/xfa/fxfa/cxfa_fffield.cpp
+++ b/xfa/fxfa/cxfa_fffield.cpp
@@ -630,7 +630,7 @@
     return false;
 
   m_pDocView->SetChangeMark();
-  m_pDocView->AddValidateWidget(m_pNode->GetWidgetAcc());
+  m_pDocView->AddValidateNode(m_pNode.Get());
   return true;
 }
 
diff --git a/xfa/fxfa/cxfa_ffnotify.cpp b/xfa/fxfa/cxfa_ffnotify.cpp
index 072359b..91d1a65 100644
--- a/xfa/fxfa/cxfa_ffnotify.cpp
+++ b/xfa/fxfa/cxfa_ffnotify.cpp
@@ -240,8 +240,8 @@
   if (!pNode->GetWidgetAcc())
     return;
 
-  pDocView->AddCalculateWidgetAcc(pNode->GetWidgetAcc());
-  pDocView->AddValidateWidget(pNode->GetWidgetAcc());
+  pDocView->AddCalculateNode(pNode);
+  pDocView->AddValidateNode(pNode);
 }
 
 CXFA_FFDoc* CXFA_FFNotify::GetHDOC() {
@@ -315,20 +315,14 @@
 
 CXFA_Node* CXFA_FFNotify::GetFocusWidgetNode() {
   CXFA_FFDocView* pDocView = m_pDoc->GetDocView();
-  if (!pDocView)
-    return nullptr;
-
-  return pDocView->GetFocusWidgetAcc()
-             ? pDocView->GetFocusWidgetAcc()->GetNode()
-             : nullptr;
+  return pDocView ? pDocView->GetFocusNode() : nullptr;
 }
 
 void CXFA_FFNotify::SetFocusWidgetNode(CXFA_Node* pNode) {
   CXFA_FFDocView* pDocView = m_pDoc->GetDocView();
   if (!pDocView)
     return;
-
-  pDocView->SetFocusWidgetAcc(pNode ? pNode->GetWidgetAcc() : nullptr);
+  pDocView->SetFocusNode(pNode);
 }
 
 void CXFA_FFNotify::OnNodeReady(CXFA_Node* pNode) {
@@ -423,8 +417,8 @@
       if (bIsContainerNode) {
         pWidgetNode->GetWidgetAcc()->UpdateUIDisplay(m_pDoc->GetDocView(),
                                                      nullptr);
-        pDocView->AddCalculateWidgetAcc(pWidgetNode->GetWidgetAcc());
-        pDocView->AddValidateWidget(pWidgetNode->GetWidgetAcc());
+        pDocView->AddCalculateNode(pWidgetNode);
+        pDocView->AddValidateNode(pWidgetNode);
       } else if (pWidgetNode->GetParent()->GetElementType() ==
                  XFA_Element::ExclGroup) {
         pWidgetNode->GetWidgetAcc()->UpdateUIDisplay(m_pDoc->GetDocView(),
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index fb2f012..ba882a2 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -2206,7 +2206,7 @@
             (GetRawValue() != pEventParam->m_wsResult)) {
           GetWidgetAcc()->SetValue(XFA_VALUEPICTURE_Raw,
                                    pEventParam->m_wsResult);
-          docView->AddValidateWidget(GetWidgetAcc());
+          docView->AddValidateNode(this);
         }
       }
       for (CXFA_Node* pRefNode : refNodes) {