From 5110c4743751145c4ae1934cd1d83bc6c55bb43f Mon Sep 17 00:00:00 2001 From: John Abd-El-Malek Date: Sat, 17 May 2014 22:33:34 -0700 Subject: Initial commit. --- fpdfsdk/include/javascript/JS_Runtime.h | 70 +++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 fpdfsdk/include/javascript/JS_Runtime.h (limited to 'fpdfsdk/include/javascript/JS_Runtime.h') diff --git a/fpdfsdk/include/javascript/JS_Runtime.h b/fpdfsdk/include/javascript/JS_Runtime.h new file mode 100644 index 0000000000..32f845755f --- /dev/null +++ b/fpdfsdk/include/javascript/JS_Runtime.h @@ -0,0 +1,70 @@ +// 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 _JS_RUNTIME_H_ +#define _JS_RUNTIME_H_ + +class CJS_FieldEvent +{ +public: + CFX_WideString sTargetName; + JS_EVENT_T eEventType; + CJS_FieldEvent* pNext; +}; + +class CJS_Runtime : public IFXJS_Runtime +{ +public: + CJS_Runtime(CPDFDoc_Environment * pApp); + virtual ~CJS_Runtime(); + + virtual IFXJS_Context * NewContext(); + virtual void ReleaseContext(IFXJS_Context * pContext); + virtual IFXJS_Context* GetCurrentContext(); + + virtual void SetReaderDocument(CPDFSDK_Document *pReaderDoc); + virtual CPDFSDK_Document * GetReaderDocument(){return m_pDocument;} + + virtual void GetObjectNames(CFX_WideStringArray& array); + virtual void GetObjectConsts(const CFX_WideString& swObjName, CFX_WideStringArray& array); + virtual void GetObjectProps(const CFX_WideString& swObjName, CFX_WideStringArray& array); + virtual void GetObjectMethods(const CFX_WideString& swObjName, CFX_WideStringArray& array); + + virtual void Exit(); + virtual void Enter(); + virtual FX_BOOL IsEntered(); + + CPDFDoc_Environment * GetReaderApp(){return m_pApp;} + + FX_BOOL InitJSObjects(); + + FX_BOOL AddEventToLoop(const CFX_WideString& sTargetName, JS_EVENT_T eEventType); + void RemoveEventInLoop(const CFX_WideString& sTargetName, JS_EVENT_T eEventType); + void RemoveEventsInLoop(CJS_FieldEvent* pStart); + + void BeginBlock(){m_bBlocking = TRUE;} + void EndBlock(){m_bBlocking = FALSE;} + FX_BOOL IsBlocking(){return m_bBlocking;} + + operator IJS_Runtime*() {return (IJS_Runtime*)m_isolate;} + v8::Isolate* GetIsolate(){return m_isolate;}; + void SetIsolate(v8::Isolate* isolate){m_isolate = isolate;} + + v8::Handle NewJSContext(); +protected: + CFX_ArrayTemplate m_ContextArray; + CPDFDoc_Environment * m_pApp; + CPDFSDK_Document * m_pDocument; + FX_BOOL m_bBlocking; + CJS_FieldEvent* m_pFieldEventPath; + + v8::Isolate* m_isolate; + v8::Persistent m_context; + FX_BOOL m_bRegistered; +}; + +#endif //_JS_RUNTIME_H_ + -- cgit v1.2.3