From 07c0a4952a9fe45e51c6ba5a2e19296e52ea6ec7 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Thu, 14 Dec 2017 20:29:23 +0000 Subject: Fold CXFA_ScriptData into CXFA_Script This CL removes the CXFA_ScriptData wrapper and uses CXFA_Script directly. Change-Id: I1f1932ef96ee4a24407de7eb1d68b8631a5a67ea Reviewed-on: https://pdfium-review.googlesource.com/21173 Commit-Queue: dsinclair Reviewed-by: Henrique Nakashima --- xfa/fxfa/parser/cxfa_calculatedata.cpp | 6 ++++-- xfa/fxfa/parser/cxfa_calculatedata.h | 4 ++-- xfa/fxfa/parser/cxfa_eventdata.cpp | 6 ++++-- xfa/fxfa/parser/cxfa_eventdata.h | 4 ++-- xfa/fxfa/parser/cxfa_layoutpagemgr.cpp | 23 ++++++++++++----------- xfa/fxfa/parser/cxfa_script.cpp | 18 ++++++++++++++++++ xfa/fxfa/parser/cxfa_script.h | 11 +++++++++++ xfa/fxfa/parser/cxfa_scriptdata.cpp | 29 ----------------------------- xfa/fxfa/parser/cxfa_scriptdata.h | 32 -------------------------------- xfa/fxfa/parser/cxfa_validate.cpp | 5 +++-- xfa/fxfa/parser/cxfa_validate.h | 4 +++- 11 files changed, 59 insertions(+), 83 deletions(-) delete mode 100644 xfa/fxfa/parser/cxfa_scriptdata.cpp delete mode 100644 xfa/fxfa/parser/cxfa_scriptdata.h (limited to 'xfa/fxfa/parser') diff --git a/xfa/fxfa/parser/cxfa_calculatedata.cpp b/xfa/fxfa/parser/cxfa_calculatedata.cpp index 32dc8ef5b7..3d7711d433 100644 --- a/xfa/fxfa/parser/cxfa_calculatedata.cpp +++ b/xfa/fxfa/parser/cxfa_calculatedata.cpp @@ -7,6 +7,7 @@ #include "xfa/fxfa/parser/cxfa_calculatedata.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) @@ -18,8 +19,9 @@ XFA_AttributeEnum CXFA_CalculateData::GetOverride() const { .value_or(XFA_AttributeEnum::Error); } -CXFA_ScriptData CXFA_CalculateData::GetScriptData() const { - return CXFA_ScriptData(m_pNode->GetChild(0, XFA_Element::Script, false)); +CXFA_Script* CXFA_CalculateData::GetScript() const { + return static_cast( + m_pNode->GetChild(0, XFA_Element::Script, false)); } WideString CXFA_CalculateData::GetMessageText() const { diff --git a/xfa/fxfa/parser/cxfa_calculatedata.h b/xfa/fxfa/parser/cxfa_calculatedata.h index 833b1508a4..3e0802e6c4 100644 --- a/xfa/fxfa/parser/cxfa_calculatedata.h +++ b/xfa/fxfa/parser/cxfa_calculatedata.h @@ -9,16 +9,16 @@ #include "core/fxcrt/fx_string.h" #include "xfa/fxfa/parser/cxfa_datadata.h" -#include "xfa/fxfa/parser/cxfa_scriptdata.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_ScriptData GetScriptData() const; + CXFA_Script* GetScript() const; WideString GetMessageText() const; }; diff --git a/xfa/fxfa/parser/cxfa_eventdata.cpp b/xfa/fxfa/parser/cxfa_eventdata.cpp index 062d881cda..d5b170b734 100644 --- a/xfa/fxfa/parser/cxfa_eventdata.cpp +++ b/xfa/fxfa/parser/cxfa_eventdata.cpp @@ -7,6 +7,7 @@ #include "xfa/fxfa/parser/cxfa_eventdata.h" #include "xfa/fxfa/parser/cxfa_node.h" +#include "xfa/fxfa/parser/cxfa_script.h" #include "xfa/fxfa/parser/cxfa_submit.h" CXFA_EventData::CXFA_EventData(CXFA_Node* pNode) : CXFA_DataData(pNode) {} @@ -31,8 +32,9 @@ WideString CXFA_EventData::GetRef() const { return m_pNode->JSObject()->GetCData(XFA_Attribute::Ref); } -CXFA_ScriptData CXFA_EventData::GetScriptData() const { - return CXFA_ScriptData(m_pNode->GetChild(0, XFA_Element::Script, false)); +CXFA_Script* CXFA_EventData::GetScript() const { + return static_cast( + m_pNode->GetChild(0, XFA_Element::Script, false)); } CXFA_Submit* CXFA_EventData::GetSubmit() const { diff --git a/xfa/fxfa/parser/cxfa_eventdata.h b/xfa/fxfa/parser/cxfa_eventdata.h index 63349690ab..8338767fe0 100644 --- a/xfa/fxfa/parser/cxfa_eventdata.h +++ b/xfa/fxfa/parser/cxfa_eventdata.h @@ -11,9 +11,9 @@ #include "core/fxcrt/fx_string.h" #include "xfa/fxfa/parser/cxfa_datadata.h" -#include "xfa/fxfa/parser/cxfa_scriptdata.h" class CXFA_Node; +class CXFA_Script; class CXFA_Submit; class CXFA_EventData : public CXFA_DataData { @@ -22,7 +22,7 @@ class CXFA_EventData : public CXFA_DataData { XFA_AttributeEnum GetActivity(); XFA_Element GetEventType() const; - CXFA_ScriptData GetScriptData() const; + CXFA_Script* GetScript() const; CXFA_Submit* GetSubmit() const; WideString GetRef() const; }; diff --git a/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp b/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp index f9040d6b4d..4d70d7d50f 100644 --- a/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp +++ b/xfa/fxfa/parser/cxfa_layoutpagemgr.cpp @@ -229,6 +229,15 @@ void SyncRemoveLayoutItem(CXFA_LayoutItem* pParentLayoutItem, } } +bool RunBreakTestScript(CXFA_Script* pTestScript) { + WideString wsExpression = pTestScript->JSObject()->GetContent(false); + if (wsExpression.IsEmpty()) + return true; + return pTestScript->GetDocument()->GetNotify()->RunScript( + pTestScript, pTestScript->GetNodeItem(XFA_NODEITEM_Parent, + XFA_ObjectType::ContainerNode)); +} + } // namespace class CXFA_ContainerRecord { @@ -481,15 +490,6 @@ float CXFA_LayoutPageMgr::GetAvailHeight() { return FLT_MAX; } -bool XFA_LayoutPageMgr_RunBreakTestScript(CXFA_Node* pTestScript) { - WideString wsExpression = pTestScript->JSObject()->GetContent(false); - if (wsExpression.IsEmpty()) - return true; - return pTestScript->GetDocument()->GetNotify()->RunScript( - pTestScript, pTestScript->GetNodeItem(XFA_NODEITEM_Parent, - XFA_ObjectType::ContainerNode)); -} - CXFA_ContainerRecord* CXFA_LayoutPageMgr::CreateContainerRecord( CXFA_Node* pPageNode, bool bCreateNew) { @@ -816,8 +816,9 @@ bool CXFA_LayoutPageMgr::ExecuteBreakBeforeOrAfter( CXFA_Node* pContainer = pFormNode->GetTemplateNode(); bool bStartNew = pCurNode->JSObject()->GetInteger(XFA_Attribute::StartNew) != 0; - CXFA_Node* pScript = pCurNode->GetFirstChildByClass(XFA_Element::Script); - if (pScript && !XFA_LayoutPageMgr_RunBreakTestScript(pScript)) + CXFA_Script* pScript = static_cast( + pCurNode->GetFirstChildByClass(XFA_Element::Script)); + if (pScript && !RunBreakTestScript(pScript)) return false; WideString wsTarget = diff --git a/xfa/fxfa/parser/cxfa_script.cpp b/xfa/fxfa/parser/cxfa_script.cpp index ab317f38e8..1b784b331b 100644 --- a/xfa/fxfa/parser/cxfa_script.cpp +++ b/xfa/fxfa/parser/cxfa_script.cpp @@ -46,3 +46,21 @@ CXFA_Script::CXFA_Script(CXFA_Document* doc, XFA_PacketType packet) pdfium::MakeUnique(this)) {} CXFA_Script::~CXFA_Script() {} + +CXFA_Script::Type CXFA_Script::GetContentType() { + pdfium::Optional cData = + JSObject()->TryCData(XFA_Attribute::ContentType, false); + if (!cData || *cData == L"application/x-formcalc") + return Type::Formcalc; + if (*cData == L"application/x-javascript") + return Type::Javascript; + return Type::Unknown; +} + +XFA_AttributeEnum CXFA_Script::GetRunAt() { + return JSObject()->GetEnum(XFA_Attribute::RunAt); +} + +WideString CXFA_Script::GetExpression() { + return JSObject()->GetContent(false); +} diff --git a/xfa/fxfa/parser/cxfa_script.h b/xfa/fxfa/parser/cxfa_script.h index d14f7c113b..8ea7aac60b 100644 --- a/xfa/fxfa/parser/cxfa_script.h +++ b/xfa/fxfa/parser/cxfa_script.h @@ -7,12 +7,23 @@ #ifndef XFA_FXFA_PARSER_CXFA_SCRIPT_H_ #define XFA_FXFA_PARSER_CXFA_SCRIPT_H_ +#include "core/fxcrt/widestring.h" #include "xfa/fxfa/parser/cxfa_node.h" class CXFA_Script : public CXFA_Node { public: + enum class Type { + Formcalc = 0, + Javascript, + Unknown, + }; + CXFA_Script(CXFA_Document* doc, XFA_PacketType packet); ~CXFA_Script() override; + + Type GetContentType(); + XFA_AttributeEnum GetRunAt(); + WideString GetExpression(); }; #endif // XFA_FXFA_PARSER_CXFA_SCRIPT_H_ diff --git a/xfa/fxfa/parser/cxfa_scriptdata.cpp b/xfa/fxfa/parser/cxfa_scriptdata.cpp deleted file mode 100644 index 7e9f49066f..0000000000 --- a/xfa/fxfa/parser/cxfa_scriptdata.cpp +++ /dev/null @@ -1,29 +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_scriptdata.h" - -#include "xfa/fxfa/parser/cxfa_node.h" - -CXFA_ScriptData::CXFA_ScriptData(CXFA_Node* pNode) : CXFA_DataData(pNode) {} - -CXFA_ScriptData::Type CXFA_ScriptData::GetContentType() const { - pdfium::Optional cData = - m_pNode->JSObject()->TryCData(XFA_Attribute::ContentType, false); - if (!cData || *cData == L"application/x-formcalc") - return Type::Formcalc; - if (*cData == L"application/x-javascript") - return Type::Javascript; - return Type::Unknown; -} - -XFA_AttributeEnum CXFA_ScriptData::GetRunAt() const { - return m_pNode->JSObject()->GetEnum(XFA_Attribute::RunAt); -} - -WideString CXFA_ScriptData::GetExpression() const { - return m_pNode->JSObject()->GetContent(false); -} diff --git a/xfa/fxfa/parser/cxfa_scriptdata.h b/xfa/fxfa/parser/cxfa_scriptdata.h deleted file mode 100644 index 983addbd0c..0000000000 --- a/xfa/fxfa/parser/cxfa_scriptdata.h +++ /dev/null @@ -1,32 +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_SCRIPTDATA_H_ -#define XFA_FXFA_PARSER_CXFA_SCRIPTDATA_H_ - -#include - -#include "core/fxcrt/fx_string.h" -#include "xfa/fxfa/parser/cxfa_datadata.h" - -class CXFA_Node; - -class CXFA_ScriptData : public CXFA_DataData { - public: - enum class Type { - Formcalc = 0, - Javascript, - Unknown, - }; - - explicit CXFA_ScriptData(CXFA_Node* pNode); - - Type GetContentType() const; - XFA_AttributeEnum GetRunAt() const; - WideString GetExpression() const; -}; - -#endif // XFA_FXFA_PARSER_CXFA_SCRIPTDATA_H_ diff --git a/xfa/fxfa/parser/cxfa_validate.cpp b/xfa/fxfa/parser/cxfa_validate.cpp index 9b31a17434..57cf5d4ecf 100644 --- a/xfa/fxfa/parser/cxfa_validate.cpp +++ b/xfa/fxfa/parser/cxfa_validate.cpp @@ -8,6 +8,7 @@ #include "fxjs/xfa/cjx_validate.h" #include "third_party/base/ptr_util.h" +#include "xfa/fxfa/parser/cxfa_script.h" namespace { @@ -144,6 +145,6 @@ WideString CXFA_Validate::GetPicture() { return pNode ? pNode->JSObject()->GetContent(false) : L""; } -CXFA_ScriptData CXFA_Validate::GetScriptData() { - return CXFA_ScriptData(GetChild(0, XFA_Element::Script, false)); +CXFA_Script* CXFA_Validate::GetScript() { + return static_cast(GetChild(0, XFA_Element::Script, false)); } diff --git a/xfa/fxfa/parser/cxfa_validate.h b/xfa/fxfa/parser/cxfa_validate.h index 9e2be9c959..df08ea6d3d 100644 --- a/xfa/fxfa/parser/cxfa_validate.h +++ b/xfa/fxfa/parser/cxfa_validate.h @@ -9,6 +9,8 @@ #include "xfa/fxfa/parser/cxfa_node.h" +class CXFA_Script; + class CXFA_Validate : public CXFA_Node { public: CXFA_Validate(CXFA_Document* doc, XFA_PacketType packet); @@ -29,7 +31,7 @@ class CXFA_Validate : public CXFA_Node { void SetScriptMessageText(const WideString& wsMessage); WideString GetPicture(); - CXFA_ScriptData GetScriptData(); + CXFA_Script* GetScript(); private: WideString GetMessageText(const WideString& wsMessageType); -- cgit v1.2.3