From 5b3d0208723f21c50b9922bdc500c9d78c359a25 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Tue, 6 Oct 2015 07:50:47 -0700 Subject: Make the vast majority of JS headers private to src/javascript. The fpdfsdk/include/javascript/IJavascript.h is the sole API. This required moving a creaton method to it from JS_Runtime. R=thestig@chromium.org Review URL: https://codereview.chromium.org/1389783002 . --- fpdfsdk/src/javascript/global.h | 93 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 fpdfsdk/src/javascript/global.h (limited to 'fpdfsdk/src/javascript/global.h') diff --git a/fpdfsdk/src/javascript/global.h b/fpdfsdk/src/javascript/global.h new file mode 100644 index 0000000000..03b6e76bc8 --- /dev/null +++ b/fpdfsdk/src/javascript/global.h @@ -0,0 +1,93 @@ +// 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_GLOBAL_H_ +#define FPDFSDK_SRC_JAVASCRIPT_GLOBAL_H_ + +#include + +#include "JS_Define.h" + +class CJS_GlobalData; +class CJS_GlobalVariableArray; +class CJS_KeyValue; + +struct JSGlobalData { + JSGlobalData() { + nType = 0; + dData = 0; + bData = FALSE; + sData = ""; + bPersistent = FALSE; + bDeleted = FALSE; + } + + ~JSGlobalData() { pData.Reset(); } + int nType; // 0:int 1:bool 2:string 3:obj + double dData; + bool bData; + CFX_ByteString sData; + v8::Global pData; + bool bPersistent; + bool bDeleted; +}; + +class JSGlobalAlternate : public CJS_EmbedObj { + public: + JSGlobalAlternate(CJS_Object* pJSObject); + ~JSGlobalAlternate() override; + + FX_BOOL setPersistent(IFXJS_Context* cc, + const CJS_Parameters& params, + CJS_Value& vRet, + CFX_WideString& sError); + FX_BOOL QueryProperty(const FX_WCHAR* propname); + FX_BOOL DoProperty(IFXJS_Context* cc, + const FX_WCHAR* propname, + CJS_PropValue& vp, + CFX_WideString& sError); + FX_BOOL DelProperty(IFXJS_Context* cc, + const FX_WCHAR* propname, + CFX_WideString& sError); + void Initial(CPDFDoc_Environment* pApp); + + private: + void UpdateGlobalPersistentVariables(); + void CommitGlobalPersisitentVariables(); + void DestroyGlobalPersisitentVariables(); + FX_BOOL SetGlobalVariables(const FX_CHAR* propname, + int nType, + double dData, + bool bData, + const CFX_ByteString& sData, + v8::Local pData, + bool bDefaultPersistent); + + void ObjectToArray(v8::Local pObj, + CJS_GlobalVariableArray& array); + void PutObjectProperty(v8::Local obj, CJS_KeyValue* pData); + + private: + std::map m_mapGlobal; + CFX_WideString m_sFilePath; + CJS_GlobalData* m_pGlobalData; + CPDFDoc_Environment* m_pApp; +}; + +class CJS_Global : public CJS_Object { + public: + explicit CJS_Global(v8::Local pObject) : CJS_Object(pObject) {} + ~CJS_Global() override {} + + // CJS_Object + FX_BOOL InitInstance(IFXJS_Context* cc) override; + + DECLARE_SPECIAL_JS_CLASS(CJS_Global); + + JS_SPECIAL_STATIC_METHOD(setPersistent, JSGlobalAlternate, global); +}; + +#endif // FPDFSDK_SRC_JAVASCRIPT_GLOBAL_H_ -- cgit v1.2.3