diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-10-25 13:30:31 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-10-25 18:40:45 +0000 |
commit | 8f524d6ff9c5c5e07388438e58aca7dc39f43a1f (patch) | |
tree | ec73d24ebdfb84e0c9a254a35912edc5ab54dae7 /fpdfsdk/javascript/util.cpp | |
parent | 2474a3b2d9fe987dac58813771f1fa66427e124f (diff) | |
download | pdfium-8f524d6ff9c5c5e07388438e58aca7dc39f43a1f.tar.xz |
Refactor JS method parameters and return values.
This CL removes the out parameters from the JS methods and changes the
return from a |bool| to a |CJS_Return| value. The return value holds the
returned v8 object, error string and a status code.
Change-Id: I82488ff0d916475d7e3c8e51ed868639806181c9
Reviewed-on: https://pdfium-review.googlesource.com/16751
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'fpdfsdk/javascript/util.cpp')
-rw-r--r-- | fpdfsdk/javascript/util.cpp | 119 |
1 files changed, 42 insertions, 77 deletions
diff --git a/fpdfsdk/javascript/util.cpp b/fpdfsdk/javascript/util.cpp index 202a1ead7f..3accaa265c 100644 --- a/fpdfsdk/javascript/util.cpp +++ b/fpdfsdk/javascript/util.cpp @@ -73,13 +73,11 @@ util::util(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {} util::~util() {} -bool util::printf(CJS_Runtime* pRuntime, - const std::vector<v8::Local<v8::Value>>& params, - CJS_Value& vRet, - WideString& sError) { +CJS_Return util::printf(CJS_Runtime* pRuntime, + const std::vector<v8::Local<v8::Value>>& params) { const size_t iSize = params.size(); if (iSize < 1) - return false; + return CJS_Return(false); std::wstring unsafe_fmt_string(pRuntime->ToWideString(params[0]).c_str()); std::vector<std::wstring> unsafe_conversion_specifiers; @@ -133,28 +131,21 @@ bool util::printf(CJS_Runtime* pRuntime, } c_strResult.erase(c_strResult.begin()); - vRet = CJS_Value(pRuntime->NewString(c_strResult.c_str())); - return true; + return CJS_Return(pRuntime->NewString(c_strResult.c_str())); } -bool util::printd(CJS_Runtime* pRuntime, - const std::vector<v8::Local<v8::Value>>& params, - CJS_Value& vRet, - WideString& sError) { +CJS_Return util::printd(CJS_Runtime* pRuntime, + const std::vector<v8::Local<v8::Value>>& params) { const size_t iSize = params.size(); if (iSize < 2) - return false; + return CJS_Return(false); - if (params[1].IsEmpty() || !params[1]->IsDate()) { - sError = JSGetStringFromID(IDS_STRING_JSPRINT1); - return false; - } + if (params[1].IsEmpty() || !params[1]->IsDate()) + return CJS_Return(JSGetStringFromID(IDS_STRING_JSPRINT1)); CJS_Date jsDate(params[1].As<v8::Date>()); - if (!jsDate.IsValidDate(pRuntime)) { - sError = JSGetStringFromID(IDS_STRING_JSPRINT2); - return false; - } + if (!jsDate.IsValidDate(pRuntime)) + return CJS_Return(JSGetStringFromID(IDS_STRING_JSPRINT2)); if (params[0]->IsNumber()) { WideString swResult; @@ -180,19 +171,16 @@ bool util::printd(CJS_Runtime* pRuntime, jsDate.GetSeconds(pRuntime)); break; default: - sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); - return false; + return CJS_Return(JSGetStringFromID(IDS_STRING_JSVALUEERROR)); } - vRet = CJS_Value(pRuntime->NewString(swResult.c_str())); - return true; + return CJS_Return(pRuntime->NewString(swResult.c_str())); } if (params[0]->IsString()) { - if (iSize > 2 && pRuntime->ToBoolean(params[2])) { - sError = JSGetStringFromID(IDS_STRING_JSNOTSUPPORT); - return false; // currently, it doesn't support XFAPicture. - } + // We don't support XFAPicture at the moment. + if (iSize > 2 && pRuntime->ToBoolean(params[2])) + return CJS_Return(JSGetStringFromID(IDS_STRING_JSNOTSUPPORT)); // Convert PDF-style format specifiers to wcsftime specifiers. Remove any // pre-existing %-directives before inserting our own. @@ -213,10 +201,8 @@ bool util::printd(CJS_Runtime* pRuntime, } int iYear = jsDate.GetYear(pRuntime); - if (iYear < 0) { - sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); - return false; - } + if (iYear < 0) + return CJS_Return(JSGetStringFromID(IDS_STRING_JSVALUEERROR)); int iMonth = jsDate.GetMonth(pRuntime); int iDay = jsDate.GetDay(pRuntime); @@ -259,28 +245,21 @@ bool util::printd(CJS_Runtime* pRuntime, wchar_t buf[64] = {}; FXSYS_wcsftime(buf, 64, cFormat.c_str(), &time); cFormat = buf; - vRet = CJS_Value(pRuntime->NewString(cFormat.c_str())); - return true; + return CJS_Return(pRuntime->NewString(cFormat.c_str())); } - sError = JSGetStringFromID(IDS_STRING_JSTYPEERROR); - return false; + return CJS_Return(JSGetStringFromID(IDS_STRING_JSTYPEERROR)); } -bool util::printx(CJS_Runtime* pRuntime, - const std::vector<v8::Local<v8::Value>>& params, - CJS_Value& vRet, - WideString& sError) { - if (params.size() < 2) { - sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); - return false; - } - - vRet = CJS_Value(pRuntime->NewString(printx(pRuntime->ToWideString(params[0]), - pRuntime->ToWideString(params[1])) - .c_str())); +CJS_Return util::printx(CJS_Runtime* pRuntime, + const std::vector<v8::Local<v8::Value>>& params) { + if (params.size() < 2) + return CJS_Return(JSGetStringFromID(IDS_STRING_JSPARAMERROR)); - return true; + return CJS_Return( + pRuntime->NewString(printx(pRuntime->ToWideString(params[0]), + pRuntime->ToWideString(params[1])) + .c_str())); } enum CaseMode { kPreserveCase, kUpperCase, kLowerCase }; @@ -381,47 +360,33 @@ WideString util::printx(const WideString& wsFormat, return wsResult; } -bool util::scand(CJS_Runtime* pRuntime, - const std::vector<v8::Local<v8::Value>>& params, - CJS_Value& vRet, - WideString& sError) { +CJS_Return util::scand(CJS_Runtime* pRuntime, + const std::vector<v8::Local<v8::Value>>& params) { if (params.size() < 2) - return false; + return CJS_Return(false); WideString sFormat = pRuntime->ToWideString(params[0]); WideString sDate = pRuntime->ToWideString(params[1]); double dDate = JS_GetDateTime(); - if (sDate.GetLength() > 0) { + if (sDate.GetLength() > 0) dDate = CJS_PublicMethods::MakeRegularDate(sDate, sFormat, nullptr); - } - - if (!std::isnan(dDate)) { - vRet = CJS_Value(CJS_Date(pRuntime, dDate).ToV8Value()); - } else { - vRet.Set(pRuntime->NewUndefined()); - } - return true; + if (std::isnan(dDate)) + return CJS_Return(pRuntime->NewUndefined()); + return CJS_Return(CJS_Date(pRuntime, dDate).ToV8Value()); } -bool util::byteToChar(CJS_Runtime* pRuntime, - const std::vector<v8::Local<v8::Value>>& params, - CJS_Value& vRet, - WideString& sError) { - if (params.size() < 1) { - sError = JSGetStringFromID(IDS_STRING_JSPARAMERROR); - return false; - } +CJS_Return util::byteToChar(CJS_Runtime* pRuntime, + const std::vector<v8::Local<v8::Value>>& params) { + if (params.size() < 1) + return CJS_Return(JSGetStringFromID(IDS_STRING_JSPARAMERROR)); int arg = pRuntime->ToInt32(params[0]); - if (arg < 0 || arg > 255) { - sError = JSGetStringFromID(IDS_STRING_JSVALUEERROR); - return false; - } + if (arg < 0 || arg > 255) + return CJS_Return(JSGetStringFromID(IDS_STRING_JSVALUEERROR)); WideString wStr(static_cast<wchar_t>(arg)); - vRet = CJS_Value(pRuntime->NewString(wStr.c_str())); - return true; + return CJS_Return(pRuntime->NewString(wStr.c_str())); } // Ensure that sFormat contains at most one well-understood printf formatting |