diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-10-06 11:33:46 -0700 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-10-06 11:33:46 -0700 |
commit | 3745841a4c4ab915c98865c1dd71f9debc3e2f99 (patch) | |
tree | 9d43ea977a9f50faa40391f38264f6695527555c /fpdfsdk/src/javascript/JS_GlobalData.h | |
parent | 1b1dd8a6907f4631044b1c03698170853af594a9 (diff) | |
download | pdfium-3745841a4c4ab915c98865c1dd71f9debc3e2f99.tar.xz |
Merge to XFA: Make the vast majority of JS headers private to src/javascript.
(cherry picked from commit 5b3d0208723f21c50b9922bdc500c9d78c359a25)
Original Review URL: https://codereview.chromium.org/1389783002 .
New changes to fix IWYU in:
fpdfsdk/include/fpdfxfa/fpdfxfa_app.h
xfa/include/fxfa/fxfa.h
xfa/include/fxfa/fxfa_objectacc.h
R=thestig@chromium.org
Review URL: https://codereview.chromium.org/1388023003 .
Diffstat (limited to 'fpdfsdk/src/javascript/JS_GlobalData.h')
-rw-r--r-- | fpdfsdk/src/javascript/JS_GlobalData.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/fpdfsdk/src/javascript/JS_GlobalData.h b/fpdfsdk/src/javascript/JS_GlobalData.h new file mode 100644 index 0000000000..b174a8d76e --- /dev/null +++ b/fpdfsdk/src/javascript/JS_GlobalData.h @@ -0,0 +1,108 @@ +// 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_SRC_JAVASCRIPT_JS_GLOBALDATA_H_ +#define FPDFSDK_SRC_JAVASCRIPT_JS_GLOBALDATA_H_ + +#include "../../../core/include/fxcrt/fx_basic.h" + +#define JS_GLOBALDATA_TYPE_NUMBER 0 +#define JS_GLOBALDATA_TYPE_BOOLEAN 1 +#define JS_GLOBALDATA_TYPE_STRING 2 +#define JS_GLOBALDATA_TYPE_OBJECT 3 +#define JS_GLOBALDATA_TYPE_NULL 4 + +class CJS_KeyValue; +class CPDFDoc_Environment; + +class CJS_GlobalVariableArray { + public: + CJS_GlobalVariableArray(); + virtual ~CJS_GlobalVariableArray(); + + void Add(CJS_KeyValue* p); + int Count() const; + CJS_KeyValue* GetAt(int index) const; + void Copy(const CJS_GlobalVariableArray& array); + + void Empty(); + + private: + CFX_ArrayTemplate<CJS_KeyValue*> array; +}; + +class CJS_KeyValue { + public: + CJS_KeyValue() {} + virtual ~CJS_KeyValue() {} + + CFX_ByteString sKey; + int nType; // 0:int 1:bool 2:string 3:obj + double dData; + bool bData; + CFX_ByteString sData; + CJS_GlobalVariableArray objData; +}; + +class CJS_GlobalData_Element { + public: + CJS_GlobalData_Element() {} + virtual ~CJS_GlobalData_Element() {} + + CJS_KeyValue data; + FX_BOOL bPersistent; +}; + +class CJS_GlobalData { + public: + static CJS_GlobalData* GetRetainedInstance(CPDFDoc_Environment* pApp); + void Release(); + + void SetGlobalVariableNumber(const FX_CHAR* propname, double dData); + void SetGlobalVariableBoolean(const FX_CHAR* propname, bool bData); + void SetGlobalVariableString(const FX_CHAR* propname, + const CFX_ByteString& sData); + void SetGlobalVariableObject(const FX_CHAR* propname, + const CJS_GlobalVariableArray& array); + void SetGlobalVariableNull(const FX_CHAR* propname); + + FX_BOOL SetGlobalVariablePersistent(const FX_CHAR* propname, + FX_BOOL bPersistent); + FX_BOOL DeleteGlobalVariable(const FX_CHAR* propname); + + int32_t GetSize() const; + CJS_GlobalData_Element* GetAt(int index) const; + + private: + static CJS_GlobalData* g_Instance; + + CJS_GlobalData(CPDFDoc_Environment* pApp); + ~CJS_GlobalData(); + + void LoadGlobalPersistentVariables(); + void SaveGlobalPersisitentVariables(); + + CJS_GlobalData_Element* GetGlobalVariable(const FX_CHAR* propname); + int FindGlobalVariable(const FX_CHAR* propname); + + void LoadFileBuffer(const FX_WCHAR* sFilePath, + uint8_t*& pBuffer, + int32_t& nLength); + void WriteFileBuffer(const FX_WCHAR* sFilePath, + const FX_CHAR* pBuffer, + int32_t nLength); + void MakeByteString(const CFX_ByteString& name, + CJS_KeyValue* pData, + CFX_BinaryBuf& sData); + + private: + size_t m_RefCount; + CFX_ArrayTemplate<CJS_GlobalData_Element*> m_arrayGlobalData; + CFX_WideString m_sFilePath; + CPDFDoc_Environment* m_pApp; +}; + +#endif // FPDFSDK_SRC_JAVASCRIPT_JS_GLOBALDATA_H_ |