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

Unified Diff: fpdfsdk/src/javascript/app.cpp

Issue 1645413002: Fix botched "CC:" parameter passing in JS_DocmailForm(). (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Rename back to "params". Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « fpdfsdk/src/fsdk_mgr.cpp ('k') | samples/pdfium_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: fpdfsdk/src/javascript/app.cpp
diff --git a/fpdfsdk/src/javascript/app.cpp b/fpdfsdk/src/javascript/app.cpp
index d8be5759183fc7d0297694652871bec6cf001640..28b31cfb9f6e4e23679f2d98b09701cc75860e5d 100644
--- a/fpdfsdk/src/javascript/app.cpp
+++ b/fpdfsdk/src/javascript/app.cpp
@@ -533,67 +533,51 @@ FX_BOOL app::mailMsg(IJS_Context* cc,
const std::vector<CJS_Value>& params,
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();
-
- v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"bUI");
- bUI = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToBool();
+ std::vector<CJS_Value> newParams =
+ JS_ExpandKeywordParams(pRuntime, params, 6, L"bUI", L"cTo", L"cCc",
+ L"cBcc", L"cSubject", L"cMsg");
- 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;
}
« no previous file with comments | « fpdfsdk/src/fsdk_mgr.cpp ('k') | samples/pdfium_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698