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

Side by Side Diff: xfa/fxfa/parser/cxfa_scriptcontext.cpp

Issue 2612923002: Remove CFX_MapPtrToPtr from xfa/fxfa. (Closed)
Patch Set: endless loop Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « xfa/fxfa/parser/cxfa_scriptcontext.h ('k') | xfa/fxfa/parser/xfa_document_datamerger_imp.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "xfa/fxfa/parser/cxfa_scriptcontext.h" 7 #include "xfa/fxfa/parser/cxfa_scriptcontext.h"
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 : m_pDocument(pDocument), 118 : m_pDocument(pDocument),
119 m_pIsolate(nullptr), 119 m_pIsolate(nullptr),
120 m_pJsClass(nullptr), 120 m_pJsClass(nullptr),
121 m_eScriptType(XFA_SCRIPTLANGTYPE_Unkown), 121 m_eScriptType(XFA_SCRIPTLANGTYPE_Unkown),
122 m_pScriptNodeArray(nullptr), 122 m_pScriptNodeArray(nullptr),
123 m_pThisObject(nullptr), 123 m_pThisObject(nullptr),
124 m_dwBuiltInInFlags(0), 124 m_dwBuiltInInFlags(0),
125 m_eRunAtType(XFA_ATTRIBUTEENUM_Client) {} 125 m_eRunAtType(XFA_ATTRIBUTEENUM_Client) {}
126 126
127 CXFA_ScriptContext::~CXFA_ScriptContext() { 127 CXFA_ScriptContext::~CXFA_ScriptContext() {
128 FX_POSITION ps = m_mapVariableToContext.GetStartPosition(); 128 for (const auto& pair : m_mapVariableToContext) {
129 while (ps) { 129 CFXJSE_Context* pVariableContext = pair.second;
130 CXFA_Object* pScriptNode;
131 CFXJSE_Context* pVariableContext = nullptr;
132 m_mapVariableToContext.GetNextAssoc(ps, pScriptNode, pVariableContext);
133
134 delete ToThisProxy(pVariableContext->GetGlobalObject().get(), nullptr); 130 delete ToThisProxy(pVariableContext->GetGlobalObject().get(), nullptr);
135 delete pVariableContext; 131 delete pVariableContext;
136 } 132 }
137 m_mapVariableToContext.RemoveAll(); 133 m_mapVariableToContext.clear();
138
139 m_upObjectArray.RemoveAll(); 134 m_upObjectArray.RemoveAll();
140 } 135 }
141 136
142 void CXFA_ScriptContext::Initialize(v8::Isolate* pIsolate) { 137 void CXFA_ScriptContext::Initialize(v8::Isolate* pIsolate) {
143 m_pIsolate = pIsolate; 138 m_pIsolate = pIsolate;
144 DefineJsContext(); 139 DefineJsContext();
145 DefineJsClass(); 140 DefineJsClass();
146 m_ResolveProcessor = pdfium::MakeUnique<CXFA_ResolveProcessor>(); 141 m_ResolveProcessor = pdfium::MakeUnique<CXFA_ResolveProcessor>();
147 } 142 }
148 143
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 CXFA_Node* pScriptNode, 449 CXFA_Node* pScriptNode,
455 CXFA_Node* pSubform) { 450 CXFA_Node* pSubform) {
456 if (!pScriptNode || !pSubform) 451 if (!pScriptNode || !pSubform)
457 return nullptr; 452 return nullptr;
458 453
459 CFXJSE_Context* pVariablesContext = 454 CFXJSE_Context* pVariablesContext =
460 CFXJSE_Context::Create(m_pIsolate, &VariablesClassDescriptor, 455 CFXJSE_Context::Create(m_pIsolate, &VariablesClassDescriptor,
461 new CXFA_ThisProxy(pSubform, pScriptNode)); 456 new CXFA_ThisProxy(pSubform, pScriptNode));
462 RemoveBuiltInObjs(pVariablesContext); 457 RemoveBuiltInObjs(pVariablesContext);
463 pVariablesContext->EnableCompatibleMode(); 458 pVariablesContext->EnableCompatibleMode();
464 m_mapVariableToContext.SetAt(pScriptNode, pVariablesContext); 459 m_mapVariableToContext[pScriptNode] = pVariablesContext;
465 return pVariablesContext; 460 return pVariablesContext;
466 } 461 }
467 CXFA_Object* CXFA_ScriptContext::GetVariablesThis(CXFA_Object* pObject, 462 CXFA_Object* CXFA_ScriptContext::GetVariablesThis(CXFA_Object* pObject,
468 bool bScriptNode) { 463 bool bScriptNode) {
469 if (!pObject->IsVariablesThis()) 464 if (!pObject->IsVariablesThis())
470 return pObject; 465 return pObject;
471 466
472 CXFA_ThisProxy* pProxy = static_cast<CXFA_ThisProxy*>(pObject); 467 CXFA_ThisProxy* pProxy = static_cast<CXFA_ThisProxy*>(pObject);
473 return bScriptNode ? pProxy->GetScriptNode() : pProxy->GetThisNode(); 468 return bScriptNode ? pProxy->GetScriptNode() : pProxy->GetThisNode();
474 } 469 }
475 470
476 bool CXFA_ScriptContext::RunVariablesScript(CXFA_Node* pScriptNode) { 471 bool CXFA_ScriptContext::RunVariablesScript(CXFA_Node* pScriptNode) {
477 if (!pScriptNode) 472 if (!pScriptNode)
478 return false; 473 return false;
479 474
480 if (pScriptNode->GetElementType() != XFA_Element::Script) 475 if (pScriptNode->GetElementType() != XFA_Element::Script)
481 return true; 476 return true;
482 477
483 CXFA_Node* pParent = pScriptNode->GetNodeItem(XFA_NODEITEM_Parent); 478 CXFA_Node* pParent = pScriptNode->GetNodeItem(XFA_NODEITEM_Parent);
484 if (!pParent || pParent->GetElementType() != XFA_Element::Variables) 479 if (!pParent || pParent->GetElementType() != XFA_Element::Variables)
485 return false; 480 return false;
486 481
487 if (m_mapVariableToContext.GetValueAt(pScriptNode)) 482 auto it = m_mapVariableToContext.find(pScriptNode);
483 if (it != m_mapVariableToContext.end() && it->second)
488 return true; 484 return true;
489 485
490 CXFA_Node* pTextNode = pScriptNode->GetNodeItem(XFA_NODEITEM_FirstChild); 486 CXFA_Node* pTextNode = pScriptNode->GetNodeItem(XFA_NODEITEM_FirstChild);
491 if (!pTextNode) 487 if (!pTextNode)
492 return false; 488 return false;
493 489
494 CFX_WideStringC wsScript; 490 CFX_WideStringC wsScript;
495 if (!pTextNode->TryCData(XFA_ATTRIBUTE_Value, wsScript)) 491 if (!pTextNode->TryCData(XFA_ATTRIBUTE_Value, wsScript))
496 return false; 492 return false;
497 493
(...skipping 16 matching lines...) Expand all
514 CFXJSE_Value* pValue, 510 CFXJSE_Value* pValue,
515 bool bGetter) { 511 bool bGetter) {
516 if (!pScriptNode || pScriptNode->GetElementType() != XFA_Element::Script) 512 if (!pScriptNode || pScriptNode->GetElementType() != XFA_Element::Script)
517 return false; 513 return false;
518 514
519 CXFA_Node* variablesNode = pScriptNode->GetNodeItem(XFA_NODEITEM_Parent); 515 CXFA_Node* variablesNode = pScriptNode->GetNodeItem(XFA_NODEITEM_Parent);
520 if (!variablesNode || 516 if (!variablesNode ||
521 variablesNode->GetElementType() != XFA_Element::Variables) 517 variablesNode->GetElementType() != XFA_Element::Variables)
522 return false; 518 return false;
523 519
524 void* lpVariables = m_mapVariableToContext.GetValueAt(pScriptNode); 520 auto it = m_mapVariableToContext.find(pScriptNode);
525 if (!lpVariables) 521 if (it == m_mapVariableToContext.end() || !it->second)
526 return false; 522 return false;
527 523
524 void* lpVariables = it->second;
528 bool bRes = false; 525 bool bRes = false;
529 CFXJSE_Context* pVariableContext = static_cast<CFXJSE_Context*>(lpVariables); 526 CFXJSE_Context* pVariableContext = static_cast<CFXJSE_Context*>(lpVariables);
530 std::unique_ptr<CFXJSE_Value> pObject = pVariableContext->GetGlobalObject(); 527 std::unique_ptr<CFXJSE_Value> pObject = pVariableContext->GetGlobalObject();
531 std::unique_ptr<CFXJSE_Value> hVariableValue(new CFXJSE_Value(m_pIsolate)); 528 std::unique_ptr<CFXJSE_Value> hVariableValue(new CFXJSE_Value(m_pIsolate));
532 if (!bGetter) { 529 if (!bGetter) {
533 pObject->SetObjectOwnProperty(szPropName, pValue); 530 pObject->SetObjectOwnProperty(szPropName, pValue);
534 bRes = true; 531 bRes = true;
535 } else if (pObject->HasObjectOwnProperty(szPropName, false)) { 532 } else if (pObject->HasObjectOwnProperty(szPropName, false)) {
536 pObject->GetObjectProperty(szPropName, hVariableValue.get()); 533 pObject->GetObjectProperty(szPropName, hVariableValue.get());
537 if (hVariableValue->IsFunction()) 534 if (hVariableValue->IsFunction())
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 return; 762 return;
766 if (nodes.GetSize() > 0) 763 if (nodes.GetSize() > 0)
767 m_pScriptNodeArray->Copy(nodes); 764 m_pScriptNodeArray->Copy(nodes);
768 } 765 }
769 void CXFA_ScriptContext::AddNodesOfRunScript(CXFA_Node* pNode) { 766 void CXFA_ScriptContext::AddNodesOfRunScript(CXFA_Node* pNode) {
770 if (!m_pScriptNodeArray) 767 if (!m_pScriptNodeArray)
771 return; 768 return;
772 if (m_pScriptNodeArray->Find(pNode) == -1) 769 if (m_pScriptNodeArray->Find(pNode) == -1)
773 m_pScriptNodeArray->Add(pNode); 770 m_pScriptNodeArray->Add(pNode);
774 } 771 }
OLDNEW
« no previous file with comments | « xfa/fxfa/parser/cxfa_scriptcontext.h ('k') | xfa/fxfa/parser/xfa_document_datamerger_imp.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698