diff options
author | Tom Sepez <tsepez@chromium.org> | 2018-08-17 16:44:50 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-08-17 16:44:50 +0000 |
commit | 20736f7f5884cf1e2827543c92b6e47f8282aeaf (patch) | |
tree | 9a0f3cbd9262d1676f70ab02c3fa5b4e0acaa03a /fxjs/xfa/cjx_tree.cpp | |
parent | 21068062a038db72b5ee40512fe638acbdd17c3d (diff) | |
download | pdfium-20736f7f5884cf1e2827543c92b6e47f8282aeaf.tar.xz |
Introduce safer CJS_Return::Success() and Failure().
Avoid the possibility of ever re-introducing the issue noticed
last week.
Remove some redundant JSGetStringFromID() calls.
Change-Id: I56687c2191bd72e378f747083f34080e50cbe490
Reviewed-on: https://pdfium-review.googlesource.com/40490
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'fxjs/xfa/cjx_tree.cpp')
-rw-r--r-- | fxjs/xfa/cjx_tree.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/fxjs/xfa/cjx_tree.cpp b/fxjs/xfa/cjx_tree.cpp index 3a266eb450..be74b44a93 100644 --- a/fxjs/xfa/cjx_tree.cpp +++ b/fxjs/xfa/cjx_tree.cpp @@ -33,12 +33,12 @@ CJS_Return CJX_Tree::resolveNode( CFX_V8* runtime, const std::vector<v8::Local<v8::Value>>& params) { if (params.size() != 1) - return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); + return CJS_Return::Failure(JSMessage::kParamError); WideString expression = runtime->ToWideString(params[0]); CFXJSE_Engine* pScriptContext = GetDocument()->GetScriptContext(); if (!pScriptContext) - return CJS_Return(); + return CJS_Return::Success(); CXFA_Object* refNode = GetXFAObject(); if (refNode->GetElementType() == XFA_Element::Xfa) @@ -51,7 +51,7 @@ CJS_Return CJX_Tree::resolveNode( if (!pScriptContext->ResolveObjects(ToNode(refNode), expression.AsStringView(), &resolveNodeRS, dwFlag, nullptr)) { - return CJS_Return(runtime->NewNull()); + return CJS_Return::Success(runtime->NewNull()); } if (resolveNodeRS.dwFlags == XFA_ResolveNode_RSType_Nodes) { @@ -59,30 +59,32 @@ CJS_Return CJX_Tree::resolveNode( CFXJSE_Value* value = GetDocument()->GetScriptContext()->GetJSValueFromMap(pObject); if (!value) - return CJS_Return(runtime->NewNull()); + return CJS_Return::Success(runtime->NewNull()); - return CJS_Return(value->DirectGetValue().Get(runtime->GetIsolate())); + return CJS_Return::Success( + value->DirectGetValue().Get(runtime->GetIsolate())); } const XFA_SCRIPTATTRIBUTEINFO* lpAttributeInfo = resolveNodeRS.pScriptAttribute; if (!lpAttributeInfo || lpAttributeInfo->eValueType != XFA_ScriptType::Object) { - return CJS_Return(runtime->NewNull()); + return CJS_Return::Success(runtime->NewNull()); } auto pValue = pdfium::MakeUnique<CFXJSE_Value>(pScriptContext->GetIsolate()); CJX_Object* jsObject = resolveNodeRS.objects.front()->JSObject(); (jsObject->*(lpAttributeInfo->callback))(pValue.get(), false, lpAttributeInfo->attribute); - return CJS_Return(pValue->DirectGetValue().Get(runtime->GetIsolate())); + return CJS_Return::Success( + pValue->DirectGetValue().Get(runtime->GetIsolate())); } CJS_Return CJX_Tree::resolveNodes( CFX_V8* runtime, const std::vector<v8::Local<v8::Value>>& params) { if (params.size() != 1) - return CJS_Return(JSGetStringFromID(JSMessage::kParamError)); + return CJS_Return::Failure(JSMessage::kParamError); CXFA_Object* refNode = GetXFAObject(); if (refNode->GetElementType() == XFA_Element::Xfa) @@ -90,7 +92,7 @@ CJS_Return CJX_Tree::resolveNodes( CFXJSE_Engine* pScriptContext = GetDocument()->GetScriptContext(); if (!pScriptContext) - return CJS_Return(); + return CJS_Return::Success(); auto pValue = pdfium::MakeUnique<CFXJSE_Value>(pScriptContext->GetIsolate()); ResolveNodeList(pValue.get(), runtime->ToWideString(params[0]), @@ -98,7 +100,8 @@ CJS_Return CJX_Tree::resolveNodes( XFA_RESOLVENODE_Properties | XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings, ToNode(refNode)); - return CJS_Return(pValue->DirectGetValue().Get(runtime->GetIsolate())); + return CJS_Return::Success( + pValue->DirectGetValue().Get(runtime->GetIsolate())); } void CJX_Tree::all(CFXJSE_Value* pValue, |