summaryrefslogtreecommitdiff
path: root/xfa/fxfa/cxfa_ffdochandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fxfa/cxfa_ffdochandler.cpp')
-rw-r--r--xfa/fxfa/cxfa_ffdochandler.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/xfa/fxfa/cxfa_ffdochandler.cpp b/xfa/fxfa/cxfa_ffdochandler.cpp
new file mode 100644
index 0000000000..a71bb208fa
--- /dev/null
+++ b/xfa/fxfa/cxfa_ffdochandler.cpp
@@ -0,0 +1,60 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "xfa/fxfa/cxfa_ffdochandler.h"
+
+#include "xfa/fxfa/cxfa_checksumcontext.h"
+#include "xfa/fxfa/cxfa_ffdoc.h"
+#include "xfa/fxfa/parser/cxfa_scriptcontext.h"
+#include "xfa/fxfa/parser/xfa_resolvenode_rs.h"
+
+CXFA_FFDocHandler::CXFA_FFDocHandler() {}
+
+CXFA_FFDocHandler::~CXFA_FFDocHandler() {}
+
+CFXJSE_Value* CXFA_FFDocHandler::GetXFAScriptObject(CXFA_FFDoc* hDoc) {
+ CXFA_Document* pXFADoc = hDoc->GetXFADoc();
+ if (!pXFADoc)
+ return nullptr;
+
+ CXFA_ScriptContext* pScriptContext = pXFADoc->GetScriptContext();
+ if (!pScriptContext)
+ return nullptr;
+ return pScriptContext->GetJSValueFromMap(pXFADoc->GetRoot());
+}
+
+XFA_ATTRIBUTEENUM CXFA_FFDocHandler::GetRestoreState(CXFA_FFDoc* hDoc) {
+ CXFA_Document* pXFADoc = hDoc->GetXFADoc();
+ if (!pXFADoc)
+ return XFA_ATTRIBUTEENUM_Unknown;
+
+ CXFA_Node* pForm = ToNode(pXFADoc->GetXFAObject(XFA_HASHCODE_Form));
+ if (!pForm)
+ return XFA_ATTRIBUTEENUM_Unknown;
+
+ CXFA_Node* pSubForm = pForm->GetFirstChildByClass(XFA_Element::Subform);
+ if (!pSubForm)
+ return XFA_ATTRIBUTEENUM_Unknown;
+ return pSubForm->GetEnum(XFA_ATTRIBUTE_RestoreState);
+}
+
+bool CXFA_FFDocHandler::RunDocScript(CXFA_FFDoc* hDoc,
+ XFA_SCRIPTTYPE eScriptType,
+ const CFX_WideStringC& wsScript,
+ CFXJSE_Value* pRetValue,
+ CFXJSE_Value* pThisValue) {
+ CXFA_Document* pXFADoc = hDoc->GetXFADoc();
+ if (!pXFADoc)
+ return false;
+
+ CXFA_ScriptContext* pScriptContext = pXFADoc->GetScriptContext();
+ if (!pScriptContext)
+ return false;
+
+ return pScriptContext->RunScript(
+ (XFA_SCRIPTLANGTYPE)eScriptType, wsScript, pRetValue,
+ pThisValue ? CXFA_ScriptContext::ToObject(pThisValue, nullptr) : nullptr);
+}