1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #include "xfa/fxfa/xfa_ffdochandler.h" 8 9 #include "xfa/fxfa/parser/cxfa_scriptcontext.h" 10 #include "xfa/fxfa/parser/xfa_resolvenode_rs.h" 11 #include "xfa/fxfa/xfa_checksum.h" 12 #include "xfa/fxfa/xfa_ffdoc.h" 13 14 CXFA_FFDocHandler::CXFA_FFDocHandler() {} 15 16 CXFA_FFDocHandler::~CXFA_FFDocHandler() {} 17 18 CFXJSE_Value* CXFA_FFDocHandler::GetXFAScriptObject(CXFA_FFDoc* hDoc) { 19 CXFA_Document* pXFADoc = hDoc->GetXFADoc(); 20 if (!pXFADoc) 21 return nullptr; 22 23 CXFA_ScriptContext* pScriptContext = pXFADoc->GetScriptContext(); 24 if (!pScriptContext) 25 return nullptr; 26 return pScriptContext->GetJSValueFromMap(pXFADoc->GetRoot()); 27 } 28 29 XFA_ATTRIBUTEENUM CXFA_FFDocHandler::GetRestoreState(CXFA_FFDoc* hDoc) { 30 CXFA_Document* pXFADoc = hDoc->GetXFADoc(); 31 if (!pXFADoc) 32 return XFA_ATTRIBUTEENUM_Unknown; 33 34 CXFA_Node* pForm = ToNode(pXFADoc->GetXFAObject(XFA_HASHCODE_Form)); 35 if (!pForm) 36 return XFA_ATTRIBUTEENUM_Unknown; 37 38 CXFA_Node* pSubForm = pForm->GetFirstChildByClass(XFA_Element::Subform); 39 if (!pSubForm) 40 return XFA_ATTRIBUTEENUM_Unknown; 41 return pSubForm->GetEnum(XFA_ATTRIBUTE_RestoreState); 42 } 43 44 bool CXFA_FFDocHandler::RunDocScript(CXFA_FFDoc* hDoc, 45 XFA_SCRIPTTYPE eScriptType, 46 const CFX_WideStringC& wsScript, 47 CFXJSE_Value* pRetValue, 48 CFXJSE_Value* pThisValue) { 49 CXFA_Document* pXFADoc = hDoc->GetXFADoc(); 50 if (!pXFADoc) 51 return false; 52 53 CXFA_ScriptContext* pScriptContext = pXFADoc->GetScriptContext(); 54 if (!pScriptContext) 55 return false; 56 57 return pScriptContext->RunScript( 58 (XFA_SCRIPTLANGTYPE)eScriptType, wsScript, pRetValue, 59 pThisValue ? CXFA_ScriptContext::ToObject(pThisValue, nullptr) : nullptr); 60 } 61