1d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Copyright 2017 PDFium Authors. All rights reserved. 2d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// found in the LICENSE file. 4d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 5d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 7d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxjs/xfa/cjx_hostpseudomodel.h" 8d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 9d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include <memory> 10d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include <vector> 11d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 12d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxjs/cfxjse_engine.h" 13d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxjs/cfxjse_value.h" 14d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxjs/js_resources.h" 15d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/cxfa_ffnotify.h" 16d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cscript_hostpseudomodel.h" 17d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_layoutprocessor.h" 18d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/cxfa_node.h" 19d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/parser/xfa_resolvenode_rs.h" 20d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 21d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannnamespace { 22d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 23d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannint32_t FilterName(const WideStringView& wsExpression, 24d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t nStart, 25d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString& wsFilter) { 26d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ASSERT(nStart > -1); 27d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t iLength = wsExpression.GetLength(); 28d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (nStart >= iLength) 29d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return iLength; 30d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 31d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann wchar_t* pBuf = wsFilter.GetBuffer(iLength - nStart); 32d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t nCount = 0; 33d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const wchar_t* pSrc = wsExpression.unterminated_c_str(); 34d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann wchar_t wCur; 35d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann while (nStart < iLength) { 36d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann wCur = pSrc[nStart++]; 37d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (wCur == ',') 38d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann break; 39d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 40d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pBuf[nCount++] = wCur; 41d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 42d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann wsFilter.ReleaseBuffer(nCount); 43d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann wsFilter.Trim(); 44d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return nStart; 45d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 46d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 47d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} // namespace 48d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 49d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannconst CJX_MethodSpec CJX_HostPseudoModel::MethodSpecs[] = { 50d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"beep", beep_static}, 51d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"documentCountInBatch", documentCountInBatch_static}, 52d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"documentInBatch", documentInBatch_static}, 53d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"exportData", exportData_static}, 54d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"getFocus", getFocus_static}, 55d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"gotoURL", gotoURL_static}, 56d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"importData", importData_static}, 57d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"messageBox", messageBox_static}, 58d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"openList", openList_static}, 59d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"pageDown", pageDown_static}, 60d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"pageUp", pageUp_static}, 61d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"print", print_static}, 62d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"resetData", resetData_static}, 63d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"response", response_static}, 64d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann {"setFocus", setFocus_static}}; 65d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 66d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJX_HostPseudoModel::CJX_HostPseudoModel(CScript_HostPseudoModel* model) 67d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann : CJX_Object(model) { 68d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann DefineMethods(MethodSpecs, FX_ArraySize(MethodSpecs)); 69d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 70d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 71d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJX_HostPseudoModel::~CJX_HostPseudoModel() {} 72d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 73d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CJX_HostPseudoModel::appType(CFXJSE_Value* pValue, 74d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bSetting, 75d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_Attribute eAttribute) { 76d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 77d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 78d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 79d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 80d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (bSetting) { 81d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ThrowInvalidPropertyException(); 82d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 83d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 84d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->SetString("Exchange"); 85d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 86d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 87d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CJX_HostPseudoModel::calculationsEnabled(CFXJSE_Value* pValue, 88d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bSetting, 89d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_Attribute eAttribute) { 90d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 91d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 92d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 93d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 94d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 95d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (bSetting) { 96d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetDocEnvironment()->SetCalculationsEnabled(hDoc, 97d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->ToBoolean()); 98d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 99d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 100d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->SetBoolean(pNotify->GetDocEnvironment()->IsCalculationsEnabled(hDoc)); 101d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 102d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 103d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CJX_HostPseudoModel::currentPage(CFXJSE_Value* pValue, 104d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bSetting, 105d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_Attribute eAttribute) { 106d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 107d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 108d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 109d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 110d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 111d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (bSetting) { 112d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetDocEnvironment()->SetCurrentPage(hDoc, pValue->ToInteger()); 113d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 114d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 115d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->SetInteger(pNotify->GetDocEnvironment()->GetCurrentPage(hDoc)); 116d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 117d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 118d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CJX_HostPseudoModel::language(CFXJSE_Value* pValue, 119d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bSetting, 120d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_Attribute eAttribute) { 121d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 122d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 123d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 124d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 125d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (bSetting) { 126d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ThrowException(L"Unable to set language value."); 127d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 128d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 129d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->SetString( 130d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetAppProvider()->GetLanguage().UTF8Encode().AsStringView()); 131d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 132d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 133d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CJX_HostPseudoModel::numPages(CFXJSE_Value* pValue, 134d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bSetting, 135d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_Attribute eAttribute) { 136d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 137d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 138d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 139d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 140d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 141d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (bSetting) { 142d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ThrowException(L"Unable to set numPages value."); 143d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 144d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 145d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->SetInteger(pNotify->GetDocEnvironment()->CountPages(hDoc)); 146d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 147d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 148d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CJX_HostPseudoModel::platform(CFXJSE_Value* pValue, 149d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bSetting, 150d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_Attribute eAttribute) { 151d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 152d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 153d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 154d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 155d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (bSetting) { 156d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ThrowException(L"Unable to set platform value."); 157d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 158d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 159d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->SetString( 160d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetAppProvider()->GetPlatform().UTF8Encode().AsStringView()); 161d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 162d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 163d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CJX_HostPseudoModel::title(CFXJSE_Value* pValue, 164d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bSetting, 165d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_Attribute eAttribute) { 166d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!GetDocument()->GetScriptContext()->IsRunAtClient()) 167d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 168d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 169d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 170d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 171d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 172d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 173d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 174d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (bSetting) { 175d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetDocEnvironment()->SetTitle(hDoc, pValue->ToWideString()); 176d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 177d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 178d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 179d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString wsTitle; 180d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetDocEnvironment()->GetTitle(hDoc, wsTitle); 181d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->SetString(wsTitle.UTF8Encode().AsStringView()); 182d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 183d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 184d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CJX_HostPseudoModel::validationsEnabled(CFXJSE_Value* pValue, 185d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bSetting, 186d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_Attribute eAttribute) { 187d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 188d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 189d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 190d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 191d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 192d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (bSetting) { 193d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetDocEnvironment()->SetValidationsEnabled(hDoc, 194d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->ToBoolean()); 195d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 196d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 197d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 198d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bEnabled = pNotify->GetDocEnvironment()->IsValidationsEnabled(hDoc); 199d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->SetBoolean(bEnabled); 200d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 201d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 202d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CJX_HostPseudoModel::variation(CFXJSE_Value* pValue, 203d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bSetting, 204d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_Attribute eAttribute) { 205d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!GetDocument()->GetScriptContext()->IsRunAtClient()) 206d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 207d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 208d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 209d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 210d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 211d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 212d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (bSetting) { 213d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ThrowException(L"Unable to set variation value."); 214d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 215d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 216d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->SetString("Full"); 217d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 218d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 219d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CJX_HostPseudoModel::version(CFXJSE_Value* pValue, 220d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bSetting, 221d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_Attribute eAttribute) { 222d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 223d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 224d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 225d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 226d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (bSetting) { 227d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ThrowException(L"Unable to set version value."); 228d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 229d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 230d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->SetString("11"); 231d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 232d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 233d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CJX_HostPseudoModel::name(CFXJSE_Value* pValue, 234d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool bSetting, 235d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_Attribute eAttribute) { 236d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 237d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 238d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 239d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 240d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (bSetting) { 241d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ThrowInvalidPropertyException(); 242d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return; 243d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 244d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pValue->SetString( 245d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetAppProvider()->GetAppName().UTF8Encode().AsStringView()); 246d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 247d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 248d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::gotoURL( 249d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 250d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 251d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!GetDocument()->GetScriptContext()->IsRunAtClient()) 252d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 253d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 254d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() != 1) 255d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); 256d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 257d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 258d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 259d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 260d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 261d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 262d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString URL = runtime->ToWideString(params[0]); 263d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetDocEnvironment()->GotoURL(hDoc, URL); 264d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 265d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 266d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 267d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::openList( 268d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 269d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 270d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!GetDocument()->GetScriptContext()->IsRunAtClient()) 271d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 272d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 273d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() != 1) 274d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); 275d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 276d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 277d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 278d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 279d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 280d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pNode = nullptr; 281d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params[0]->IsObject()) { 282d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNode = ToNode(runtime->ToXFAObject(params[0])); 283d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } else if (params[0]->IsString()) { 284d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CFXJSE_Engine* pScriptContext = GetDocument()->GetScriptContext(); 285d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pScriptContext) 286d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 287d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 288d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Object* pObject = pScriptContext->GetThisObject(); 289d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pObject) 290d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 291d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 292d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent | 293d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_RESOLVENODE_Siblings; 294d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_RESOLVENODE_RS resolveNodeRS; 295d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool iRet = pScriptContext->ResolveObjects( 296d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pObject, runtime->ToWideString(params[0]).AsStringView(), 297d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann &resolveNodeRS, dwFlag, nullptr); 298d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!iRet || !resolveNodeRS.objects.front()->IsNode()) 299d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 300d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 301d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNode = resolveNodeRS.objects.front()->AsNode(); 302d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 303d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 304d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_LayoutProcessor* pDocLayout = GetDocument()->GetDocLayout(); 305d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pDocLayout) 306d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 307d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 308d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFWidget* hWidget = 309d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetHWidget(pDocLayout->GetLayoutItem(pNode)); 310d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!hWidget) 311d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 312d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 313d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetDocEnvironment()->SetFocusWidget(pNotify->GetHDOC(), hWidget); 314d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->OpenDropDownList(hWidget); 315d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 316d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 317d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 318d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::response( 319d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 320d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 321d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.empty() || params.size() > 4) 322d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); 323d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 324d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 325d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 326d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 327d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 328d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString question; 329d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 1) 330d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann question = runtime->ToWideString(params[0]); 331d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 332d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString title; 333d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 2) 334d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann title = runtime->ToWideString(params[1]); 335d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 336d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString defaultAnswer; 337d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 3) 338d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann defaultAnswer = runtime->ToWideString(params[2]); 339d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 340d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool mark = false; 341d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 4) 342d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann mark = runtime->ToInt32(params[3]) != 0; 343d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 344d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString answer = 345d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetAppProvider()->Response(question, title, defaultAnswer, mark); 346d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(runtime->NewString(answer.UTF8Encode().AsStringView())); 347d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 348d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 349d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::documentInBatch( 350d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 351d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 352d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(runtime->NewNumber(0)); 353d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 354d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 355d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::resetData( 356d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 357d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 358d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() > 1) 359d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); 360d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 361d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 362d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 363d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 364d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 365d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString expression; 366d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 1) 367d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann expression = runtime->ToWideString(params[0]); 368d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 369d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (expression.IsEmpty()) { 370d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->ResetData(); 371d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 372d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 373d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 374d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t iStart = 0; 375d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString wsName; 376d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pNode = nullptr; 377d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t iExpLength = expression.GetLength(); 378d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann while (iStart < iExpLength) { 379d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann iStart = FilterName(expression.AsStringView(), iStart, wsName); 380d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CFXJSE_Engine* pScriptContext = GetDocument()->GetScriptContext(); 381d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pScriptContext) 382d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 383d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 384d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Object* pObject = pScriptContext->GetThisObject(); 385d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pObject) 386d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 387d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 388d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent | 389d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_RESOLVENODE_Siblings; 390d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_RESOLVENODE_RS resolveNodeRS; 391d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool iRet = pScriptContext->ResolveObjects(pObject, wsName.AsStringView(), 392d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann &resolveNodeRS, dwFlag, nullptr); 393d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!iRet || !resolveNodeRS.objects.front()->IsNode()) 394d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann continue; 395d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 396d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNode = resolveNodeRS.objects.front()->AsNode(); 397d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->ResetData(pNode->GetWidgetAcc()); 398d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 399d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNode) 400d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->ResetData(); 401d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 402d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 403d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 404d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 405d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::beep( 406d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 407d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 408d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!GetDocument()->GetScriptContext()->IsRunAtClient()) 409d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 410d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 411d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() > 1) 412d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); 413d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 414d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 415d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 416d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 417d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 418d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann uint32_t dwType = 4; 419d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 1) 420d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann dwType = runtime->ToInt32(params[0]); 421d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 422d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetAppProvider()->Beep(dwType); 423d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 424d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 425d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 426d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::setFocus( 427d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 428d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 429d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!GetDocument()->GetScriptContext()->IsRunAtClient()) 430d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 431d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 432d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() != 1) 433d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); 434d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 435d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 436d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 437d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 438d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 439d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pNode = nullptr; 440d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 1) { 441d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params[0]->IsObject()) { 442d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNode = ToNode(runtime->ToXFAObject(params[0])); 443d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } else if (params[0]->IsString()) { 444d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CFXJSE_Engine* pScriptContext = GetDocument()->GetScriptContext(); 445d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pScriptContext) 446d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 447d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 448d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Object* pObject = pScriptContext->GetThisObject(); 449d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pObject) 450d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 451d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 452d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Parent | 453d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_RESOLVENODE_Siblings; 454d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XFA_RESOLVENODE_RS resolveNodeRS; 455d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool iRet = pScriptContext->ResolveObjects( 456d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pObject, runtime->ToWideString(params[0]).AsStringView(), 457d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann &resolveNodeRS, dwFlag, nullptr); 458d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!iRet || !resolveNodeRS.objects.front()->IsNode()) 459d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 460d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 461d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNode = resolveNodeRS.objects.front()->AsNode(); 462d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 463d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 464d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->SetFocusWidgetNode(pNode); 465d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 466d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 467d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 468d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::getFocus( 469d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 470d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 471d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 472d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 473d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 474d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 475d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_Node* pNode = pNotify->GetFocusWidgetNode(); 476d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNode) 477d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 478d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 479d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CFXJSE_Value* value = 480d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann GetDocument()->GetScriptContext()->GetJSValueFromMap(pNode); 481d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!value) 482d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(runtime->NewNull()); 483d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 484d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(value->DirectGetValue().Get(runtime->GetIsolate())); 485d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 486d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 487d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::messageBox( 488d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 489d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 490d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!GetDocument()->GetScriptContext()->IsRunAtClient()) 491d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 492d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 493d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.empty() || params.size() > 4) 494d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); 495d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 496d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 497d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 498d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 499d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 500d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString message; 501d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 1) 502d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann message = runtime->ToWideString(params[0]); 503d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 504d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString title; 505d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 2) 506d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann title = runtime->ToWideString(params[1]); 507d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 508d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann uint32_t messageType = XFA_MBICON_Error; 509d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 3) { 510d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann messageType = runtime->ToInt32(params[2]); 511d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (messageType > XFA_MBICON_Status) 512d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann messageType = XFA_MBICON_Error; 513d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 514d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 515d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann uint32_t buttonType = XFA_MB_OK; 516d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 4) { 517d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann buttonType = runtime->ToInt32(params[3]); 518d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (buttonType > XFA_MB_YesNoCancel) 519d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann buttonType = XFA_MB_OK; 520d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann } 521d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 522d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t iValue = pNotify->GetAppProvider()->MsgBox(message, title, 523d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann messageType, buttonType); 524d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(runtime->NewNumber(iValue)); 525d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 526d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 527d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::documentCountInBatch( 528d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 529d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 530d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(runtime->NewNumber(0)); 531d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 532d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 533d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::print( 534d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 535d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 536d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!GetDocument()->GetScriptContext()->IsRunAtClient()) 537d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 538d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 539d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() != 8) 540d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); 541d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 542d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 543d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 544d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 545d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 546d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann uint32_t dwOptions = 0; 547d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (runtime->ToBoolean(params[0])) 548d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann dwOptions |= XFA_PRINTOPT_ShowDialog; 549d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (runtime->ToBoolean(params[3])) 550d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann dwOptions |= XFA_PRINTOPT_CanCancel; 551d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (runtime->ToBoolean(params[4])) 552d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann dwOptions |= XFA_PRINTOPT_ShrinkPage; 553d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (runtime->ToBoolean(params[5])) 554d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann dwOptions |= XFA_PRINTOPT_AsImage; 555d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (runtime->ToBoolean(params[6])) 556d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann dwOptions |= XFA_PRINTOPT_ReverseOrder; 557d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (runtime->ToBoolean(params[7])) 558d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann dwOptions |= XFA_PRINTOPT_PrintAnnot; 559d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 560d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t nStartPage = runtime->ToInt32(params[1]); 561d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t nEndPage = runtime->ToInt32(params[2]); 562d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 563d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetDocEnvironment()->Print(pNotify->GetHDOC(), nStartPage, nEndPage, 564d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann dwOptions); 565d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 566d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 567d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 568d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::importData( 569d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 570d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 571d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.empty() || params.size() > 1) 572d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); 573d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 574d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 575d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 576d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 577d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::exportData( 578d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 579d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 580d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.empty() || params.size() > 2) 581d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); 582d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 583d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 584d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 585d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 586d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 587d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString filePath; 588d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 1) 589d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann filePath = runtime->ToWideString(params[0]); 590d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 591d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann bool XDP = true; 592d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (params.size() >= 2) 593d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann XDP = runtime->ToBoolean(params[1]); 594d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 595d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetDocEnvironment()->ExportData(pNotify->GetHDOC(), filePath, XDP); 596d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 597d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 598d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 599d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::pageUp( 600d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 601d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 602d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 603d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 604d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 605d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 606d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 607d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t nCurPage = pNotify->GetDocEnvironment()->GetCurrentPage(hDoc); 608d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t nNewPage = 0; 609d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (nCurPage <= 1) 610d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 611d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 612d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann nNewPage = nCurPage - 1; 613d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetDocEnvironment()->SetCurrentPage(hDoc, nNewPage); 614d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 615d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 616d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 617d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCJS_Return CJX_HostPseudoModel::pageDown( 618d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CJS_V8* runtime, 619d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann const std::vector<v8::Local<v8::Value>>& params) { 620d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFNotify* pNotify = GetDocument()->GetNotify(); 621d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!pNotify) 622d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 623d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 624d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann CXFA_FFDoc* hDoc = pNotify->GetHDOC(); 625d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t nCurPage = pNotify->GetDocEnvironment()->GetCurrentPage(hDoc); 626d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t nPageCount = pNotify->GetDocEnvironment()->CountPages(hDoc); 627d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (!nPageCount || nCurPage == nPageCount) 628d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 629d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 630d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann int32_t nNewPage = 0; 631d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann if (nCurPage >= nPageCount) 632d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann nNewPage = nPageCount - 1; 633d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann else 634d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann nNewPage = nCurPage + 1; 635d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 636d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann pNotify->GetDocEnvironment()->SetCurrentPage(hDoc, nNewPage); 637d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return CJS_Return(true); 638d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 639