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

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

Issue 1857073002: Make down-conversion explicit from CFX_Widetring to CFX_WideStringC. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: String argument type Created 4 years, 8 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
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/xfa_script_imp.h" 7 #include "xfa/fxfa/parser/xfa_script_imp.h"
8 8
9 #include "core/fxcrt/include/fx_ext.h" 9 #include "core/fxcrt/include/fx_ext.h"
10 #include "xfa/fxfa/app/xfa_ffnotify.h" 10 #include "xfa/fxfa/app/xfa_ffnotify.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 CXFA_Object* lpCurNode = lpScriptContext->GetVariablesThis(lpOrginalNode); 117 CXFA_Object* lpCurNode = lpScriptContext->GetVariablesThis(lpOrginalNode);
118 CFX_WideString wsPropName = CFX_WideString::FromUTF8( 118 CFX_WideString wsPropName = CFX_WideString::FromUTF8(
119 (const FX_CHAR*)szPropName.raw_str(), szPropName.GetLength()); 119 (const FX_CHAR*)szPropName.raw_str(), szPropName.GetLength());
120 uint32_t dwFlag = XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings | 120 uint32_t dwFlag = XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings |
121 XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Properties | 121 XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Properties |
122 XFA_RESOLVENODE_Attributes; 122 XFA_RESOLVENODE_Attributes;
123 CXFA_Node* pRefNode = ToNode(lpScriptContext->GetThisObject()); 123 CXFA_Node* pRefNode = ToNode(lpScriptContext->GetThisObject());
124 if (lpOrginalNode->GetObjectType() == XFA_OBJECTTYPE_VariablesThis) { 124 if (lpOrginalNode->GetObjectType() == XFA_OBJECTTYPE_VariablesThis) {
125 pRefNode = ToNode(lpCurNode); 125 pRefNode = ToNode(lpCurNode);
126 } 126 }
127 if (lpScriptContext->QueryNodeByFlag(pRefNode, wsPropName, hValue, dwFlag, 127 if (lpScriptContext->QueryNodeByFlag(pRefNode, wsPropName.AsWideStringC(),
128 TRUE)) { 128 hValue, dwFlag, TRUE)) {
129 return; 129 return;
130 } 130 }
131 if (lpOrginalNode->GetObjectType() == XFA_OBJECTTYPE_VariablesThis) { 131 if (lpOrginalNode->GetObjectType() == XFA_OBJECTTYPE_VariablesThis) {
132 if (FXJSE_Value_IsUndefined(hValue)) { 132 if (FXJSE_Value_IsUndefined(hValue)) {
133 FXJSE_Value_SetObjectOwnProp(hObject, szPropName, hValue); 133 FXJSE_Value_SetObjectOwnProp(hObject, szPropName, hValue);
134 return; 134 return;
135 } 135 }
136 } 136 }
137 CXFA_FFNotify* pNotify = pDoc->GetNotify(); 137 CXFA_FFNotify* pNotify = pDoc->GetNotify();
138 if (!pNotify) { 138 if (!pNotify) {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 return; 191 return;
192 } 192 }
193 } 193 }
194 } 194 }
195 uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Properties | 195 uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Properties |
196 XFA_RESOLVENODE_Attributes; 196 XFA_RESOLVENODE_Attributes;
197 CXFA_Node* pRefNode = ToNode(lpScriptContext->GetThisObject()); 197 CXFA_Node* pRefNode = ToNode(lpScriptContext->GetThisObject());
198 if (pOrginalObject->GetObjectType() == XFA_OBJECTTYPE_VariablesThis) { 198 if (pOrginalObject->GetObjectType() == XFA_OBJECTTYPE_VariablesThis) {
199 pRefNode = ToNode(lpCurNode); 199 pRefNode = ToNode(lpCurNode);
200 } 200 }
201 if (lpScriptContext->QueryNodeByFlag(pRefNode, wsPropName, hValue, dwFlag, 201 if (lpScriptContext->QueryNodeByFlag(pRefNode, wsPropName.AsWideStringC(),
202 FALSE)) { 202 hValue, dwFlag, FALSE)) {
203 return; 203 return;
204 } 204 }
205 dwFlag = XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings; 205 dwFlag = XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings;
206 if (lpScriptContext->QueryNodeByFlag(pRefNode, wsPropName, hValue, dwFlag, 206 if (lpScriptContext->QueryNodeByFlag(pRefNode, wsPropName.AsWideStringC(),
207 FALSE)) { 207 hValue, dwFlag, FALSE)) {
208 return; 208 return;
209 } 209 }
210 CXFA_Object* pScriptObject = 210 CXFA_Object* pScriptObject =
211 lpScriptContext->GetVariablesThis(pOrginalObject, TRUE); 211 lpScriptContext->GetVariablesThis(pOrginalObject, TRUE);
212 if (pScriptObject && 212 if (pScriptObject &&
213 lpScriptContext->QueryVariableHValue(pScriptObject->AsNode(), szPropName, 213 lpScriptContext->QueryVariableHValue(pScriptObject->AsNode(), szPropName,
214 hValue, TRUE)) { 214 hValue, TRUE)) {
215 return; 215 return;
216 } 216 }
217 CXFA_FFNotify* pNotify = pDoc->GetNotify(); 217 CXFA_FFNotify* pNotify = pDoc->GetNotify();
(...skipping 18 matching lines...) Expand all
236 (CXFA_ScriptContext*)pOrginalObject->GetDocument()->GetScriptContext(); 236 (CXFA_ScriptContext*)pOrginalObject->GetDocument()->GetScriptContext();
237 CXFA_Object* pObject = lpScriptContext->GetVariablesThis(pOrginalObject); 237 CXFA_Object* pObject = lpScriptContext->GetVariablesThis(pOrginalObject);
238 if (wsPropName == FX_WSTRC(L"xfa")) { 238 if (wsPropName == FX_WSTRC(L"xfa")) {
239 FXJSE_HVALUE pValue = lpScriptContext->GetJSValueFromMap( 239 FXJSE_HVALUE pValue = lpScriptContext->GetJSValueFromMap(
240 lpScriptContext->GetDocument()->GetRoot()); 240 lpScriptContext->GetDocument()->GetRoot());
241 FXJSE_Value_Set(hValue, pValue); 241 FXJSE_Value_Set(hValue, pValue);
242 return; 242 return;
243 } 243 }
244 uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Properties | 244 uint32_t dwFlag = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_Properties |
245 XFA_RESOLVENODE_Attributes; 245 XFA_RESOLVENODE_Attributes;
246 FX_BOOL bRet = lpScriptContext->QueryNodeByFlag(ToNode(pObject), wsPropName, 246 FX_BOOL bRet = lpScriptContext->QueryNodeByFlag(
247 hValue, dwFlag, FALSE); 247 ToNode(pObject), wsPropName.AsWideStringC(), hValue, dwFlag, FALSE);
248 if (bRet) { 248 if (bRet) {
249 return; 249 return;
250 } 250 }
251 if (pObject == lpScriptContext->GetThisObject() || 251 if (pObject == lpScriptContext->GetThisObject() ||
252 (lpScriptContext->GetType() == XFA_SCRIPTLANGTYPE_Javascript && 252 (lpScriptContext->GetType() == XFA_SCRIPTLANGTYPE_Javascript &&
253 !lpScriptContext->IsStrictScopeInJavaScript())) { 253 !lpScriptContext->IsStrictScopeInJavaScript())) {
254 dwFlag = XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings; 254 dwFlag = XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings;
255 bRet = lpScriptContext->QueryNodeByFlag(ToNode(pObject), wsPropName, hValue, 255 bRet = lpScriptContext->QueryNodeByFlag(
256 dwFlag, FALSE); 256 ToNode(pObject), wsPropName.AsWideStringC(), hValue, dwFlag, FALSE);
257 } 257 }
258 if (bRet) { 258 if (bRet) {
259 return; 259 return;
260 } 260 }
261 CXFA_Object* pScriptObject = 261 CXFA_Object* pScriptObject =
262 lpScriptContext->GetVariablesThis(pOrginalObject, TRUE); 262 lpScriptContext->GetVariablesThis(pOrginalObject, TRUE);
263 if (pScriptObject) { 263 if (pScriptObject) {
264 bRet = lpScriptContext->QueryVariableHValue(ToNode(pScriptObject), 264 bRet = lpScriptContext->QueryVariableHValue(ToNode(pScriptObject),
265 szPropName, hValue, TRUE); 265 szPropName, hValue, TRUE);
266 } 266 }
267 if (!bRet) { 267 if (!bRet) {
268 FXJSE_Value_SetUndefined(hValue); 268 FXJSE_Value_SetUndefined(hValue);
269 } 269 }
270 } 270 }
271 void CXFA_ScriptContext::NormalPropertySetter(FXJSE_HOBJECT hObject, 271 void CXFA_ScriptContext::NormalPropertySetter(FXJSE_HOBJECT hObject,
272 const CFX_ByteStringC& szPropName, 272 const CFX_ByteStringC& szPropName,
273 FXJSE_HVALUE hValue) { 273 FXJSE_HVALUE hValue) {
274 CXFA_Object* pOrginalObject = 274 CXFA_Object* pOrginalObject =
275 (CXFA_Object*)FXJSE_Value_ToObject(hObject, NULL); 275 (CXFA_Object*)FXJSE_Value_ToObject(hObject, NULL);
276 if (pOrginalObject == NULL) { 276 if (pOrginalObject == NULL) {
277 return; 277 return;
278 } 278 }
279 CXFA_ScriptContext* lpScriptContext = 279 CXFA_ScriptContext* lpScriptContext =
280 (CXFA_ScriptContext*)pOrginalObject->GetDocument()->GetScriptContext(); 280 (CXFA_ScriptContext*)pOrginalObject->GetDocument()->GetScriptContext();
281 CXFA_Object* pObject = lpScriptContext->GetVariablesThis(pOrginalObject); 281 CXFA_Object* pObject = lpScriptContext->GetVariablesThis(pOrginalObject);
282 CFX_WideString wsPropName = CFX_WideString::FromUTF8( 282 CFX_WideString wsPropName = CFX_WideString::FromUTF8(
283 (const FX_CHAR*)szPropName.raw_str(), szPropName.GetLength()); 283 (const FX_CHAR*)szPropName.raw_str(), szPropName.GetLength());
284 const XFA_SCRIPTATTRIBUTEINFO* lpAttributeInfo = 284 const XFA_SCRIPTATTRIBUTEINFO* lpAttributeInfo = XFA_GetScriptAttributeByName(
285 XFA_GetScriptAttributeByName(pObject->GetClassID(), wsPropName); 285 pObject->GetClassID(), wsPropName.AsWideStringC());
286 if (lpAttributeInfo) { 286 if (lpAttributeInfo) {
287 (pObject->*(lpAttributeInfo->lpfnCallback))( 287 (pObject->*(lpAttributeInfo->lpfnCallback))(
288 hValue, TRUE, (XFA_ATTRIBUTE)lpAttributeInfo->eAttribute); 288 hValue, TRUE, (XFA_ATTRIBUTE)lpAttributeInfo->eAttribute);
289 } else { 289 } else {
290 if (pObject->IsNode()) { 290 if (pObject->IsNode()) {
291 if (wsPropName.GetAt(0) == '#') { 291 if (wsPropName.GetAt(0) == '#') {
292 wsPropName = wsPropName.Right(wsPropName.GetLength() - 1); 292 wsPropName = wsPropName.Right(wsPropName.GetLength() - 1);
293 } 293 }
294 CXFA_Node* pNode = ToNode(pObject); 294 CXFA_Node* pNode = ToNode(pObject);
295 CXFA_Node* pPropOrChild = NULL; 295 CXFA_Node* pPropOrChild = NULL;
296 const XFA_ELEMENTINFO* lpElementInfo = XFA_GetElementByName(wsPropName); 296 const XFA_ELEMENTINFO* lpElementInfo =
297 XFA_GetElementByName(wsPropName.AsWideStringC());
297 if (lpElementInfo) { 298 if (lpElementInfo) {
298 pPropOrChild = pNode->GetProperty(0, lpElementInfo->eName); 299 pPropOrChild = pNode->GetProperty(0, lpElementInfo->eName);
299 } else { 300 } else {
300 pPropOrChild = pNode->GetFirstChildByName(wsPropName); 301 pPropOrChild = pNode->GetFirstChildByName(wsPropName.AsWideStringC());
301 } 302 }
302 if (pPropOrChild) { 303 if (pPropOrChild) {
303 CFX_WideString wsDefaultName = FX_WSTRC(L"{default}"); 304 CFX_WideString wsDefaultName = FX_WSTRC(L"{default}");
304 const XFA_SCRIPTATTRIBUTEINFO* lpAttributeInfo = 305 const XFA_SCRIPTATTRIBUTEINFO* lpAttributeInfo =
305 XFA_GetScriptAttributeByName(pPropOrChild->GetClassID(), 306 XFA_GetScriptAttributeByName(pPropOrChild->GetClassID(),
306 wsDefaultName); 307 wsDefaultName.AsWideStringC());
307 if (lpAttributeInfo) { 308 if (lpAttributeInfo) {
308 (pPropOrChild->*(lpAttributeInfo->lpfnCallback))( 309 (pPropOrChild->*(lpAttributeInfo->lpfnCallback))(
309 hValue, TRUE, (XFA_ATTRIBUTE)lpAttributeInfo->eAttribute); 310 hValue, TRUE, (XFA_ATTRIBUTE)lpAttributeInfo->eAttribute);
310 return; 311 return;
311 } 312 }
312 } 313 }
313 } 314 }
314 CXFA_Object* pScriptObject = 315 CXFA_Object* pScriptObject =
315 lpScriptContext->GetVariablesThis(pOrginalObject, TRUE); 316 lpScriptContext->GetVariablesThis(pOrginalObject, TRUE);
316 if (pScriptObject) { 317 if (pScriptObject) {
317 lpScriptContext->QueryVariableHValue(ToNode(pScriptObject), szPropName, 318 lpScriptContext->QueryVariableHValue(ToNode(pScriptObject), szPropName,
318 hValue, FALSE); 319 hValue, FALSE);
319 } 320 }
320 } 321 }
321 } 322 }
322 int32_t CXFA_ScriptContext::NormalPropTypeGetter( 323 int32_t CXFA_ScriptContext::NormalPropTypeGetter(
323 FXJSE_HOBJECT hObject, 324 FXJSE_HOBJECT hObject,
324 const CFX_ByteStringC& szPropName, 325 const CFX_ByteStringC& szPropName,
325 FX_BOOL bQueryIn) { 326 FX_BOOL bQueryIn) {
326 CXFA_Object* pObject = (CXFA_Object*)FXJSE_Value_ToObject(hObject, NULL); 327 CXFA_Object* pObject = (CXFA_Object*)FXJSE_Value_ToObject(hObject, NULL);
327 if (pObject == NULL) { 328 if (pObject == NULL) {
328 return FXJSE_ClassPropType_None; 329 return FXJSE_ClassPropType_None;
329 } 330 }
330 CXFA_ScriptContext* lpScriptContext = 331 CXFA_ScriptContext* lpScriptContext =
331 (CXFA_ScriptContext*)pObject->GetDocument()->GetScriptContext(); 332 (CXFA_ScriptContext*)pObject->GetDocument()->GetScriptContext();
332 pObject = lpScriptContext->GetVariablesThis(pObject); 333 pObject = lpScriptContext->GetVariablesThis(pObject);
333 XFA_ELEMENT objElement = pObject->GetClassID(); 334 XFA_ELEMENT objElement = pObject->GetClassID();
334 CFX_WideString wsPropName = CFX_WideString::FromUTF8( 335 CFX_WideString wsPropName = CFX_WideString::FromUTF8(
335 (const FX_CHAR*)szPropName.raw_str(), szPropName.GetLength()); 336 (const FX_CHAR*)szPropName.raw_str(), szPropName.GetLength());
336 if (XFA_GetMethodByName(objElement, wsPropName)) { 337 if (XFA_GetMethodByName(objElement, wsPropName.AsWideStringC())) {
337 return FXJSE_ClassPropType_Method; 338 return FXJSE_ClassPropType_Method;
338 } 339 }
339 if (bQueryIn && !XFA_GetScriptAttributeByName(objElement, wsPropName)) { 340 if (bQueryIn &&
341 !XFA_GetScriptAttributeByName(objElement, wsPropName.AsWideStringC())) {
340 return FXJSE_ClassPropType_None; 342 return FXJSE_ClassPropType_None;
341 } 343 }
342 return FXJSE_ClassPropType_Property; 344 return FXJSE_ClassPropType_Property;
343 } 345 }
344 int32_t CXFA_ScriptContext::GlobalPropTypeGetter( 346 int32_t CXFA_ScriptContext::GlobalPropTypeGetter(
345 FXJSE_HOBJECT hObject, 347 FXJSE_HOBJECT hObject,
346 const CFX_ByteStringC& szPropName, 348 const CFX_ByteStringC& szPropName,
347 FX_BOOL bQueryIn) { 349 FX_BOOL bQueryIn) {
348 CXFA_Object* pObject = (CXFA_Object*)FXJSE_Value_ToObject(hObject, NULL); 350 CXFA_Object* pObject = (CXFA_Object*)FXJSE_Value_ToObject(hObject, NULL);
349 if (pObject == NULL) { 351 if (pObject == NULL) {
350 return FXJSE_ClassPropType_None; 352 return FXJSE_ClassPropType_None;
351 } 353 }
352 CXFA_ScriptContext* lpScriptContext = 354 CXFA_ScriptContext* lpScriptContext =
353 (CXFA_ScriptContext*)pObject->GetDocument()->GetScriptContext(); 355 (CXFA_ScriptContext*)pObject->GetDocument()->GetScriptContext();
354 pObject = lpScriptContext->GetVariablesThis(pObject); 356 pObject = lpScriptContext->GetVariablesThis(pObject);
355 XFA_ELEMENT objElement = pObject->GetClassID(); 357 XFA_ELEMENT objElement = pObject->GetClassID();
356 CFX_WideString wsPropName = CFX_WideString::FromUTF8( 358 CFX_WideString wsPropName = CFX_WideString::FromUTF8(
357 (const FX_CHAR*)szPropName.raw_str(), szPropName.GetLength()); 359 (const FX_CHAR*)szPropName.raw_str(), szPropName.GetLength());
358 if (XFA_GetMethodByName(objElement, wsPropName)) { 360 if (XFA_GetMethodByName(objElement, wsPropName.AsWideStringC())) {
359 return FXJSE_ClassPropType_Method; 361 return FXJSE_ClassPropType_Method;
360 } 362 }
361 return FXJSE_ClassPropType_Property; 363 return FXJSE_ClassPropType_Property;
362 } 364 }
363 void CXFA_ScriptContext::NormalMethodCall(FXJSE_HOBJECT hThis, 365 void CXFA_ScriptContext::NormalMethodCall(FXJSE_HOBJECT hThis,
364 const CFX_ByteStringC& szFuncName, 366 const CFX_ByteStringC& szFuncName,
365 CFXJSE_Arguments& args) { 367 CFXJSE_Arguments& args) {
366 CXFA_Object* pObject = (CXFA_Object*)FXJSE_Value_ToObject(hThis, NULL); 368 CXFA_Object* pObject = (CXFA_Object*)FXJSE_Value_ToObject(hThis, NULL);
367 if (pObject == NULL) { 369 if (pObject == NULL) {
368 return; 370 return;
369 } 371 }
370 CXFA_ScriptContext* lpScriptContext = 372 CXFA_ScriptContext* lpScriptContext =
371 (CXFA_ScriptContext*)pObject->GetDocument()->GetScriptContext(); 373 (CXFA_ScriptContext*)pObject->GetDocument()->GetScriptContext();
372 pObject = lpScriptContext->GetVariablesThis(pObject); 374 pObject = lpScriptContext->GetVariablesThis(pObject);
373 CFX_WideString wsFunName = CFX_WideString::FromUTF8( 375 CFX_WideString wsFunName = CFX_WideString::FromUTF8(
374 (const FX_CHAR*)szFuncName.raw_str(), szFuncName.GetLength()); 376 (const FX_CHAR*)szFuncName.raw_str(), szFuncName.GetLength());
375 const XFA_METHODINFO* lpMethodInfo = 377 const XFA_METHODINFO* lpMethodInfo =
376 XFA_GetMethodByName(pObject->GetClassID(), wsFunName); 378 XFA_GetMethodByName(pObject->GetClassID(), wsFunName.AsWideStringC());
377 if (NULL == lpMethodInfo) { 379 if (NULL == lpMethodInfo) {
378 return; 380 return;
379 } 381 }
380 (pObject->*(lpMethodInfo->lpfnCallback))(&args); 382 (pObject->*(lpMethodInfo->lpfnCallback))(&args);
381 } 383 }
382 FX_BOOL CXFA_ScriptContext::IsStrictScopeInJavaScript() { 384 FX_BOOL CXFA_ScriptContext::IsStrictScopeInJavaScript() {
383 return m_pDocument->HasFlag(XFA_DOCFLAG_StrictScoping); 385 return m_pDocument->HasFlag(XFA_DOCFLAG_StrictScoping);
384 } 386 }
385 XFA_SCRIPTLANGTYPE CXFA_ScriptContext::GetType() { 387 XFA_SCRIPTLANGTYPE CXFA_ScriptContext::GetType() {
386 return m_eScriptType; 388 return m_eScriptType;
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 } 773 }
772 } 774 }
773 void CXFA_ScriptContext::AddNodesOfRunScript(CXFA_Node* pNode) { 775 void CXFA_ScriptContext::AddNodesOfRunScript(CXFA_Node* pNode) {
774 if (!m_pScriptNodeArray) { 776 if (!m_pScriptNodeArray) {
775 return; 777 return;
776 } 778 }
777 if (m_pScriptNodeArray->Find(pNode) == -1) { 779 if (m_pScriptNodeArray->Find(pNode) == -1) {
778 m_pScriptNodeArray->Add(pNode); 780 m_pScriptNodeArray->Add(pNode);
779 } 781 }
780 } 782 }
OLDNEW
« no previous file with comments | « xfa/fxfa/parser/xfa_script_hostpseudomodel.cpp ('k') | xfa/fxfa/parser/xfa_script_layoutpseudomodel.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698