From 8b6acddd1e25dd48582f954ea9e67861dbd4f50f Mon Sep 17 00:00:00 2001 From: dan sinclair Date: Wed, 25 Oct 2017 20:35:19 -0400 Subject: Rename JS_EventHandler This Renames JS_EventHandler to cjs_eventhandler to match the class name. Change-Id: I30c7c4b92051b6d960ac7d8d8620d981f84e2142 Reviewed-on: https://pdfium-review.googlesource.com/16871 Reviewed-by: Tom Sepez Commit-Queue: dsinclair --- BUILD.gn | 4 +- fpdfsdk/javascript/Document.cpp | 2 +- fpdfsdk/javascript/Field.cpp | 2 +- fpdfsdk/javascript/JS_EventHandler.cpp | 653 ------------------------------- fpdfsdk/javascript/JS_EventHandler.h | 197 ---------- fpdfsdk/javascript/PublicMethods.cpp | 2 +- fpdfsdk/javascript/app.cpp | 2 +- fpdfsdk/javascript/cjs_event_context.cpp | 2 +- fpdfsdk/javascript/cjs_eventhandler.cpp | 653 +++++++++++++++++++++++++++++++ fpdfsdk/javascript/cjs_eventhandler.h | 195 +++++++++ fpdfsdk/javascript/cjs_global.cpp | 2 +- fpdfsdk/javascript/cjs_runtime.cpp | 2 +- fpdfsdk/javascript/cjs_runtime.h | 2 +- fpdfsdk/javascript/color.cpp | 2 +- fpdfsdk/javascript/console.cpp | 2 +- fpdfsdk/javascript/event.cpp | 2 +- fpdfsdk/javascript/util.cpp | 2 +- 17 files changed, 862 insertions(+), 864 deletions(-) delete mode 100644 fpdfsdk/javascript/JS_EventHandler.cpp delete mode 100644 fpdfsdk/javascript/JS_EventHandler.h create mode 100644 fpdfsdk/javascript/cjs_eventhandler.cpp create mode 100644 fpdfsdk/javascript/cjs_eventhandler.h diff --git a/BUILD.gn b/BUILD.gn index 7cdd7e210e..572f54eb4a 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -1195,8 +1195,6 @@ static_library("javascript") { "fpdfsdk/javascript/Icon.cpp", "fpdfsdk/javascript/Icon.h", "fpdfsdk/javascript/JS_Define.h", - "fpdfsdk/javascript/JS_EventHandler.cpp", - "fpdfsdk/javascript/JS_EventHandler.h", "fpdfsdk/javascript/JS_GlobalData.cpp", "fpdfsdk/javascript/JS_GlobalData.h", "fpdfsdk/javascript/JS_KeyValue.cpp", @@ -1217,6 +1215,8 @@ static_library("javascript") { "fpdfsdk/javascript/cjs_display.h", "fpdfsdk/javascript/cjs_event_context.cpp", "fpdfsdk/javascript/cjs_event_context.h", + "fpdfsdk/javascript/cjs_eventhandler.cpp", + "fpdfsdk/javascript/cjs_eventhandler.h", "fpdfsdk/javascript/cjs_font.cpp", "fpdfsdk/javascript/cjs_font.h", "fpdfsdk/javascript/cjs_global.cpp", diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp index d72f83822b..e4903a5976 100644 --- a/fpdfsdk/javascript/Document.cpp +++ b/fpdfsdk/javascript/Document.cpp @@ -27,12 +27,12 @@ #include "fpdfsdk/javascript/Field.h" #include "fpdfsdk/javascript/Icon.h" #include "fpdfsdk/javascript/JS_Define.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" #include "fpdfsdk/javascript/JS_Object.h" #include "fpdfsdk/javascript/JS_Value.h" #include "fpdfsdk/javascript/app.h" #include "fpdfsdk/javascript/cjs_annot.h" #include "fpdfsdk/javascript/cjs_event_context.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" #include "fpdfsdk/javascript/cjs_runtime.h" #include "fpdfsdk/javascript/resource.h" #include "third_party/base/numerics/safe_math.h" diff --git a/fpdfsdk/javascript/Field.cpp b/fpdfsdk/javascript/Field.cpp index e79462ff42..1778295249 100644 --- a/fpdfsdk/javascript/Field.cpp +++ b/fpdfsdk/javascript/Field.cpp @@ -22,11 +22,11 @@ #include "fpdfsdk/javascript/Document.h" #include "fpdfsdk/javascript/Icon.h" #include "fpdfsdk/javascript/JS_Define.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" #include "fpdfsdk/javascript/JS_Object.h" #include "fpdfsdk/javascript/JS_Value.h" #include "fpdfsdk/javascript/PublicMethods.h" #include "fpdfsdk/javascript/cjs_event_context.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" #include "fpdfsdk/javascript/cjs_runtime.h" #include "fpdfsdk/javascript/color.h" diff --git a/fpdfsdk/javascript/JS_EventHandler.cpp b/fpdfsdk/javascript/JS_EventHandler.cpp deleted file mode 100644 index 670d43ef7c..0000000000 --- a/fpdfsdk/javascript/JS_EventHandler.cpp +++ /dev/null @@ -1,653 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "fpdfsdk/javascript/JS_EventHandler.h" - -#include "fpdfsdk/javascript/Document.h" -#include "fpdfsdk/javascript/Field.h" -#include "fpdfsdk/javascript/JS_Define.h" -#include "fpdfsdk/javascript/JS_Object.h" -#include "fpdfsdk/javascript/JS_Value.h" -#include "fpdfsdk/javascript/cjs_event_context.h" -#include "fpdfsdk/javascript/cjs_runtime.h" - -CJS_EventHandler::CJS_EventHandler(CJS_EventContext* pContext) - : m_pJSEventContext(pContext), - m_eEventType(JET_UNKNOWN), - m_bValid(false), - m_pWideStrChange(nullptr), - m_nCommitKey(-1), - m_bKeyDown(false), - m_bModifier(false), - m_bShift(false), - m_pISelEnd(nullptr), - m_nSelEndDu(0), - m_pISelStart(nullptr), - m_nSelStartDu(0), - m_bWillCommit(false), - m_pValue(nullptr), - m_bFieldFull(false), - m_pbRc(nullptr), - m_bRcDu(false), - m_pTargetBookMark(nullptr), - m_pTargetFormFillEnv(nullptr), - m_pTargetAnnot(nullptr) {} - -CJS_EventHandler::~CJS_EventHandler() {} - -void CJS_EventHandler::OnApp_Init() { - Initial(JET_APP_INIT); -} - -void CJS_EventHandler::OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& strTargetName) { - Initial(JET_DOC_OPEN); - m_pTargetFormFillEnv.Reset(pFormFillEnv); - m_strTargetName = strTargetName; -} - -void CJS_EventHandler::OnDoc_WillPrint( - CPDFSDK_FormFillEnvironment* pFormFillEnv) { - Initial(JET_DOC_WILLPRINT); - m_pTargetFormFillEnv.Reset(pFormFillEnv); -} - -void CJS_EventHandler::OnDoc_DidPrint( - CPDFSDK_FormFillEnvironment* pFormFillEnv) { - Initial(JET_DOC_DIDPRINT); - m_pTargetFormFillEnv.Reset(pFormFillEnv); -} - -void CJS_EventHandler::OnDoc_WillSave( - CPDFSDK_FormFillEnvironment* pFormFillEnv) { - Initial(JET_DOC_WILLSAVE); - m_pTargetFormFillEnv.Reset(pFormFillEnv); -} - -void CJS_EventHandler::OnDoc_DidSave( - CPDFSDK_FormFillEnvironment* pFormFillEnv) { - Initial(JET_DOC_DIDSAVE); - m_pTargetFormFillEnv.Reset(pFormFillEnv); -} - -void CJS_EventHandler::OnDoc_WillClose( - CPDFSDK_FormFillEnvironment* pFormFillEnv) { - Initial(JET_DOC_WILLCLOSE); - m_pTargetFormFillEnv.Reset(pFormFillEnv); -} - -void CJS_EventHandler::OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) { - Initial(JET_PAGE_OPEN); - m_pTargetFormFillEnv.Reset(pFormFillEnv); -} - -void CJS_EventHandler::OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv) { - Initial(JET_PAGE_CLOSE); - m_pTargetFormFillEnv.Reset(pFormFillEnv); -} - -void CJS_EventHandler::OnPage_InView( - CPDFSDK_FormFillEnvironment* pFormFillEnv) { - Initial(JET_PAGE_INVIEW); - m_pTargetFormFillEnv.Reset(pFormFillEnv); -} - -void CJS_EventHandler::OnPage_OutView( - CPDFSDK_FormFillEnvironment* pFormFillEnv) { - Initial(JET_PAGE_OUTVIEW); - m_pTargetFormFillEnv.Reset(pFormFillEnv); -} - -void CJS_EventHandler::OnField_MouseEnter(bool bModifier, - bool bShift, - CPDF_FormField* pTarget) { - Initial(JET_FIELD_MOUSEENTER); - - m_bModifier = bModifier; - m_bShift = bShift; - - m_strTargetName = pTarget->GetFullName(); -} - -void CJS_EventHandler::OnField_MouseExit(bool bModifier, - bool bShift, - CPDF_FormField* pTarget) { - Initial(JET_FIELD_MOUSEEXIT); - - m_bModifier = bModifier; - m_bShift = bShift; - m_strTargetName = pTarget->GetFullName(); -} - -void CJS_EventHandler::OnField_MouseDown(bool bModifier, - bool bShift, - CPDF_FormField* pTarget) { - Initial(JET_FIELD_MOUSEDOWN); - m_eEventType = JET_FIELD_MOUSEDOWN; - - m_bModifier = bModifier; - m_bShift = bShift; - m_strTargetName = pTarget->GetFullName(); -} - -void CJS_EventHandler::OnField_MouseUp(bool bModifier, - bool bShift, - CPDF_FormField* pTarget) { - Initial(JET_FIELD_MOUSEUP); - - m_bModifier = bModifier; - m_bShift = bShift; - m_strTargetName = pTarget->GetFullName(); -} - -void CJS_EventHandler::OnField_Focus(bool bModifier, - bool bShift, - CPDF_FormField* pTarget, - const WideString& Value) { - Initial(JET_FIELD_FOCUS); - - m_bModifier = bModifier; - m_bShift = bShift; - m_strTargetName = pTarget->GetFullName(); - m_pValue = (WideString*)&Value; -} - -void CJS_EventHandler::OnField_Blur(bool bModifier, - bool bShift, - CPDF_FormField* pTarget, - const WideString& Value) { - Initial(JET_FIELD_BLUR); - - m_bModifier = bModifier; - m_bShift = bShift; - m_strTargetName = pTarget->GetFullName(); - m_pValue = (WideString*)&Value; -} - -void CJS_EventHandler::OnField_Keystroke(WideString& strChange, - const WideString& strChangeEx, - bool KeyDown, - bool bModifier, - int& nSelEnd, - int& nSelStart, - bool bShift, - CPDF_FormField* pTarget, - WideString& Value, - bool bWillCommit, - bool bFieldFull, - bool& bRc) { - Initial(JET_FIELD_KEYSTROKE); - - m_nCommitKey = 0; - m_pWideStrChange = &strChange; - m_WideStrChangeEx = strChangeEx; - m_bKeyDown = KeyDown; - m_bModifier = bModifier; - m_pISelEnd = &nSelEnd; - m_pISelStart = &nSelStart; - m_bShift = bShift; - m_strTargetName = pTarget->GetFullName(); - m_pValue = &Value; - m_bWillCommit = bWillCommit; - m_pbRc = &bRc; - m_bFieldFull = bFieldFull; -} - -void CJS_EventHandler::OnField_Validate(WideString& strChange, - const WideString& strChangeEx, - bool bKeyDown, - bool bModifier, - bool bShift, - CPDF_FormField* pTarget, - WideString& Value, - bool& bRc) { - Initial(JET_FIELD_VALIDATE); - - m_pWideStrChange = &strChange; - m_WideStrChangeEx = strChangeEx; - m_bKeyDown = bKeyDown; - m_bModifier = bModifier; - m_bShift = bShift; - m_strTargetName = pTarget->GetFullName(); - m_pValue = &Value; - m_pbRc = &bRc; -} - -void CJS_EventHandler::OnField_Calculate(CPDF_FormField* pSource, - CPDF_FormField* pTarget, - WideString& Value, - bool& bRc) { - Initial(JET_FIELD_CALCULATE); - - if (pSource) - m_strSourceName = pSource->GetFullName(); - m_strTargetName = pTarget->GetFullName(); - m_pValue = &Value; - m_pbRc = &bRc; -} - -void CJS_EventHandler::OnField_Format(CPDF_FormField* pTarget, - WideString& Value, - bool bWillCommit) { - Initial(JET_FIELD_FORMAT); - - m_nCommitKey = 0; - m_strTargetName = pTarget->GetFullName(); - m_pValue = &Value; - m_bWillCommit = bWillCommit; -} - -void CJS_EventHandler::OnScreen_Focus(bool bModifier, - bool bShift, - CPDFSDK_Annot* pScreen) { - Initial(JET_SCREEN_FOCUS); - - m_bModifier = bModifier; - m_bShift = bShift; - m_pTargetAnnot.Reset(pScreen); -} - -void CJS_EventHandler::OnScreen_Blur(bool bModifier, - bool bShift, - CPDFSDK_Annot* pScreen) { - Initial(JET_SCREEN_BLUR); - - m_bModifier = bModifier; - m_bShift = bShift; - m_pTargetAnnot.Reset(pScreen); -} - -void CJS_EventHandler::OnScreen_Open(bool bModifier, - bool bShift, - CPDFSDK_Annot* pScreen) { - Initial(JET_SCREEN_OPEN); - - m_bModifier = bModifier; - m_bShift = bShift; - m_pTargetAnnot.Reset(pScreen); -} - -void CJS_EventHandler::OnScreen_Close(bool bModifier, - bool bShift, - CPDFSDK_Annot* pScreen) { - Initial(JET_SCREEN_CLOSE); - - m_bModifier = bModifier; - m_bShift = bShift; - m_pTargetAnnot.Reset(pScreen); -} - -void CJS_EventHandler::OnScreen_MouseDown(bool bModifier, - bool bShift, - CPDFSDK_Annot* pScreen) { - Initial(JET_SCREEN_MOUSEDOWN); - - m_bModifier = bModifier; - m_bShift = bShift; - m_pTargetAnnot.Reset(pScreen); -} - -void CJS_EventHandler::OnScreen_MouseUp(bool bModifier, - bool bShift, - CPDFSDK_Annot* pScreen) { - Initial(JET_SCREEN_MOUSEUP); - - m_bModifier = bModifier; - m_bShift = bShift; - m_pTargetAnnot.Reset(pScreen); -} - -void CJS_EventHandler::OnScreen_MouseEnter(bool bModifier, - bool bShift, - CPDFSDK_Annot* pScreen) { - Initial(JET_SCREEN_MOUSEENTER); - - m_bModifier = bModifier; - m_bShift = bShift; - m_pTargetAnnot.Reset(pScreen); -} - -void CJS_EventHandler::OnScreen_MouseExit(bool bModifier, - bool bShift, - CPDFSDK_Annot* pScreen) { - Initial(JET_SCREEN_MOUSEEXIT); - - m_bModifier = bModifier; - m_bShift = bShift; - m_pTargetAnnot.Reset(pScreen); -} - -void CJS_EventHandler::OnScreen_InView(bool bModifier, - bool bShift, - CPDFSDK_Annot* pScreen) { - Initial(JET_SCREEN_INVIEW); - m_bModifier = bModifier; - m_bShift = bShift; - m_pTargetAnnot.Reset(pScreen); -} - -void CJS_EventHandler::OnScreen_OutView(bool bModifier, - bool bShift, - CPDFSDK_Annot* pScreen) { - Initial(JET_SCREEN_OUTVIEW); - m_bModifier = bModifier; - m_bShift = bShift; - m_pTargetAnnot.Reset(pScreen); -} - -void CJS_EventHandler::OnLink_MouseUp( - CPDFSDK_FormFillEnvironment* pTargetFormFillEnv) { - Initial(JET_LINK_MOUSEUP); - m_pTargetFormFillEnv.Reset(pTargetFormFillEnv); -} - -void CJS_EventHandler::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) { - Initial(JET_BOOKMARK_MOUSEUP); - m_pTargetBookMark = pBookMark; -} - -void CJS_EventHandler::OnMenu_Exec( - CPDFSDK_FormFillEnvironment* pTargetFormFillEnv, - const WideString& strTargetName) { - Initial(JET_MENU_EXEC); - m_pTargetFormFillEnv.Reset(pTargetFormFillEnv); - m_strTargetName = strTargetName; -} - -void CJS_EventHandler::OnExternal_Exec() { - Initial(JET_EXTERNAL_EXEC); -} - -void CJS_EventHandler::OnBatchExec( - CPDFSDK_FormFillEnvironment* pTargetFormFillEnv) { - Initial(JET_BATCH_EXEC); - m_pTargetFormFillEnv.Reset(pTargetFormFillEnv); -} - -void CJS_EventHandler::OnConsole_Exec() { - Initial(JET_CONSOLE_EXEC); -} - -void CJS_EventHandler::Initial(JS_EVENT_T type) { - m_eEventType = type; - - m_strTargetName = L""; - m_strSourceName = L""; - m_pWideStrChange = nullptr; - m_WideStrChangeDu = L""; - m_WideStrChangeEx = L""; - m_nCommitKey = -1; - m_bKeyDown = false; - m_bModifier = false; - m_bShift = false; - m_pISelEnd = nullptr; - m_nSelEndDu = 0; - m_pISelStart = nullptr; - m_nSelStartDu = 0; - m_bWillCommit = false; - m_pValue = nullptr; - m_bFieldFull = false; - m_pbRc = nullptr; - m_bRcDu = false; - - m_pTargetBookMark = nullptr; - m_pTargetFormFillEnv.Reset(); - m_pTargetAnnot.Reset(); - - m_bValid = true; -} - -void CJS_EventHandler::Destroy() { - m_bValid = false; -} - -bool CJS_EventHandler::IsValid() { - return m_bValid; -} - -WideString& CJS_EventHandler::Change() { - if (m_pWideStrChange) { - return *m_pWideStrChange; - } - return m_WideStrChangeDu; -} - -WideString CJS_EventHandler::ChangeEx() { - return m_WideStrChangeEx; -} - -int CJS_EventHandler::CommitKey() { - return m_nCommitKey; -} - -bool CJS_EventHandler::FieldFull() { - return m_bFieldFull; -} - -bool CJS_EventHandler::KeyDown() { - return m_bKeyDown; -} - -bool CJS_EventHandler::Modifier() { - return m_bModifier; -} - -const wchar_t* CJS_EventHandler::Name() { - switch (m_eEventType) { - case JET_APP_INIT: - return L"Init"; - case JET_BATCH_EXEC: - return L"Exec"; - case JET_BOOKMARK_MOUSEUP: - return L"Mouse Up"; - case JET_CONSOLE_EXEC: - return L"Exec"; - case JET_DOC_DIDPRINT: - return L"DidPrint"; - case JET_DOC_DIDSAVE: - return L"DidSave"; - case JET_DOC_OPEN: - return L"Open"; - case JET_DOC_WILLCLOSE: - return L"WillClose"; - case JET_DOC_WILLPRINT: - return L"WillPrint"; - case JET_DOC_WILLSAVE: - return L"WillSave"; - case JET_EXTERNAL_EXEC: - return L"Exec"; - case JET_FIELD_FOCUS: - case JET_SCREEN_FOCUS: - return L"Focus"; - case JET_FIELD_BLUR: - case JET_SCREEN_BLUR: - return L"Blur"; - case JET_FIELD_MOUSEDOWN: - case JET_SCREEN_MOUSEDOWN: - return L"Mouse Down"; - case JET_FIELD_MOUSEUP: - case JET_SCREEN_MOUSEUP: - return L"Mouse Up"; - case JET_FIELD_MOUSEENTER: - case JET_SCREEN_MOUSEENTER: - return L"Mouse Enter"; - case JET_FIELD_MOUSEEXIT: - case JET_SCREEN_MOUSEEXIT: - return L"Mouse Exit"; - case JET_FIELD_CALCULATE: - return L"Calculate"; - case JET_FIELD_FORMAT: - return L"Format"; - case JET_FIELD_KEYSTROKE: - return L"Keystroke"; - case JET_FIELD_VALIDATE: - return L"Validate"; - case JET_LINK_MOUSEUP: - return L"Mouse Up"; - case JET_MENU_EXEC: - return L"Exec"; - case JET_PAGE_OPEN: - case JET_SCREEN_OPEN: - return L"Open"; - case JET_PAGE_CLOSE: - case JET_SCREEN_CLOSE: - return L"Close"; - case JET_SCREEN_INVIEW: - case JET_PAGE_INVIEW: - return L"InView"; - case JET_PAGE_OUTVIEW: - case JET_SCREEN_OUTVIEW: - return L"OutView"; - default: - return L""; - } -} - -const wchar_t* CJS_EventHandler::Type() { - switch (m_eEventType) { - case JET_APP_INIT: - return L"App"; - case JET_BATCH_EXEC: - return L"Batch"; - case JET_BOOKMARK_MOUSEUP: - return L"BookMark"; - case JET_CONSOLE_EXEC: - return L"Console"; - case JET_DOC_DIDPRINT: - case JET_DOC_DIDSAVE: - case JET_DOC_OPEN: - case JET_DOC_WILLCLOSE: - case JET_DOC_WILLPRINT: - case JET_DOC_WILLSAVE: - return L"Doc"; - case JET_EXTERNAL_EXEC: - return L"External"; - case JET_FIELD_BLUR: - case JET_FIELD_FOCUS: - case JET_FIELD_MOUSEDOWN: - case JET_FIELD_MOUSEENTER: - case JET_FIELD_MOUSEEXIT: - case JET_FIELD_MOUSEUP: - case JET_FIELD_CALCULATE: - case JET_FIELD_FORMAT: - case JET_FIELD_KEYSTROKE: - case JET_FIELD_VALIDATE: - return L"Field"; - case JET_SCREEN_FOCUS: - case JET_SCREEN_BLUR: - case JET_SCREEN_OPEN: - case JET_SCREEN_CLOSE: - case JET_SCREEN_MOUSEDOWN: - case JET_SCREEN_MOUSEUP: - case JET_SCREEN_MOUSEENTER: - case JET_SCREEN_MOUSEEXIT: - case JET_SCREEN_INVIEW: - case JET_SCREEN_OUTVIEW: - return L"Screen"; - case JET_LINK_MOUSEUP: - return L"Link"; - case JET_MENU_EXEC: - return L"Menu"; - case JET_PAGE_OPEN: - case JET_PAGE_CLOSE: - case JET_PAGE_INVIEW: - case JET_PAGE_OUTVIEW: - return L"Page"; - default: - return L""; - } -} - -bool& CJS_EventHandler::Rc() { - if (m_pbRc) { - return *m_pbRc; - } - return m_bRcDu; -} - -int& CJS_EventHandler::SelEnd() { - if (m_pISelEnd) { - return *m_pISelEnd; - } - return m_nSelEndDu; -} - -int& CJS_EventHandler::SelStart() { - if (m_pISelStart) { - return *m_pISelStart; - } - return m_nSelStartDu; -} - -bool CJS_EventHandler::Shift() { - return m_bShift; -} - -Field* CJS_EventHandler::Source() { - CJS_Runtime* pRuntime = m_pJSEventContext->GetJSRuntime(); - v8::Local pDocObj = - pRuntime->NewFxDynamicObj(CJS_Document::g_nObjDefnID); - if (pDocObj.IsEmpty()) - return nullptr; - - v8::Local pFieldObj = - pRuntime->NewFxDynamicObj(CJS_Field::g_nObjDefnID); - if (pFieldObj.IsEmpty()) - return nullptr; - - CJS_Document* pJSDocument = - static_cast(pRuntime->GetObjectPrivate(pDocObj)); - CJS_Field* pJSField = - static_cast(pRuntime->GetObjectPrivate(pFieldObj)); - - Document* pDocument = static_cast(pJSDocument->GetEmbedObject()); - pDocument->SetFormFillEnv(m_pTargetFormFillEnv - ? m_pTargetFormFillEnv.Get() - : m_pJSEventContext->GetFormFillEnv()); - - Field* pField = static_cast(pJSField->GetEmbedObject()); - pField->AttachField(pDocument, m_strSourceName); - return pField; -} - -Field* CJS_EventHandler::Target_Field() { - CJS_Runtime* pRuntime = m_pJSEventContext->GetJSRuntime(); - v8::Local pDocObj = - pRuntime->NewFxDynamicObj(CJS_Document::g_nObjDefnID); - if (pDocObj.IsEmpty()) - return nullptr; - - v8::Local pFieldObj = - pRuntime->NewFxDynamicObj(CJS_Field::g_nObjDefnID); - if (pFieldObj.IsEmpty()) - return nullptr; - - CJS_Document* pJSDocument = - static_cast(pRuntime->GetObjectPrivate(pDocObj)); - CJS_Field* pJSField = - static_cast(pRuntime->GetObjectPrivate(pFieldObj)); - - Document* pDocument = static_cast(pJSDocument->GetEmbedObject()); - pDocument->SetFormFillEnv(m_pTargetFormFillEnv - ? m_pTargetFormFillEnv.Get() - : m_pJSEventContext->GetFormFillEnv()); - - Field* pField = static_cast(pJSField->GetEmbedObject()); - pField->AttachField(pDocument, m_strTargetName); - return pField; -} - -WideString& CJS_EventHandler::Value() { - return *m_pValue; -} - -bool CJS_EventHandler::WillCommit() { - return m_bWillCommit; -} - -WideString CJS_EventHandler::TargetName() { - return m_strTargetName; -} diff --git a/fpdfsdk/javascript/JS_EventHandler.h b/fpdfsdk/javascript/JS_EventHandler.h deleted file mode 100644 index 6f10ba596c..0000000000 --- a/fpdfsdk/javascript/JS_EventHandler.h +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef FPDFSDK_JAVASCRIPT_JS_EVENTHANDLER_H_ -#define FPDFSDK_JAVASCRIPT_JS_EVENTHANDLER_H_ - -#include "core/fxcrt/fx_string.h" -#include "core/fxcrt/fx_system.h" -#include "core/fxcrt/unowned_ptr.h" -#include "fpdfsdk/cpdfsdk_formfillenvironment.h" - -class CJS_EventContext; -class CPDFSDK_Annot; -class CPDF_Bookmark; -class CPDF_FormField; -class Field; - -enum JS_EVENT_T { - JET_UNKNOWN, - JET_APP_INIT, - JET_DOC_OPEN, - JET_DOC_WILLPRINT, - JET_DOC_DIDPRINT, - JET_DOC_WILLSAVE, - JET_DOC_DIDSAVE, - JET_DOC_WILLCLOSE, - JET_PAGE_OPEN, - JET_PAGE_CLOSE, - JET_PAGE_INVIEW, - JET_PAGE_OUTVIEW, - JET_FIELD_MOUSEDOWN, - JET_FIELD_MOUSEUP, - JET_FIELD_MOUSEENTER, - JET_FIELD_MOUSEEXIT, - JET_FIELD_FOCUS, - JET_FIELD_BLUR, - JET_FIELD_KEYSTROKE, - JET_FIELD_VALIDATE, - JET_FIELD_CALCULATE, - JET_FIELD_FORMAT, - JET_SCREEN_FOCUS, - JET_SCREEN_BLUR, - JET_SCREEN_OPEN, - JET_SCREEN_CLOSE, - JET_SCREEN_MOUSEDOWN, - JET_SCREEN_MOUSEUP, - JET_SCREEN_MOUSEENTER, - JET_SCREEN_MOUSEEXIT, - JET_SCREEN_INVIEW, - JET_SCREEN_OUTVIEW, - JET_BATCH_EXEC, - JET_MENU_EXEC, - JET_CONSOLE_EXEC, - JET_EXTERNAL_EXEC, - JET_BOOKMARK_MOUSEUP, - JET_LINK_MOUSEUP -}; - -class CJS_EventHandler { - public: - explicit CJS_EventHandler(CJS_EventContext* pContext); - virtual ~CJS_EventHandler(); - - void OnApp_Init(); - - void OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& strTargetName); - void OnDoc_WillPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv); - void OnDoc_DidPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv); - void OnDoc_WillSave(CPDFSDK_FormFillEnvironment* pFormFillEnv); - void OnDoc_DidSave(CPDFSDK_FormFillEnvironment* pFormFillEnv); - void OnDoc_WillClose(CPDFSDK_FormFillEnvironment* pFormFillEnv); - - void OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv); - void OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv); - void OnPage_InView(CPDFSDK_FormFillEnvironment* pFormFillEnv); - void OnPage_OutView(CPDFSDK_FormFillEnvironment* pFormFillEnv); - - void OnField_Calculate(CPDF_FormField* pSource, - CPDF_FormField* pTarget, - WideString& Value, - bool& bRc); - void OnField_Format(CPDF_FormField* pTarget, - WideString& Value, - bool bWillCommit); - void OnField_Keystroke(WideString& strChange, - const WideString& strChangeEx, - bool KeyDown, - bool bModifier, - int& nSelEnd, - int& nSelStart, - bool bShift, - CPDF_FormField* pTarget, - WideString& Value, - bool bWillCommit, - bool bFieldFull, - bool& bRc); - void OnField_Validate(WideString& strChange, - const WideString& strChangeEx, - bool bKeyDown, - bool bModifier, - bool bShift, - CPDF_FormField* pTarget, - WideString& Value, - bool& bRc); - - void OnField_MouseDown(bool bModifier, bool bShift, CPDF_FormField* pTarget); - void OnField_MouseEnter(bool bModifier, bool bShift, CPDF_FormField* pTarget); - void OnField_MouseExit(bool bModifier, bool bShift, CPDF_FormField* pTarget); - void OnField_MouseUp(bool bModifier, bool bShift, CPDF_FormField* pTarget); - void OnField_Blur(bool bModifier, - bool bShift, - CPDF_FormField* pTarget, - const WideString& Value); - void OnField_Focus(bool bModifier, - bool bShift, - CPDF_FormField* pTarget, - const WideString& Value); - - void OnScreen_Focus(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); - void OnScreen_Blur(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); - void OnScreen_Open(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); - void OnScreen_Close(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); - void OnScreen_MouseDown(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); - void OnScreen_MouseUp(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); - void OnScreen_MouseEnter(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); - void OnScreen_MouseExit(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); - void OnScreen_InView(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); - void OnScreen_OutView(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); - - void OnBookmark_MouseUp(CPDF_Bookmark* pBookMark); - void OnLink_MouseUp(CPDFSDK_FormFillEnvironment* pFormFillEnv); - - void OnMenu_Exec(CPDFSDK_FormFillEnvironment* pFormFillEnv, - const WideString& strTargetName); - void OnBatchExec(CPDFSDK_FormFillEnvironment* pFormFillEnv); - void OnConsole_Exec(); - void OnExternal_Exec(); - - public: - void Initial(JS_EVENT_T type); - void Destroy(); - bool IsValid(); - - WideString& Change(); - WideString ChangeEx(); - int CommitKey(); - bool FieldFull(); - bool KeyDown(); - bool Modifier(); - const wchar_t* Name(); - const wchar_t* Type(); - bool& Rc(); - int& SelEnd(); - int& SelStart(); - bool Shift(); - Field* Source(); - Field* Target_Field(); - WideString& Value(); - bool WillCommit(); - WideString TargetName(); - - JS_EVENT_T EventType() { return m_eEventType; } - - public: - UnownedPtr const m_pJSEventContext; - JS_EVENT_T m_eEventType; - bool m_bValid; - - WideString m_strTargetName; - WideString m_strSourceName; - UnownedPtr m_pWideStrChange; - WideString m_WideStrChangeDu; - WideString m_WideStrChangeEx; - int m_nCommitKey; - bool m_bKeyDown; - bool m_bModifier; - bool m_bShift; - int* m_pISelEnd; - int m_nSelEndDu; - int* m_pISelStart; - int m_nSelStartDu; - bool m_bWillCommit; - UnownedPtr m_pValue; - bool m_bFieldFull; - bool* m_pbRc; - bool m_bRcDu; - - UnownedPtr m_pTargetBookMark; - CPDFSDK_FormFillEnvironment::ObservedPtr m_pTargetFormFillEnv; - CPDFSDK_Annot::ObservedPtr m_pTargetAnnot; -}; - -#endif // FPDFSDK_JAVASCRIPT_JS_EVENTHANDLER_H_ diff --git a/fpdfsdk/javascript/PublicMethods.cpp b/fpdfsdk/javascript/PublicMethods.cpp index 1cf63dc298..ed74c538cf 100644 --- a/fpdfsdk/javascript/PublicMethods.cpp +++ b/fpdfsdk/javascript/PublicMethods.cpp @@ -21,10 +21,10 @@ #include "fpdfsdk/cpdfsdk_interform.h" #include "fpdfsdk/javascript/Field.h" #include "fpdfsdk/javascript/JS_Define.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" #include "fpdfsdk/javascript/JS_Object.h" #include "fpdfsdk/javascript/JS_Value.h" #include "fpdfsdk/javascript/cjs_event_context.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" #include "fpdfsdk/javascript/cjs_runtime.h" #include "fpdfsdk/javascript/color.h" #include "fpdfsdk/javascript/resource.h" diff --git a/fpdfsdk/javascript/app.cpp b/fpdfsdk/javascript/app.cpp index 79e4c588df..e65ec2d0b6 100644 --- a/fpdfsdk/javascript/app.cpp +++ b/fpdfsdk/javascript/app.cpp @@ -14,10 +14,10 @@ #include "fpdfsdk/cpdfsdk_interform.h" #include "fpdfsdk/javascript/Document.h" #include "fpdfsdk/javascript/JS_Define.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" #include "fpdfsdk/javascript/JS_Object.h" #include "fpdfsdk/javascript/JS_Value.h" #include "fpdfsdk/javascript/cjs_event_context.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" #include "fpdfsdk/javascript/cjs_runtime.h" #include "fpdfsdk/javascript/resource.h" #include "third_party/base/stl_util.h" diff --git a/fpdfsdk/javascript/cjs_event_context.cpp b/fpdfsdk/javascript/cjs_event_context.cpp index bf6b337a70..e02149d176 100644 --- a/fpdfsdk/javascript/cjs_event_context.cpp +++ b/fpdfsdk/javascript/cjs_event_context.cpp @@ -7,7 +7,7 @@ #include "fpdfsdk/javascript/cjs_event_context.h" #include "core/fxcrt/autorestorer.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" #include "fpdfsdk/javascript/cjs_runtime.h" #include "fpdfsdk/javascript/resource.h" diff --git a/fpdfsdk/javascript/cjs_eventhandler.cpp b/fpdfsdk/javascript/cjs_eventhandler.cpp new file mode 100644 index 0000000000..03d181be62 --- /dev/null +++ b/fpdfsdk/javascript/cjs_eventhandler.cpp @@ -0,0 +1,653 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "fpdfsdk/javascript/cjs_eventhandler.h" + +#include "fpdfsdk/javascript/Document.h" +#include "fpdfsdk/javascript/Field.h" +#include "fpdfsdk/javascript/JS_Define.h" +#include "fpdfsdk/javascript/JS_Object.h" +#include "fpdfsdk/javascript/JS_Value.h" +#include "fpdfsdk/javascript/cjs_event_context.h" +#include "fpdfsdk/javascript/cjs_runtime.h" + +CJS_EventHandler::CJS_EventHandler(CJS_EventContext* pContext) + : m_pJSEventContext(pContext), + m_eEventType(JET_UNKNOWN), + m_bValid(false), + m_pWideStrChange(nullptr), + m_nCommitKey(-1), + m_bKeyDown(false), + m_bModifier(false), + m_bShift(false), + m_pISelEnd(nullptr), + m_nSelEndDu(0), + m_pISelStart(nullptr), + m_nSelStartDu(0), + m_bWillCommit(false), + m_pValue(nullptr), + m_bFieldFull(false), + m_pbRc(nullptr), + m_bRcDu(false), + m_pTargetBookMark(nullptr), + m_pTargetFormFillEnv(nullptr), + m_pTargetAnnot(nullptr) {} + +CJS_EventHandler::~CJS_EventHandler() {} + +void CJS_EventHandler::OnApp_Init() { + Initial(JET_APP_INIT); +} + +void CJS_EventHandler::OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& strTargetName) { + Initial(JET_DOC_OPEN); + m_pTargetFormFillEnv.Reset(pFormFillEnv); + m_strTargetName = strTargetName; +} + +void CJS_EventHandler::OnDoc_WillPrint( + CPDFSDK_FormFillEnvironment* pFormFillEnv) { + Initial(JET_DOC_WILLPRINT); + m_pTargetFormFillEnv.Reset(pFormFillEnv); +} + +void CJS_EventHandler::OnDoc_DidPrint( + CPDFSDK_FormFillEnvironment* pFormFillEnv) { + Initial(JET_DOC_DIDPRINT); + m_pTargetFormFillEnv.Reset(pFormFillEnv); +} + +void CJS_EventHandler::OnDoc_WillSave( + CPDFSDK_FormFillEnvironment* pFormFillEnv) { + Initial(JET_DOC_WILLSAVE); + m_pTargetFormFillEnv.Reset(pFormFillEnv); +} + +void CJS_EventHandler::OnDoc_DidSave( + CPDFSDK_FormFillEnvironment* pFormFillEnv) { + Initial(JET_DOC_DIDSAVE); + m_pTargetFormFillEnv.Reset(pFormFillEnv); +} + +void CJS_EventHandler::OnDoc_WillClose( + CPDFSDK_FormFillEnvironment* pFormFillEnv) { + Initial(JET_DOC_WILLCLOSE); + m_pTargetFormFillEnv.Reset(pFormFillEnv); +} + +void CJS_EventHandler::OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv) { + Initial(JET_PAGE_OPEN); + m_pTargetFormFillEnv.Reset(pFormFillEnv); +} + +void CJS_EventHandler::OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv) { + Initial(JET_PAGE_CLOSE); + m_pTargetFormFillEnv.Reset(pFormFillEnv); +} + +void CJS_EventHandler::OnPage_InView( + CPDFSDK_FormFillEnvironment* pFormFillEnv) { + Initial(JET_PAGE_INVIEW); + m_pTargetFormFillEnv.Reset(pFormFillEnv); +} + +void CJS_EventHandler::OnPage_OutView( + CPDFSDK_FormFillEnvironment* pFormFillEnv) { + Initial(JET_PAGE_OUTVIEW); + m_pTargetFormFillEnv.Reset(pFormFillEnv); +} + +void CJS_EventHandler::OnField_MouseEnter(bool bModifier, + bool bShift, + CPDF_FormField* pTarget) { + Initial(JET_FIELD_MOUSEENTER); + + m_bModifier = bModifier; + m_bShift = bShift; + + m_strTargetName = pTarget->GetFullName(); +} + +void CJS_EventHandler::OnField_MouseExit(bool bModifier, + bool bShift, + CPDF_FormField* pTarget) { + Initial(JET_FIELD_MOUSEEXIT); + + m_bModifier = bModifier; + m_bShift = bShift; + m_strTargetName = pTarget->GetFullName(); +} + +void CJS_EventHandler::OnField_MouseDown(bool bModifier, + bool bShift, + CPDF_FormField* pTarget) { + Initial(JET_FIELD_MOUSEDOWN); + m_eEventType = JET_FIELD_MOUSEDOWN; + + m_bModifier = bModifier; + m_bShift = bShift; + m_strTargetName = pTarget->GetFullName(); +} + +void CJS_EventHandler::OnField_MouseUp(bool bModifier, + bool bShift, + CPDF_FormField* pTarget) { + Initial(JET_FIELD_MOUSEUP); + + m_bModifier = bModifier; + m_bShift = bShift; + m_strTargetName = pTarget->GetFullName(); +} + +void CJS_EventHandler::OnField_Focus(bool bModifier, + bool bShift, + CPDF_FormField* pTarget, + const WideString& Value) { + Initial(JET_FIELD_FOCUS); + + m_bModifier = bModifier; + m_bShift = bShift; + m_strTargetName = pTarget->GetFullName(); + m_pValue = (WideString*)&Value; +} + +void CJS_EventHandler::OnField_Blur(bool bModifier, + bool bShift, + CPDF_FormField* pTarget, + const WideString& Value) { + Initial(JET_FIELD_BLUR); + + m_bModifier = bModifier; + m_bShift = bShift; + m_strTargetName = pTarget->GetFullName(); + m_pValue = (WideString*)&Value; +} + +void CJS_EventHandler::OnField_Keystroke(WideString& strChange, + const WideString& strChangeEx, + bool KeyDown, + bool bModifier, + int& nSelEnd, + int& nSelStart, + bool bShift, + CPDF_FormField* pTarget, + WideString& Value, + bool bWillCommit, + bool bFieldFull, + bool& bRc) { + Initial(JET_FIELD_KEYSTROKE); + + m_nCommitKey = 0; + m_pWideStrChange = &strChange; + m_WideStrChangeEx = strChangeEx; + m_bKeyDown = KeyDown; + m_bModifier = bModifier; + m_pISelEnd = &nSelEnd; + m_pISelStart = &nSelStart; + m_bShift = bShift; + m_strTargetName = pTarget->GetFullName(); + m_pValue = &Value; + m_bWillCommit = bWillCommit; + m_pbRc = &bRc; + m_bFieldFull = bFieldFull; +} + +void CJS_EventHandler::OnField_Validate(WideString& strChange, + const WideString& strChangeEx, + bool bKeyDown, + bool bModifier, + bool bShift, + CPDF_FormField* pTarget, + WideString& Value, + bool& bRc) { + Initial(JET_FIELD_VALIDATE); + + m_pWideStrChange = &strChange; + m_WideStrChangeEx = strChangeEx; + m_bKeyDown = bKeyDown; + m_bModifier = bModifier; + m_bShift = bShift; + m_strTargetName = pTarget->GetFullName(); + m_pValue = &Value; + m_pbRc = &bRc; +} + +void CJS_EventHandler::OnField_Calculate(CPDF_FormField* pSource, + CPDF_FormField* pTarget, + WideString& Value, + bool& bRc) { + Initial(JET_FIELD_CALCULATE); + + if (pSource) + m_strSourceName = pSource->GetFullName(); + m_strTargetName = pTarget->GetFullName(); + m_pValue = &Value; + m_pbRc = &bRc; +} + +void CJS_EventHandler::OnField_Format(CPDF_FormField* pTarget, + WideString& Value, + bool bWillCommit) { + Initial(JET_FIELD_FORMAT); + + m_nCommitKey = 0; + m_strTargetName = pTarget->GetFullName(); + m_pValue = &Value; + m_bWillCommit = bWillCommit; +} + +void CJS_EventHandler::OnScreen_Focus(bool bModifier, + bool bShift, + CPDFSDK_Annot* pScreen) { + Initial(JET_SCREEN_FOCUS); + + m_bModifier = bModifier; + m_bShift = bShift; + m_pTargetAnnot.Reset(pScreen); +} + +void CJS_EventHandler::OnScreen_Blur(bool bModifier, + bool bShift, + CPDFSDK_Annot* pScreen) { + Initial(JET_SCREEN_BLUR); + + m_bModifier = bModifier; + m_bShift = bShift; + m_pTargetAnnot.Reset(pScreen); +} + +void CJS_EventHandler::OnScreen_Open(bool bModifier, + bool bShift, + CPDFSDK_Annot* pScreen) { + Initial(JET_SCREEN_OPEN); + + m_bModifier = bModifier; + m_bShift = bShift; + m_pTargetAnnot.Reset(pScreen); +} + +void CJS_EventHandler::OnScreen_Close(bool bModifier, + bool bShift, + CPDFSDK_Annot* pScreen) { + Initial(JET_SCREEN_CLOSE); + + m_bModifier = bModifier; + m_bShift = bShift; + m_pTargetAnnot.Reset(pScreen); +} + +void CJS_EventHandler::OnScreen_MouseDown(bool bModifier, + bool bShift, + CPDFSDK_Annot* pScreen) { + Initial(JET_SCREEN_MOUSEDOWN); + + m_bModifier = bModifier; + m_bShift = bShift; + m_pTargetAnnot.Reset(pScreen); +} + +void CJS_EventHandler::OnScreen_MouseUp(bool bModifier, + bool bShift, + CPDFSDK_Annot* pScreen) { + Initial(JET_SCREEN_MOUSEUP); + + m_bModifier = bModifier; + m_bShift = bShift; + m_pTargetAnnot.Reset(pScreen); +} + +void CJS_EventHandler::OnScreen_MouseEnter(bool bModifier, + bool bShift, + CPDFSDK_Annot* pScreen) { + Initial(JET_SCREEN_MOUSEENTER); + + m_bModifier = bModifier; + m_bShift = bShift; + m_pTargetAnnot.Reset(pScreen); +} + +void CJS_EventHandler::OnScreen_MouseExit(bool bModifier, + bool bShift, + CPDFSDK_Annot* pScreen) { + Initial(JET_SCREEN_MOUSEEXIT); + + m_bModifier = bModifier; + m_bShift = bShift; + m_pTargetAnnot.Reset(pScreen); +} + +void CJS_EventHandler::OnScreen_InView(bool bModifier, + bool bShift, + CPDFSDK_Annot* pScreen) { + Initial(JET_SCREEN_INVIEW); + m_bModifier = bModifier; + m_bShift = bShift; + m_pTargetAnnot.Reset(pScreen); +} + +void CJS_EventHandler::OnScreen_OutView(bool bModifier, + bool bShift, + CPDFSDK_Annot* pScreen) { + Initial(JET_SCREEN_OUTVIEW); + m_bModifier = bModifier; + m_bShift = bShift; + m_pTargetAnnot.Reset(pScreen); +} + +void CJS_EventHandler::OnLink_MouseUp( + CPDFSDK_FormFillEnvironment* pTargetFormFillEnv) { + Initial(JET_LINK_MOUSEUP); + m_pTargetFormFillEnv.Reset(pTargetFormFillEnv); +} + +void CJS_EventHandler::OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) { + Initial(JET_BOOKMARK_MOUSEUP); + m_pTargetBookMark = pBookMark; +} + +void CJS_EventHandler::OnMenu_Exec( + CPDFSDK_FormFillEnvironment* pTargetFormFillEnv, + const WideString& strTargetName) { + Initial(JET_MENU_EXEC); + m_pTargetFormFillEnv.Reset(pTargetFormFillEnv); + m_strTargetName = strTargetName; +} + +void CJS_EventHandler::OnExternal_Exec() { + Initial(JET_EXTERNAL_EXEC); +} + +void CJS_EventHandler::OnBatchExec( + CPDFSDK_FormFillEnvironment* pTargetFormFillEnv) { + Initial(JET_BATCH_EXEC); + m_pTargetFormFillEnv.Reset(pTargetFormFillEnv); +} + +void CJS_EventHandler::OnConsole_Exec() { + Initial(JET_CONSOLE_EXEC); +} + +void CJS_EventHandler::Initial(JS_EVENT_T type) { + m_eEventType = type; + + m_strTargetName = L""; + m_strSourceName = L""; + m_pWideStrChange = nullptr; + m_WideStrChangeDu = L""; + m_WideStrChangeEx = L""; + m_nCommitKey = -1; + m_bKeyDown = false; + m_bModifier = false; + m_bShift = false; + m_pISelEnd = nullptr; + m_nSelEndDu = 0; + m_pISelStart = nullptr; + m_nSelStartDu = 0; + m_bWillCommit = false; + m_pValue = nullptr; + m_bFieldFull = false; + m_pbRc = nullptr; + m_bRcDu = false; + + m_pTargetBookMark = nullptr; + m_pTargetFormFillEnv.Reset(); + m_pTargetAnnot.Reset(); + + m_bValid = true; +} + +void CJS_EventHandler::Destroy() { + m_bValid = false; +} + +bool CJS_EventHandler::IsValid() { + return m_bValid; +} + +WideString& CJS_EventHandler::Change() { + if (m_pWideStrChange) { + return *m_pWideStrChange; + } + return m_WideStrChangeDu; +} + +WideString CJS_EventHandler::ChangeEx() { + return m_WideStrChangeEx; +} + +int CJS_EventHandler::CommitKey() { + return m_nCommitKey; +} + +bool CJS_EventHandler::FieldFull() { + return m_bFieldFull; +} + +bool CJS_EventHandler::KeyDown() { + return m_bKeyDown; +} + +bool CJS_EventHandler::Modifier() { + return m_bModifier; +} + +const wchar_t* CJS_EventHandler::Name() { + switch (m_eEventType) { + case JET_APP_INIT: + return L"Init"; + case JET_BATCH_EXEC: + return L"Exec"; + case JET_BOOKMARK_MOUSEUP: + return L"Mouse Up"; + case JET_CONSOLE_EXEC: + return L"Exec"; + case JET_DOC_DIDPRINT: + return L"DidPrint"; + case JET_DOC_DIDSAVE: + return L"DidSave"; + case JET_DOC_OPEN: + return L"Open"; + case JET_DOC_WILLCLOSE: + return L"WillClose"; + case JET_DOC_WILLPRINT: + return L"WillPrint"; + case JET_DOC_WILLSAVE: + return L"WillSave"; + case JET_EXTERNAL_EXEC: + return L"Exec"; + case JET_FIELD_FOCUS: + case JET_SCREEN_FOCUS: + return L"Focus"; + case JET_FIELD_BLUR: + case JET_SCREEN_BLUR: + return L"Blur"; + case JET_FIELD_MOUSEDOWN: + case JET_SCREEN_MOUSEDOWN: + return L"Mouse Down"; + case JET_FIELD_MOUSEUP: + case JET_SCREEN_MOUSEUP: + return L"Mouse Up"; + case JET_FIELD_MOUSEENTER: + case JET_SCREEN_MOUSEENTER: + return L"Mouse Enter"; + case JET_FIELD_MOUSEEXIT: + case JET_SCREEN_MOUSEEXIT: + return L"Mouse Exit"; + case JET_FIELD_CALCULATE: + return L"Calculate"; + case JET_FIELD_FORMAT: + return L"Format"; + case JET_FIELD_KEYSTROKE: + return L"Keystroke"; + case JET_FIELD_VALIDATE: + return L"Validate"; + case JET_LINK_MOUSEUP: + return L"Mouse Up"; + case JET_MENU_EXEC: + return L"Exec"; + case JET_PAGE_OPEN: + case JET_SCREEN_OPEN: + return L"Open"; + case JET_PAGE_CLOSE: + case JET_SCREEN_CLOSE: + return L"Close"; + case JET_SCREEN_INVIEW: + case JET_PAGE_INVIEW: + return L"InView"; + case JET_PAGE_OUTVIEW: + case JET_SCREEN_OUTVIEW: + return L"OutView"; + default: + return L""; + } +} + +const wchar_t* CJS_EventHandler::Type() { + switch (m_eEventType) { + case JET_APP_INIT: + return L"App"; + case JET_BATCH_EXEC: + return L"Batch"; + case JET_BOOKMARK_MOUSEUP: + return L"BookMark"; + case JET_CONSOLE_EXEC: + return L"Console"; + case JET_DOC_DIDPRINT: + case JET_DOC_DIDSAVE: + case JET_DOC_OPEN: + case JET_DOC_WILLCLOSE: + case JET_DOC_WILLPRINT: + case JET_DOC_WILLSAVE: + return L"Doc"; + case JET_EXTERNAL_EXEC: + return L"External"; + case JET_FIELD_BLUR: + case JET_FIELD_FOCUS: + case JET_FIELD_MOUSEDOWN: + case JET_FIELD_MOUSEENTER: + case JET_FIELD_MOUSEEXIT: + case JET_FIELD_MOUSEUP: + case JET_FIELD_CALCULATE: + case JET_FIELD_FORMAT: + case JET_FIELD_KEYSTROKE: + case JET_FIELD_VALIDATE: + return L"Field"; + case JET_SCREEN_FOCUS: + case JET_SCREEN_BLUR: + case JET_SCREEN_OPEN: + case JET_SCREEN_CLOSE: + case JET_SCREEN_MOUSEDOWN: + case JET_SCREEN_MOUSEUP: + case JET_SCREEN_MOUSEENTER: + case JET_SCREEN_MOUSEEXIT: + case JET_SCREEN_INVIEW: + case JET_SCREEN_OUTVIEW: + return L"Screen"; + case JET_LINK_MOUSEUP: + return L"Link"; + case JET_MENU_EXEC: + return L"Menu"; + case JET_PAGE_OPEN: + case JET_PAGE_CLOSE: + case JET_PAGE_INVIEW: + case JET_PAGE_OUTVIEW: + return L"Page"; + default: + return L""; + } +} + +bool& CJS_EventHandler::Rc() { + if (m_pbRc) { + return *m_pbRc; + } + return m_bRcDu; +} + +int& CJS_EventHandler::SelEnd() { + if (m_pISelEnd) { + return *m_pISelEnd; + } + return m_nSelEndDu; +} + +int& CJS_EventHandler::SelStart() { + if (m_pISelStart) { + return *m_pISelStart; + } + return m_nSelStartDu; +} + +bool CJS_EventHandler::Shift() { + return m_bShift; +} + +Field* CJS_EventHandler::Source() { + CJS_Runtime* pRuntime = m_pJSEventContext->GetJSRuntime(); + v8::Local pDocObj = + pRuntime->NewFxDynamicObj(CJS_Document::g_nObjDefnID); + if (pDocObj.IsEmpty()) + return nullptr; + + v8::Local pFieldObj = + pRuntime->NewFxDynamicObj(CJS_Field::g_nObjDefnID); + if (pFieldObj.IsEmpty()) + return nullptr; + + CJS_Document* pJSDocument = + static_cast(pRuntime->GetObjectPrivate(pDocObj)); + CJS_Field* pJSField = + static_cast(pRuntime->GetObjectPrivate(pFieldObj)); + + Document* pDocument = static_cast(pJSDocument->GetEmbedObject()); + pDocument->SetFormFillEnv(m_pTargetFormFillEnv + ? m_pTargetFormFillEnv.Get() + : m_pJSEventContext->GetFormFillEnv()); + + Field* pField = static_cast(pJSField->GetEmbedObject()); + pField->AttachField(pDocument, m_strSourceName); + return pField; +} + +Field* CJS_EventHandler::Target_Field() { + CJS_Runtime* pRuntime = m_pJSEventContext->GetJSRuntime(); + v8::Local pDocObj = + pRuntime->NewFxDynamicObj(CJS_Document::g_nObjDefnID); + if (pDocObj.IsEmpty()) + return nullptr; + + v8::Local pFieldObj = + pRuntime->NewFxDynamicObj(CJS_Field::g_nObjDefnID); + if (pFieldObj.IsEmpty()) + return nullptr; + + CJS_Document* pJSDocument = + static_cast(pRuntime->GetObjectPrivate(pDocObj)); + CJS_Field* pJSField = + static_cast(pRuntime->GetObjectPrivate(pFieldObj)); + + Document* pDocument = static_cast(pJSDocument->GetEmbedObject()); + pDocument->SetFormFillEnv(m_pTargetFormFillEnv + ? m_pTargetFormFillEnv.Get() + : m_pJSEventContext->GetFormFillEnv()); + + Field* pField = static_cast(pJSField->GetEmbedObject()); + pField->AttachField(pDocument, m_strTargetName); + return pField; +} + +WideString& CJS_EventHandler::Value() { + return *m_pValue; +} + +bool CJS_EventHandler::WillCommit() { + return m_bWillCommit; +} + +WideString CJS_EventHandler::TargetName() { + return m_strTargetName; +} diff --git a/fpdfsdk/javascript/cjs_eventhandler.h b/fpdfsdk/javascript/cjs_eventhandler.h new file mode 100644 index 0000000000..86e017772c --- /dev/null +++ b/fpdfsdk/javascript/cjs_eventhandler.h @@ -0,0 +1,195 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef FPDFSDK_JAVASCRIPT_CJS_EVENTHANDLER_H_ +#define FPDFSDK_JAVASCRIPT_CJS_EVENTHANDLER_H_ + +#include "core/fxcrt/fx_string.h" +#include "core/fxcrt/fx_system.h" +#include "core/fxcrt/unowned_ptr.h" +#include "fpdfsdk/cpdfsdk_formfillenvironment.h" + +class CJS_EventContext; +class CPDFSDK_Annot; +class CPDF_Bookmark; +class CPDF_FormField; +class Field; + +enum JS_EVENT_T { + JET_UNKNOWN, + JET_APP_INIT, + JET_DOC_OPEN, + JET_DOC_WILLPRINT, + JET_DOC_DIDPRINT, + JET_DOC_WILLSAVE, + JET_DOC_DIDSAVE, + JET_DOC_WILLCLOSE, + JET_PAGE_OPEN, + JET_PAGE_CLOSE, + JET_PAGE_INVIEW, + JET_PAGE_OUTVIEW, + JET_FIELD_MOUSEDOWN, + JET_FIELD_MOUSEUP, + JET_FIELD_MOUSEENTER, + JET_FIELD_MOUSEEXIT, + JET_FIELD_FOCUS, + JET_FIELD_BLUR, + JET_FIELD_KEYSTROKE, + JET_FIELD_VALIDATE, + JET_FIELD_CALCULATE, + JET_FIELD_FORMAT, + JET_SCREEN_FOCUS, + JET_SCREEN_BLUR, + JET_SCREEN_OPEN, + JET_SCREEN_CLOSE, + JET_SCREEN_MOUSEDOWN, + JET_SCREEN_MOUSEUP, + JET_SCREEN_MOUSEENTER, + JET_SCREEN_MOUSEEXIT, + JET_SCREEN_INVIEW, + JET_SCREEN_OUTVIEW, + JET_BATCH_EXEC, + JET_MENU_EXEC, + JET_CONSOLE_EXEC, + JET_EXTERNAL_EXEC, + JET_BOOKMARK_MOUSEUP, + JET_LINK_MOUSEUP +}; + +class CJS_EventHandler { + public: + explicit CJS_EventHandler(CJS_EventContext* pContext); + virtual ~CJS_EventHandler(); + + void OnApp_Init(); + + void OnDoc_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& strTargetName); + void OnDoc_WillPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv); + void OnDoc_DidPrint(CPDFSDK_FormFillEnvironment* pFormFillEnv); + void OnDoc_WillSave(CPDFSDK_FormFillEnvironment* pFormFillEnv); + void OnDoc_DidSave(CPDFSDK_FormFillEnvironment* pFormFillEnv); + void OnDoc_WillClose(CPDFSDK_FormFillEnvironment* pFormFillEnv); + + void OnPage_Open(CPDFSDK_FormFillEnvironment* pFormFillEnv); + void OnPage_Close(CPDFSDK_FormFillEnvironment* pFormFillEnv); + void OnPage_InView(CPDFSDK_FormFillEnvironment* pFormFillEnv); + void OnPage_OutView(CPDFSDK_FormFillEnvironment* pFormFillEnv); + + void OnField_Calculate(CPDF_FormField* pSource, + CPDF_FormField* pTarget, + WideString& Value, + bool& bRc); + void OnField_Format(CPDF_FormField* pTarget, + WideString& Value, + bool bWillCommit); + void OnField_Keystroke(WideString& strChange, + const WideString& strChangeEx, + bool KeyDown, + bool bModifier, + int& nSelEnd, + int& nSelStart, + bool bShift, + CPDF_FormField* pTarget, + WideString& Value, + bool bWillCommit, + bool bFieldFull, + bool& bRc); + void OnField_Validate(WideString& strChange, + const WideString& strChangeEx, + bool bKeyDown, + bool bModifier, + bool bShift, + CPDF_FormField* pTarget, + WideString& Value, + bool& bRc); + + void OnField_MouseDown(bool bModifier, bool bShift, CPDF_FormField* pTarget); + void OnField_MouseEnter(bool bModifier, bool bShift, CPDF_FormField* pTarget); + void OnField_MouseExit(bool bModifier, bool bShift, CPDF_FormField* pTarget); + void OnField_MouseUp(bool bModifier, bool bShift, CPDF_FormField* pTarget); + void OnField_Blur(bool bModifier, + bool bShift, + CPDF_FormField* pTarget, + const WideString& Value); + void OnField_Focus(bool bModifier, + bool bShift, + CPDF_FormField* pTarget, + const WideString& Value); + + void OnScreen_Focus(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); + void OnScreen_Blur(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); + void OnScreen_Open(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); + void OnScreen_Close(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); + void OnScreen_MouseDown(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); + void OnScreen_MouseUp(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); + void OnScreen_MouseEnter(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); + void OnScreen_MouseExit(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); + void OnScreen_InView(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); + void OnScreen_OutView(bool bModifier, bool bShift, CPDFSDK_Annot* pScreen); + + void OnBookmark_MouseUp(CPDF_Bookmark* pBookMark); + void OnLink_MouseUp(CPDFSDK_FormFillEnvironment* pFormFillEnv); + + void OnMenu_Exec(CPDFSDK_FormFillEnvironment* pFormFillEnv, + const WideString& strTargetName); + void OnBatchExec(CPDFSDK_FormFillEnvironment* pFormFillEnv); + void OnConsole_Exec(); + void OnExternal_Exec(); + + void Initial(JS_EVENT_T type); + void Destroy(); + bool IsValid(); + + WideString& Change(); + WideString ChangeEx(); + int CommitKey(); + bool FieldFull(); + bool KeyDown(); + bool Modifier(); + const wchar_t* Name(); + const wchar_t* Type(); + bool& Rc(); + int& SelEnd(); + int& SelStart(); + bool Shift(); + Field* Source(); + Field* Target_Field(); + WideString& Value(); + bool WillCommit(); + WideString TargetName(); + + JS_EVENT_T EventType() { return m_eEventType; } + + UnownedPtr const m_pJSEventContext; + JS_EVENT_T m_eEventType; + bool m_bValid; + + WideString m_strTargetName; + WideString m_strSourceName; + UnownedPtr m_pWideStrChange; + WideString m_WideStrChangeDu; + WideString m_WideStrChangeEx; + int m_nCommitKey; + bool m_bKeyDown; + bool m_bModifier; + bool m_bShift; + int* m_pISelEnd; + int m_nSelEndDu; + int* m_pISelStart; + int m_nSelStartDu; + bool m_bWillCommit; + UnownedPtr m_pValue; + bool m_bFieldFull; + bool* m_pbRc; + bool m_bRcDu; + + UnownedPtr m_pTargetBookMark; + CPDFSDK_FormFillEnvironment::ObservedPtr m_pTargetFormFillEnv; + CPDFSDK_Annot::ObservedPtr m_pTargetAnnot; +}; + +#endif // FPDFSDK_JAVASCRIPT_CJS_EVENTHANDLER_H_ diff --git a/fpdfsdk/javascript/cjs_global.cpp b/fpdfsdk/javascript/cjs_global.cpp index f282a2694e..4cf85bd618 100644 --- a/fpdfsdk/javascript/cjs_global.cpp +++ b/fpdfsdk/javascript/cjs_global.cpp @@ -13,12 +13,12 @@ #include "core/fxcrt/fx_extension.h" #include "fpdfsdk/javascript/JS_Define.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" #include "fpdfsdk/javascript/JS_GlobalData.h" #include "fpdfsdk/javascript/JS_KeyValue.h" #include "fpdfsdk/javascript/JS_Object.h" #include "fpdfsdk/javascript/JS_Value.h" #include "fpdfsdk/javascript/cjs_event_context.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" #include "fpdfsdk/javascript/resource.h" #define IMPLEMENT_SPECIAL_JS_CLASS(js_class_name, class_alternate, class_name) \ diff --git a/fpdfsdk/javascript/cjs_runtime.cpp b/fpdfsdk/javascript/cjs_runtime.cpp index e48d696866..c8c8477500 100644 --- a/fpdfsdk/javascript/cjs_runtime.cpp +++ b/fpdfsdk/javascript/cjs_runtime.cpp @@ -13,7 +13,6 @@ #include "fpdfsdk/javascript/Field.h" #include "fpdfsdk/javascript/Icon.h" #include "fpdfsdk/javascript/JS_Define.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" #include "fpdfsdk/javascript/JS_GlobalData.h" #include "fpdfsdk/javascript/JS_Object.h" #include "fpdfsdk/javascript/JS_Value.h" @@ -23,6 +22,7 @@ #include "fpdfsdk/javascript/cjs_border.h" #include "fpdfsdk/javascript/cjs_display.h" #include "fpdfsdk/javascript/cjs_event_context.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" #include "fpdfsdk/javascript/cjs_font.h" #include "fpdfsdk/javascript/cjs_global.h" #include "fpdfsdk/javascript/cjs_globalarrays.h" diff --git a/fpdfsdk/javascript/cjs_runtime.h b/fpdfsdk/javascript/cjs_runtime.h index 69a370501d..ce39c6cc3d 100644 --- a/fpdfsdk/javascript/cjs_runtime.h +++ b/fpdfsdk/javascript/cjs_runtime.h @@ -15,7 +15,7 @@ #include "core/fxcrt/observable.h" #include "fpdfsdk/cpdfsdk_formfillenvironment.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" #include "fpdfsdk/javascript/ijs_runtime.h" #include "fxjs/fxjs_v8.h" diff --git a/fpdfsdk/javascript/color.cpp b/fpdfsdk/javascript/color.cpp index 621fe6b752..9ae4b18c90 100644 --- a/fpdfsdk/javascript/color.cpp +++ b/fpdfsdk/javascript/color.cpp @@ -9,10 +9,10 @@ #include #include "fpdfsdk/javascript/JS_Define.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" #include "fpdfsdk/javascript/JS_Object.h" #include "fpdfsdk/javascript/JS_Value.h" #include "fpdfsdk/javascript/cjs_event_context.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" #include "fpdfsdk/javascript/cjs_runtime.h" JSConstSpec CJS_Color::ConstSpecs[] = {{0, JSConstSpec::Number, 0, 0}}; diff --git a/fpdfsdk/javascript/console.cpp b/fpdfsdk/javascript/console.cpp index af2bb3e9ea..ee7bc7f2bb 100644 --- a/fpdfsdk/javascript/console.cpp +++ b/fpdfsdk/javascript/console.cpp @@ -9,10 +9,10 @@ #include #include "fpdfsdk/javascript/JS_Define.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" #include "fpdfsdk/javascript/JS_Object.h" #include "fpdfsdk/javascript/JS_Value.h" #include "fpdfsdk/javascript/cjs_event_context.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" JSConstSpec CJS_Console::ConstSpecs[] = {{0, JSConstSpec::Number, 0, 0}}; diff --git a/fpdfsdk/javascript/event.cpp b/fpdfsdk/javascript/event.cpp index 401148c551..2439af2959 100644 --- a/fpdfsdk/javascript/event.cpp +++ b/fpdfsdk/javascript/event.cpp @@ -8,10 +8,10 @@ #include "fpdfsdk/javascript/Field.h" #include "fpdfsdk/javascript/JS_Define.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" #include "fpdfsdk/javascript/JS_Object.h" #include "fpdfsdk/javascript/JS_Value.h" #include "fpdfsdk/javascript/cjs_event_context.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" JSConstSpec CJS_Event::ConstSpecs[] = {{0, JSConstSpec::Number, 0, 0}}; diff --git a/fpdfsdk/javascript/util.cpp b/fpdfsdk/javascript/util.cpp index b9deda1db8..7e08168fba 100644 --- a/fpdfsdk/javascript/util.cpp +++ b/fpdfsdk/javascript/util.cpp @@ -16,11 +16,11 @@ #include "core/fxcrt/fx_extension.h" #include "fpdfsdk/javascript/JS_Define.h" -#include "fpdfsdk/javascript/JS_EventHandler.h" #include "fpdfsdk/javascript/JS_Object.h" #include "fpdfsdk/javascript/JS_Value.h" #include "fpdfsdk/javascript/PublicMethods.h" #include "fpdfsdk/javascript/cjs_event_context.h" +#include "fpdfsdk/javascript/cjs_eventhandler.h" #include "fpdfsdk/javascript/cjs_runtime.h" #include "fpdfsdk/javascript/resource.h" -- cgit v1.2.3