summaryrefslogtreecommitdiff
path: root/fxjs/xfa/cjx_tree.cpp
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-08-17 16:44:50 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-08-17 16:44:50 +0000
commit20736f7f5884cf1e2827543c92b6e47f8282aeaf (patch)
tree9a0f3cbd9262d1676f70ab02c3fa5b4e0acaa03a /fxjs/xfa/cjx_tree.cpp
parent21068062a038db72b5ee40512fe638acbdd17c3d (diff)
downloadpdfium-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.cpp23
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,