diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-10-13 15:00:10 -0700 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-10-13 15:00:10 -0700 |
commit | 3342090d65e852f3f37a8f04d3fbe3ff2467d05c (patch) | |
tree | 04ea6a1adeae79279a4d4e0f147161c2b4601dcb /fpdfsdk/include | |
parent | f6c67325ebb931ecad6c0f0e90302d854db75900 (diff) | |
download | pdfium-3342090d65e852f3f37a8f04d3fbe3ff2467d05c.tar.xz |
Merge to XFA: Pass IJS_Runtime, not IJS_Context, to native object constructors.
Original Review URL: https://codereview.chromium.org/1389163007 .
(cherry picked from commit 848a13b6777cbff8cc4aea3ab3d69eaa0b82ae6c)
Merge conflics in:
fpdfsdk/src/javascript/JS_Runtime.cpp
fpdfsdk/src/javascript/JS_Runtime_Stub.cpp
fpdfsdk/src/jsapi/fxjs_v8.cpp
R=thestig@chromium.org
Review URL: https://codereview.chromium.org/1394993006 .
Diffstat (limited to 'fpdfsdk/include')
-rw-r--r-- | fpdfsdk/include/javascript/IJavaScript.h | 7 | ||||
-rw-r--r-- | fpdfsdk/include/jsapi/fxjs_v8.h | 16 |
2 files changed, 13 insertions, 10 deletions
diff --git a/fpdfsdk/include/javascript/IJavaScript.h b/fpdfsdk/include/javascript/IJavaScript.h index f78ee52793..c8962bd343 100644 --- a/fpdfsdk/include/javascript/IJavaScript.h +++ b/fpdfsdk/include/javascript/IJavaScript.h @@ -17,10 +17,11 @@ class CPDFSDK_Document; class CPDF_Bookmark; class CPDF_FormField; +// Records the details of an event and triggers JS execution for it. class IJS_Context { public: virtual FX_BOOL RunScript(const CFX_WideString& script, - CFX_WideString& info) = 0; + CFX_WideString* info) = 0; virtual void OnApp_Init() = 0; @@ -132,6 +133,7 @@ class IJS_Context { virtual ~IJS_Context() {} }; +// Owns the FJXS objects needed to actually execute JS. class IJS_Runtime { public: static void Initialize(unsigned int slot, void* isolate); @@ -144,6 +146,9 @@ class IJS_Runtime { virtual void SetReaderDocument(CPDFSDK_Document* pReaderDoc) = 0; virtual CPDFSDK_Document* GetReaderDocument() = 0; + virtual int Execute(IJS_Context* cc, + const wchar_t* script, + CFX_WideString* info) = 0; virtual FX_BOOL GetHValueByName(const CFX_ByteStringC& utf8Name, FXJSE_HVALUE hValue) = 0; diff --git a/fpdfsdk/include/jsapi/fxjs_v8.h b/fpdfsdk/include/jsapi/fxjs_v8.h index d3cd4ebe6e..7c6f49798d 100644 --- a/fpdfsdk/include/jsapi/fxjs_v8.h +++ b/fpdfsdk/include/jsapi/fxjs_v8.h @@ -17,10 +17,10 @@ #include <v8.h> #include "../../../core/include/fxcrt/fx_basic.h" -// FXJS_V8 places no interpretation on these two classes; it merely -// passes them on to the caller-provided FXJS_CONSTRUCTORs. -class IJS_Context; -class IJS_Runtime; +// FXJS_V8 places no restrictions on these two classes; it merely passes them +// on to caller-provided methods. +class IJS_Context; // A description of the event that caused JS execution. +class IJS_Runtime; // A native runtime, typically owns the v8::Context. // FXJS_V8 places no interpreation on this calass; it merely passes it // along to XFA. @@ -66,7 +66,7 @@ class FXJS_ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { void Free(void* data, size_t length) override; }; -using FXJS_CONSTRUCTOR = void (*)(IJS_Context* cc, v8::Local<v8::Object> obj); +using FXJS_CONSTRUCTOR = void (*)(IJS_Runtime* cc, v8::Local<v8::Object> obj); using FXJS_DESTRUCTOR = void (*)(v8::Local<v8::Object> obj); // Call before making FXJS_PrepareIsolate call. @@ -124,8 +124,7 @@ void FXJS_DefineGlobalConst(v8::Isolate* pIsolate, // Called after FXJS_Define* calls made. void FXJS_InitializeRuntime(v8::Isolate* pIsolate, - IJS_Runtime* pFXRuntime, - IJS_Context* context, + IJS_Runtime* pIRuntime, v8::Global<v8::Context>& v8PersistentContext); void FXJS_ReleaseRuntime(v8::Isolate* pIsolate, v8::Global<v8::Context>& v8PersistentContext); @@ -135,11 +134,10 @@ IJS_Runtime* FXJS_GetRuntimeFromIsolate(v8::Isolate* pIsolate); int FXJS_Execute(v8::Isolate* pIsolate, IJS_Context* pJSContext, const wchar_t* script, - long length, FXJSErr* perror); v8::Local<v8::Object> FXJS_NewFxDynamicObj(v8::Isolate* pIsolate, - IJS_Context* pJSContext, + IJS_Runtime* pJSContext, int nObjDefnID); v8::Local<v8::Object> FXJS_GetThisObj(v8::Isolate* pIsolate); int FXJS_GetObjDefnID(v8::Local<v8::Object> pObj); |