Chromium Code Reviews| Index: fpdfsdk/src/javascript/app.cpp |
| diff --git a/fpdfsdk/src/javascript/app.cpp b/fpdfsdk/src/javascript/app.cpp |
| index d8be5759183fc7d0297694652871bec6cf001640..5fe5076dd87ac1b55fff1884b7a73e0b9d30bc2d 100644 |
| --- a/fpdfsdk/src/javascript/app.cpp |
| +++ b/fpdfsdk/src/javascript/app.cpp |
| @@ -530,70 +530,54 @@ FX_BOOL app::goForward(IJS_Context* cc, |
| } |
| FX_BOOL app::mailMsg(IJS_Context* cc, |
| - const std::vector<CJS_Value>& params, |
| + const std::vector<CJS_Value>& originalParams, |
|
Lei Zhang
2016/01/30 00:44:11
Can you change the header to match, or leave it as
Tom Sepez
2016/01/30 00:55:03
Done.
|
| CJS_Value& vRet, |
| CFX_WideString& sError) { |
| - if (params.size() < 1) |
| - return FALSE; |
| - |
| - FX_BOOL bUI = TRUE; |
| - CFX_WideString cTo = L""; |
| - CFX_WideString cCc = L""; |
| - CFX_WideString cBcc = L""; |
| - CFX_WideString cSubject = L""; |
| - CFX_WideString cMsg = L""; |
| - |
| CJS_Context* pContext = static_cast<CJS_Context*>(cc); |
| CJS_Runtime* pRuntime = pContext->GetJSRuntime(); |
| - v8::Isolate* isolate = pRuntime->GetIsolate(); |
| - |
| - if (params[0].GetType() == CJS_Value::VT_object) { |
| - v8::Local<v8::Object> pObj = params[0].ToV8Object(); |
| + std::vector<CJS_Value> newParams = |
| + JS_ExpandKeywordParams(pRuntime, originalParams, 6, L"bUI", L"cTo", |
| + L"cCc", L"cBcc", L"cSubject", L"cMsg"); |
| - v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"bUI"); |
| - bUI = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToBool(); |
| - |
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"cTo"); |
| - cTo = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); |
| + if (newParams[0].GetType() == CJS_Value::VT_unknown) { |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| + return FALSE; |
| + } |
| + bool bUI = newParams[0].ToBool(); |
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"cCc"); |
| - cCc = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); |
| + CFX_WideString cTo; |
| + if (newParams[1].GetType() != CJS_Value::VT_unknown) { |
| + cTo = newParams[1].ToCFXWideString(); |
| + } else { |
| + if (!bUI) { |
| + // cTo parameter required when UI not invoked. |
| + sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); |
| + return FALSE; |
| + } |
| + } |
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"cBcc"); |
| - cBcc = |
| - CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); |
| + CFX_WideString cCc; |
| + if (newParams[2].GetType() != CJS_Value::VT_unknown) |
| + cCc = newParams[2].ToCFXWideString(); |
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"cSubject"); |
| - cSubject = |
| - CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); |
| + CFX_WideString cBcc; |
| + if (newParams[3].GetType() != CJS_Value::VT_unknown) |
| + cBcc = newParams[3].ToCFXWideString(); |
| - pValue = FXJS_GetObjectElement(isolate, pObj, L"cMsg"); |
| - cMsg = |
| - CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString(); |
| - } else { |
| - if (params.size() < 2) |
| - return FALSE; |
| + CFX_WideString cSubject; |
| + if (newParams[4].GetType() != CJS_Value::VT_unknown) |
| + cSubject = newParams[4].ToCFXWideString(); |
| - bUI = params[0].ToBool(); |
| - cTo = params[1].ToCFXWideString(); |
| - |
| - if (params.size() >= 3) |
| - cCc = params[2].ToCFXWideString(); |
| - if (params.size() >= 4) |
| - cBcc = params[3].ToCFXWideString(); |
| - if (params.size() >= 5) |
| - cSubject = params[4].ToCFXWideString(); |
| - if (params.size() >= 6) |
| - cMsg = params[5].ToCFXWideString(); |
| - } |
| + CFX_WideString cMsg; |
| + if (newParams[5].GetType() != CJS_Value::VT_unknown) |
| + cMsg = newParams[5].ToCFXWideString(); |
| pRuntime->BeginBlock(); |
| - pContext->GetReaderApp()->JS_docmailForm(NULL, 0, bUI, cTo.c_str(), |
| + pContext->GetReaderApp()->JS_docmailForm(nullptr, 0, bUI, cTo.c_str(), |
| cSubject.c_str(), cCc.c_str(), |
| cBcc.c_str(), cMsg.c_str()); |
| pRuntime->EndBlock(); |
| - |
| - return FALSE; |
| + return TRUE; |
| } |
| FX_BOOL app::launchURL(IJS_Context* cc, |
| @@ -612,7 +596,6 @@ FX_BOOL app::runtimeHighlight(IJS_Context* cc, |
| } else { |
| vp << m_bRuntimeHighLight; |
| } |
| - |
| return TRUE; |
| } |