| Index: xfa/src/fxfa/src/parser/xfa_script_imp.cpp
|
| diff --git a/xfa/src/fxfa/src/parser/xfa_script_imp.cpp b/xfa/src/fxfa/src/parser/xfa_script_imp.cpp
|
| index 9f4f0232ef2752d3b2eee75baf8d2a9b83af4ee5..0db550b7fe22084074379ac53c8c90f1746cfbc9 100644
|
| --- a/xfa/src/fxfa/src/parser/xfa_script_imp.cpp
|
| +++ b/xfa/src/fxfa/src/parser/xfa_script_imp.cpp
|
| @@ -60,18 +60,6 @@ CXFA_ScriptContext::~CXFA_ScriptContext() {
|
| delete ((CXFA_NodeList*)m_CacheListArray[i]);
|
| }
|
| m_CacheListArray.RemoveAll();
|
| - if (m_dwBuiltInInFlags & XFA_JSBUILTIN_HasCount) {
|
| - FX_POSITION ps = m_JSBuiltInObjects.GetStartPosition();
|
| - while (ps) {
|
| - CFX_ByteString bsKey;
|
| - void* pValue = NULL;
|
| - m_JSBuiltInObjects.GetNextAssoc(ps, bsKey, pValue);
|
| - if (pValue) {
|
| - FXJSE_Value_Release((FXJSE_HVALUE)pValue);
|
| - }
|
| - }
|
| - m_JSBuiltInObjects.RemoveAll();
|
| - }
|
| }
|
| void CXFA_ScriptContext::Initialize(FXJSE_HRUNTIME hRuntime) {
|
| m_hJsRuntime = hRuntime;
|
| @@ -105,28 +93,6 @@ FX_BOOL CXFA_ScriptContext::RunScript(XFA_SCRIPTLANGTYPE eScriptType,
|
| btScript =
|
| FX_UTF8Encode(wsJavaScript.GetBuffer(), wsJavaScript.GetLength());
|
| } else {
|
| - if ((m_dwBuiltInInFlags & XFA_JSBUILTIN_Initialized) == 0) {
|
| - m_dwBuiltInInFlags = XFA_JSBUILTIN_Initialized;
|
| - FX_POSITION ps = m_JSBuiltInObjects.GetStartPosition();
|
| - if (ps) {
|
| - FXJSE_HVALUE hObject = FXJSE_Context_GetGlobalObject(m_hJsContext);
|
| - while (ps) {
|
| - CFX_ByteString bsKey;
|
| - void* pValue;
|
| - m_JSBuiltInObjects.GetNextAssoc(ps, bsKey, pValue);
|
| - FXJSE_HVALUE hProp = FXJSE_Value_Create(m_hJsRuntime);
|
| - if (FXJSE_Value_GetObjectProp(hObject, bsKey, hProp)) {
|
| - m_JSBuiltInObjects.SetAt(bsKey, hProp);
|
| - FXJSE_Value_DeleteObjectProp(hObject, bsKey);
|
| - m_dwBuiltInInFlags |= XFA_JSBUILTIN_HasCount;
|
| - } else {
|
| - m_JSBuiltInObjects.RemoveKey(bsKey);
|
| - FXJSE_Value_Release(hProp);
|
| - }
|
| - }
|
| - FXJSE_Value_Release(hObject);
|
| - }
|
| - }
|
| btScript = FX_UTF8Encode(wsScript.GetPtr(), wsScript.GetLength());
|
| }
|
| CXFA_Object* pOriginalObject = m_pThisObject;
|
| @@ -244,9 +210,6 @@ void CXFA_ScriptContext::GlobalPropertyGetter(FXJSE_HOBJECT hObject,
|
| szPropName, hValue, TRUE)) {
|
| return;
|
| }
|
| - if (lpScriptContext->QueryBuiltinHValue(szPropName, hValue)) {
|
| - return;
|
| - }
|
| IXFA_Notify* pNotify = pDoc->GetNotify();
|
| if (!pNotify) {
|
| return;
|
| @@ -432,6 +395,7 @@ void CXFA_ScriptContext::DefineJsContext() {
|
| m_JsGlobalClass.dynMethodCall = CXFA_ScriptContext::NormalMethodCall;
|
| m_hJsContext = FXJSE_Context_Create(m_hJsRuntime, &m_JsGlobalClass,
|
| m_pDocument->GetRoot());
|
| + RemoveBuiltInObjs(m_hJsContext);
|
| FXJSE_Context_EnableCompatibleMode(
|
| m_hJsContext, FXJSE_COMPATIBLEMODEFLAG_CONSTRUCTOREXTRAMETHODS);
|
| }
|
| @@ -461,6 +425,7 @@ FXJSE_HCONTEXT CXFA_ScriptContext::CreateVariablesContext(
|
| CXFA_ThisProxy* lpVariableNode = new CXFA_ThisProxy(pSubform, pScriptNode);
|
| FXJSE_HCONTEXT hVariablesContext = FXJSE_Context_Create(
|
| m_hJsRuntime, &m_JsGlobalVariablesClass, (CXFA_Object*)lpVariableNode);
|
| + RemoveBuiltInObjs(hVariablesContext);
|
| FXJSE_Context_EnableCompatibleMode(
|
| hVariablesContext, FXJSE_COMPATIBLEMODEFLAG_CONSTRUCTOREXTRAMETHODS);
|
| m_mapVariableToHValue.SetAt(pScriptNode, hVariablesContext);
|
| @@ -546,17 +511,6 @@ FX_BOOL CXFA_ScriptContext::QueryVariableHValue(
|
| }
|
| return bRes;
|
| }
|
| -FX_BOOL CXFA_ScriptContext::QueryBuiltinHValue(
|
| - const CFX_ByteStringC& szPropName,
|
| - FXJSE_HVALUE hValue) {
|
| - void* pBuiltin = NULL;
|
| - if ((m_dwBuiltInInFlags & XFA_JSBUILTIN_HasCount) &&
|
| - m_JSBuiltInObjects.Lookup(szPropName, pBuiltin)) {
|
| - FXJSE_Value_Set(hValue, (FXJSE_HVALUE)pBuiltin);
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| -}
|
| void CXFA_ScriptContext::ReleaseVariablesMap() {
|
| FX_POSITION ps = m_mapVariableToHValue.GetStartPosition();
|
| while (ps) {
|
| @@ -589,16 +543,20 @@ void CXFA_ScriptContext::DefineJsClass() {
|
| m_JsNormalClass.dynMethodCall = CXFA_ScriptContext::NormalMethodCall;
|
| m_hJsClass = FXJSE_DefineClass(m_hJsContext, &m_JsNormalClass);
|
| }
|
| +void CXFA_ScriptContext::RemoveBuiltInObjs(FXJSE_HCONTEXT jsContext) const {
|
| + static const CFX_ByteStringC OBJ_NAME[2] = {"Number", "Date"};
|
| + FXJSE_HVALUE hObject = FXJSE_Context_GetGlobalObject(jsContext);
|
| + FXJSE_HVALUE hProp = FXJSE_Value_Create(m_hJsRuntime);
|
| + for (int i = 0; i < 2; ++i) {
|
| + if (FXJSE_Value_GetObjectProp(hObject, OBJ_NAME[i], hProp))
|
| + FXJSE_Value_DeleteObjectProp(hObject, OBJ_NAME[i]);
|
| + }
|
| + FXJSE_Value_Release(hProp);
|
| + FXJSE_Value_Release(hObject);
|
| +}
|
| FXJSE_HCLASS CXFA_ScriptContext::GetJseNormalClass() {
|
| return m_hJsClass;
|
| }
|
| -void CXFA_ScriptContext::AddJSBuiltinObject(
|
| - XFA_LPCJSBUILTININFO pBuitinObject) {
|
| - if (m_dwBuiltInInFlags & XFA_JSBUILTIN_Initialized) {
|
| - return;
|
| - }
|
| - m_JSBuiltInObjects.SetAt(pBuitinObject->pName, (void*)pBuitinObject);
|
| -}
|
| int32_t CXFA_ScriptContext::ResolveObjects(CXFA_Object* refNode,
|
| const CFX_WideStringC& wsExpression,
|
| XFA_RESOLVENODE_RS& resolveNodeRS,
|
| @@ -824,24 +782,3 @@ void CXFA_ScriptContext::AddNodesOfRunScript(CXFA_Node* pNode) {
|
| IXFA_ScriptContext* XFA_ScriptContext_Create(CXFA_Document* pDocument) {
|
| return new CXFA_ScriptContext(pDocument);
|
| }
|
| -static const XFA_JSBUILTININFO gs_JSBUILTINData[] = {
|
| - {0x8108b9a9, "Number"},
|
| - {0xe07e3fbe, "Date"},
|
| -};
|
| -const int32_t g_iJSBuiltinCount =
|
| - sizeof(XFA_JSBUILTININFO) / sizeof(XFA_JSBUILTININFO);
|
| -XFA_LPCJSBUILTININFO XFA_GetJSBuiltinByHash(uint32_t uHashCode) {
|
| - int32_t iStart = 0, iEnd = g_iJSBuiltinCount - 1, iMid;
|
| - do {
|
| - iMid = (iStart + iEnd) / 2;
|
| - XFA_LPCJSBUILTININFO pInfo = gs_JSBUILTINData + iMid;
|
| - if (uHashCode == pInfo->uUnicodeHash) {
|
| - return pInfo;
|
| - } else if (uHashCode < pInfo->uUnicodeHash) {
|
| - iEnd = iMid - 1;
|
| - } else {
|
| - iStart = iMid + 1;
|
| - }
|
| - } while (iStart <= iEnd);
|
| - return NULL;
|
| -}
|
|
|