diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2018-05-17 13:53:52 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-05-17 13:53:52 +0000 |
commit | dc5d88bcebbeeb696b405464e901add55d1efaf7 (patch) | |
tree | 54bc913015ea4d08b9fe46997f25a3153cbc70d7 /fxjs/cjs_event_context.cpp | |
parent | db3c6cefceddf25c25f1205d7b633f09e873bf98 (diff) | |
download | pdfium-dc5d88bcebbeeb696b405464e901add55d1efaf7.tar.xz |
Convert JS execute methods to return Optional<IJS_Runtime::JS_Error>
This CL changes several of the JS execution methods to to return an
Optional<IJS_Runtime::JS_Error> instead of a bool with a WideString
out param.
The IJS_Runtime::JS_Error will contain the line, column and exception message
if an error occurs during execution.
Change-Id: I37785ae6cd133a4c94ad8d25289473600b8a5d19
Reviewed-on: https://pdfium-review.googlesource.com/32614
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'fxjs/cjs_event_context.cpp')
-rw-r--r-- | fxjs/cjs_event_context.cpp | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/fxjs/cjs_event_context.cpp b/fxjs/cjs_event_context.cpp index 195fb1b888..0d9ba34db1 100644 --- a/fxjs/cjs_event_context.cpp +++ b/fxjs/cjs_event_context.cpp @@ -25,15 +25,16 @@ CPDFSDK_FormFillEnvironment* CJS_EventContext::GetFormFillEnv() { return m_pRuntime->GetFormFillEnv(); } -bool CJS_EventContext::RunScript(const WideString& script, WideString* info) { +Optional<IJS_Runtime::JS_Error> CJS_EventContext::RunScript( + const WideString& script) { v8::Isolate::Scope isolate_scope(m_pRuntime->GetIsolate()); v8::HandleScope handle_scope(m_pRuntime->GetIsolate()); v8::Local<v8::Context> context = m_pRuntime->GetV8Context(); v8::Context::Scope context_scope(context); if (m_bBusy) { - *info = JSGetStringFromID(JSMessage::kBusyError); - return false; + return IJS_Runtime::JS_Error(1, 1, + JSGetStringFromID(JSMessage::kBusyError)); } AutoRestorer<bool> restorer(&m_bBusy); @@ -43,23 +44,17 @@ bool CJS_EventContext::RunScript(const WideString& script, WideString* info) { CJS_Runtime::FieldEvent event(m_pEventHandler->TargetName(), m_pEventHandler->EventType()); if (!m_pRuntime->AddEventToSet(event)) { - *info = JSGetStringFromID(JSMessage::kDuplicateEventError); - return false; + return IJS_Runtime::JS_Error( + 1, 1, JSGetStringFromID(JSMessage::kDuplicateEventError)); } - WideString sErrorMessage; - int nRet = 0; + Optional<IJS_Runtime::JS_Error> err; if (script.GetLength() > 0) - nRet = m_pRuntime->ExecuteScript(script.c_str(), &sErrorMessage); - - if (nRet < 0) - *info += sErrorMessage; - else - *info = JSGetStringFromID(JSMessage::kRunSuccess); + err = m_pRuntime->ExecuteScript(script.c_str()); m_pRuntime->RemoveEventFromSet(event); m_pEventHandler->Destroy(); - return nRet >= 0; + return err; } void CJS_EventContext::OnApp_Init() { |