diff options
Diffstat (limited to 'fpdfsdk/include/javascript/JS_Runtime.h')
-rw-r--r-- | fpdfsdk/include/javascript/JS_Runtime.h | 70 |
1 files changed, 70 insertions, 0 deletions
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<v8::Context> NewJSContext();
+protected:
+ CFX_ArrayTemplate<CJS_Context *> m_ContextArray;
+ CPDFDoc_Environment * m_pApp;
+ CPDFSDK_Document * m_pDocument;
+ FX_BOOL m_bBlocking;
+ CJS_FieldEvent* m_pFieldEventPath;
+
+ v8::Isolate* m_isolate;
+ v8::Persistent<v8::Context> m_context;
+ FX_BOOL m_bRegistered;
+};
+
+#endif //_JS_RUNTIME_H_
+
|