diff options
Diffstat (limited to 'xfa/fxfa')
-rw-r--r-- | xfa/fxfa/cxfa_ffdocview.cpp | 7 | ||||
-rw-r--r-- | xfa/fxfa/cxfa_fffield.cpp | 11 | ||||
-rw-r--r-- | xfa/fxfa/cxfa_ffwidgethandler.cpp | 11 | ||||
-rw-r--r-- | xfa/fxfa/cxfa_widgetacc.cpp | 7 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_calculate.cpp | 22 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_calculate.h | 6 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_calculatedata.cpp | 35 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_calculatedata.h | 25 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_widgetdata.cpp | 6 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_widgetdata.h | 4 |
10 files changed, 53 insertions, 81 deletions
diff --git a/xfa/fxfa/cxfa_ffdocview.cpp b/xfa/fxfa/cxfa_ffdocview.cpp index 3fea83c0e7..bd2b70920d 100644 --- a/xfa/fxfa/cxfa_ffdocview.cpp +++ b/xfa/fxfa/cxfa_ffdocview.cpp @@ -31,6 +31,7 @@ #include "xfa/fxfa/cxfa_widgetacciterator.h" #include "xfa/fxfa/parser/cxfa_acrobat.h" #include "xfa/fxfa/parser/cxfa_binditemsdata.h" +#include "xfa/fxfa/parser/cxfa_calculate.h" #include "xfa/fxfa/parser/cxfa_layoutprocessor.h" #include "xfa/fxfa/parser/cxfa_pageset.h" #include "xfa/fxfa/parser/cxfa_present.h" @@ -416,13 +417,13 @@ static int32_t XFA_ProcessEvent(CXFA_FFDocView* pDocView, } return XFA_EVENTERROR_Disabled; case XFA_EVENT_InitCalculate: { - CXFA_CalculateData calcData = pWidgetAcc->GetCalculateData(); - if (!calcData.HasValidNode()) + CXFA_Calculate* calc = pWidgetAcc->GetCalculate(); + if (!calc) return XFA_EVENTERROR_NotExist; if (pWidgetAcc->GetNode()->IsUserInteractive()) return XFA_EVENTERROR_Disabled; - return pWidgetAcc->ExecuteScript(calcData.GetScript(), pParam); + return pWidgetAcc->ExecuteScript(calc->GetScript(), pParam); } default: break; diff --git a/xfa/fxfa/cxfa_fffield.cpp b/xfa/fxfa/cxfa_fffield.cpp index 2b4748771e..827d38d8c3 100644 --- a/xfa/fxfa/cxfa_fffield.cpp +++ b/xfa/fxfa/cxfa_fffield.cpp @@ -22,6 +22,7 @@ #include "xfa/fxfa/cxfa_ffwidget.h" #include "xfa/fxfa/cxfa_fwltheme.h" #include "xfa/fxfa/cxfa_textlayout.h" +#include "xfa/fxfa/parser/cxfa_calculate.h" #include "xfa/fxfa/parser/cxfa_node.h" #include "xfa/fxfa/parser/cxfa_script.h" #include "xfa/fxgraphics/cxfa_gecolor.h" @@ -661,12 +662,12 @@ int32_t CXFA_FFField::CalculateOverride() { } int32_t CXFA_FFField::CalculateWidgetAcc(CXFA_WidgetAcc* pAcc) { - CXFA_CalculateData calcData = pAcc->GetCalculateData(); - if (!calcData.HasValidNode()) + CXFA_Calculate* calc = pAcc->GetCalculate(); + if (!calc) return 1; XFA_VERSION version = pAcc->GetDoc()->GetXFADoc()->GetCurVersionMode(); - switch (calcData.GetOverride()) { + switch (calc->GetOverride()) { case XFA_AttributeEnum::Error: { if (version <= XFA_VERSION_204) return 1; @@ -681,7 +682,7 @@ int32_t CXFA_FFField::CalculateWidgetAcc(CXFA_WidgetAcc* pAcc) { } case XFA_AttributeEnum::Warning: { if (version <= XFA_VERSION_204) { - CXFA_Script* script = calcData.GetScript(); + CXFA_Script* script = calc->GetScript(); if (!script) return 1; if (script->GetExpression().IsEmpty()) @@ -695,7 +696,7 @@ int32_t CXFA_FFField::CalculateWidgetAcc(CXFA_WidgetAcc* pAcc) { if (!pAppProvider) return 0; - WideString wsMessage = calcData.GetMessageText(); + WideString wsMessage = calc->GetMessageText(); if (!wsMessage.IsEmpty()) wsMessage += L"\r\n"; diff --git a/xfa/fxfa/cxfa_ffwidgethandler.cpp b/xfa/fxfa/cxfa_ffwidgethandler.cpp index 7fe3c17ff5..b65321f379 100644 --- a/xfa/fxfa/cxfa_ffwidgethandler.cpp +++ b/xfa/fxfa/cxfa_ffwidgethandler.cpp @@ -13,6 +13,7 @@ #include "xfa/fxfa/cxfa_fffield.h" #include "xfa/fxfa/cxfa_ffwidget.h" #include "xfa/fxfa/cxfa_fwladapterwidgetmgr.h" +#include "xfa/fxfa/parser/cxfa_calculate.h" #include "xfa/fxfa/parser/cxfa_checkbutton.h" #include "xfa/fxfa/parser/cxfa_layoutprocessor.h" #include "xfa/fxfa/parser/cxfa_measurement.h" @@ -192,8 +193,8 @@ bool CXFA_FFWidgetHandler::HasEvent(CXFA_WidgetAcc* pWidgetAcc, switch (eEventType) { case XFA_EVENT_Calculate: { - CXFA_CalculateData calcData = pWidgetAcc->GetCalculateData(); - return calcData.HasValidNode() && calcData.GetScript(); + CXFA_Calculate* calc = pWidgetAcc->GetCalculate(); + return calc && calc->GetScript(); } case XFA_EVENT_Validate: { CXFA_Validate* validate = pWidgetAcc->GetValidate(false); @@ -223,12 +224,12 @@ int32_t CXFA_FFWidgetHandler::ProcessEvent(CXFA_WidgetAcc* pWidgetAcc, } return XFA_EVENTERROR_Disabled; case XFA_EVENT_InitCalculate: { - CXFA_CalculateData calcData = pWidgetAcc->GetCalculateData(); - if (!calcData.HasValidNode()) + CXFA_Calculate* calc = pWidgetAcc->GetCalculate(); + if (!calc) return XFA_EVENTERROR_NotExist; if (pWidgetAcc->GetNode()->IsUserInteractive()) return XFA_EVENTERROR_Disabled; - return pWidgetAcc->ExecuteScript(calcData.GetScript(), pParam); + return pWidgetAcc->ExecuteScript(calc->GetScript(), pParam); } default: break; diff --git a/xfa/fxfa/cxfa_widgetacc.cpp b/xfa/fxfa/cxfa_widgetacc.cpp index 63f59dcc28..dcf621f442 100644 --- a/xfa/fxfa/cxfa_widgetacc.cpp +++ b/xfa/fxfa/cxfa_widgetacc.cpp @@ -21,6 +21,7 @@ #include "xfa/fxfa/cxfa_fontmgr.h" #include "xfa/fxfa/cxfa_textlayout.h" #include "xfa/fxfa/cxfa_textprovider.h" +#include "xfa/fxfa/parser/cxfa_calculate.h" #include "xfa/fxfa/parser/cxfa_items.h" #include "xfa/fxfa/parser/cxfa_layoutprocessor.h" #include "xfa/fxfa/parser/cxfa_localevalue.h" @@ -328,15 +329,15 @@ int32_t CXFA_WidgetAcc::ProcessCalculate() { if (GetElementType() == XFA_Element::Draw) return XFA_EVENTERROR_NotExist; - CXFA_CalculateData calcData = GetCalculateData(); - if (!calcData.HasValidNode()) + CXFA_Calculate* calc = GetCalculate(); + if (!calc) return XFA_EVENTERROR_NotExist; if (GetNode()->IsUserInteractive()) return XFA_EVENTERROR_Disabled; CXFA_EventParam EventParam; EventParam.m_eType = XFA_EVENT_Calculate; - int32_t iRet = ExecuteScript(calcData.GetScript(), &EventParam); + int32_t iRet = ExecuteScript(calc->GetScript(), &EventParam); if (iRet != XFA_EVENTERROR_Success) return iRet; diff --git a/xfa/fxfa/parser/cxfa_calculate.cpp b/xfa/fxfa/parser/cxfa_calculate.cpp index 714dfdecd7..cacb326f0f 100644 --- a/xfa/fxfa/parser/cxfa_calculate.cpp +++ b/xfa/fxfa/parser/cxfa_calculate.cpp @@ -8,6 +8,9 @@ #include "fxjs/xfa/cjx_calculate.h" #include "third_party/base/ptr_util.h" +#include "xfa/fxfa/parser/cxfa_message.h" +#include "xfa/fxfa/parser/cxfa_script.h" +#include "xfa/fxfa/parser/cxfa_text.h" namespace { @@ -39,3 +42,22 @@ CXFA_Calculate::CXFA_Calculate(CXFA_Document* doc, XFA_PacketType packet) pdfium::MakeUnique<CJX_Calculate>(this)) {} CXFA_Calculate::~CXFA_Calculate() {} + +XFA_AttributeEnum CXFA_Calculate::GetOverride() { + return JSObject() + ->TryEnum(XFA_Attribute::Override, false) + .value_or(XFA_AttributeEnum::Error); +} + +CXFA_Script* CXFA_Calculate::GetScript() { + return GetChild<CXFA_Script>(0, XFA_Element::Script, false); +} + +WideString CXFA_Calculate::GetMessageText() { + CXFA_Message* pNode = GetChild<CXFA_Message>(0, XFA_Element::Message, false); + if (!pNode) + return L""; + + CXFA_Text* text = pNode->GetChild<CXFA_Text>(0, XFA_Element::Text, false); + return text ? text->GetContent() : L""; +} diff --git a/xfa/fxfa/parser/cxfa_calculate.h b/xfa/fxfa/parser/cxfa_calculate.h index 01fe853d4b..3f6ca6a8c7 100644 --- a/xfa/fxfa/parser/cxfa_calculate.h +++ b/xfa/fxfa/parser/cxfa_calculate.h @@ -9,10 +9,16 @@ #include "xfa/fxfa/parser/cxfa_node.h" +class CXFA_Script; + class CXFA_Calculate : public CXFA_Node { public: CXFA_Calculate(CXFA_Document* doc, XFA_PacketType packet); ~CXFA_Calculate() override; + + XFA_AttributeEnum GetOverride(); + CXFA_Script* GetScript(); + WideString GetMessageText(); }; #endif // XFA_FXFA_PARSER_CXFA_CALCULATE_H_ diff --git a/xfa/fxfa/parser/cxfa_calculatedata.cpp b/xfa/fxfa/parser/cxfa_calculatedata.cpp deleted file mode 100644 index f919224687..0000000000 --- a/xfa/fxfa/parser/cxfa_calculatedata.cpp +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2016 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 "xfa/fxfa/parser/cxfa_calculatedata.h" - -#include "xfa/fxfa/parser/cxfa_message.h" -#include "xfa/fxfa/parser/cxfa_node.h" -#include "xfa/fxfa/parser/cxfa_script.h" -#include "xfa/fxfa/parser/cxfa_text.h" - -CXFA_CalculateData::CXFA_CalculateData(CXFA_Node* pNode) - : CXFA_DataData(pNode) {} - -XFA_AttributeEnum CXFA_CalculateData::GetOverride() const { - return m_pNode->JSObject() - ->TryEnum(XFA_Attribute::Override, false) - .value_or(XFA_AttributeEnum::Error); -} - -CXFA_Script* CXFA_CalculateData::GetScript() const { - return m_pNode->GetChild<CXFA_Script>(0, XFA_Element::Script, false); -} - -WideString CXFA_CalculateData::GetMessageText() const { - CXFA_Message* pNode = - m_pNode->GetChild<CXFA_Message>(0, XFA_Element::Message, false); - if (!pNode) - return L""; - - CXFA_Text* text = pNode->GetChild<CXFA_Text>(0, XFA_Element::Text, false); - return text ? text->GetContent() : L""; -} diff --git a/xfa/fxfa/parser/cxfa_calculatedata.h b/xfa/fxfa/parser/cxfa_calculatedata.h deleted file mode 100644 index 3e0802e6c4..0000000000 --- a/xfa/fxfa/parser/cxfa_calculatedata.h +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2016 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 XFA_FXFA_PARSER_CXFA_CALCULATEDATA_H_ -#define XFA_FXFA_PARSER_CXFA_CALCULATEDATA_H_ - -#include "core/fxcrt/fx_string.h" -#include "xfa/fxfa/parser/cxfa_datadata.h" - -class CXFA_Node; -class CXFA_Script; - -class CXFA_CalculateData : public CXFA_DataData { - public: - explicit CXFA_CalculateData(CXFA_Node* pNode); - - XFA_AttributeEnum GetOverride() const; - CXFA_Script* GetScript() const; - WideString GetMessageText() const; -}; - -#endif // XFA_FXFA_PARSER_CXFA_CALCULATEDATA_H_ diff --git a/xfa/fxfa/parser/cxfa_widgetdata.cpp b/xfa/fxfa/parser/cxfa_widgetdata.cpp index 6e68ee356b..ba10f244d3 100644 --- a/xfa/fxfa/parser/cxfa_widgetdata.cpp +++ b/xfa/fxfa/parser/cxfa_widgetdata.cpp @@ -324,9 +324,9 @@ CXFA_Value* CXFA_WidgetData::GetFormValue() { false); } -CXFA_CalculateData CXFA_WidgetData::GetCalculateData() { - return CXFA_CalculateData(m_pNode->JSObject()->GetProperty<CXFA_Calculate>( - 0, XFA_Element::Calculate, false)); +CXFA_Calculate* CXFA_WidgetData::GetCalculate() { + return m_pNode->JSObject()->GetProperty<CXFA_Calculate>( + 0, XFA_Element::Calculate, false); } CXFA_Validate* CXFA_WidgetData::GetValidate(bool bModified) { diff --git a/xfa/fxfa/parser/cxfa_widgetdata.h b/xfa/fxfa/parser/cxfa_widgetdata.h index 2873ff9bc1..e7016bda91 100644 --- a/xfa/fxfa/parser/cxfa_widgetdata.h +++ b/xfa/fxfa/parser/cxfa_widgetdata.h @@ -16,7 +16,6 @@ #include "fxbarcode/BC_Library.h" #include "xfa/fxfa/parser/cxfa_binddata.h" #include "xfa/fxfa/parser/cxfa_borderdata.h" -#include "xfa/fxfa/parser/cxfa_calculatedata.h" #include "xfa/fxfa/parser/cxfa_captiondata.h" #include "xfa/fxfa/parser/cxfa_datadata.h" #include "xfa/fxfa/parser/cxfa_fontdata.h" @@ -35,6 +34,7 @@ enum XFA_VALUEPICTURE { XFA_VALUEPICTURE_DataBind, }; +class CXFA_Calculate; class CXFA_Node; class CXFA_Para; class CXFA_Validate; @@ -65,7 +65,7 @@ class CXFA_WidgetData : public CXFA_DataData { CXFA_Para* GetPara(); CXFA_Value* GetDefaultValue(); CXFA_Value* GetFormValue(); - CXFA_CalculateData GetCalculateData(); + CXFA_Calculate* GetCalculate(); CXFA_Validate* GetValidate(bool bModified); CXFA_BorderData GetUIBorderData(); |