diff options
author | Tom Sepez <tsepez@chromium.org> | 2015-09-15 15:30:34 -0700 |
---|---|---|
committer | Tom Sepez <tsepez@chromium.org> | 2015-09-15 15:30:34 -0700 |
commit | 7d0fcbf8198f04a5a5bd15482fdbdae919fb1891 (patch) | |
tree | 61817fe7a1fa74c00a7610e8537df62f13e0d8f8 /fpdfsdk/include/jsapi/fxjs_v8.h | |
parent | 5eb8ba2ef43bac9c8fb96f75357b21b0dbeefe80 (diff) | |
download | pdfium-7d0fcbf8198f04a5a5bd15482fdbdae919fb1891.tar.xz |
Merge to XFA: Refactor fxjs_v8 and add embeddertests for it.
(cherry picked from commit b17d62601b21dfce85718e08cfd0ffce3a45d74e)
(cherry picked from commit 09ed30750282bf56a92d0e646ab22c64bea81a36)
Manual edits:
fpdfsdk/src/jsapi/fxjs_v8_embeddertest.cpp - add lockers.
fppdfsdk/src/javascript/JS_Runtime.cpp - rework XFA init path.
Original Review URL: https://codereview.chromium.org/1338073002 .
R=thestig@chromium.org
Review URL: https://codereview.chromium.org/1348433002 .
Diffstat (limited to 'fpdfsdk/include/jsapi/fxjs_v8.h')
-rw-r--r-- | fpdfsdk/include/jsapi/fxjs_v8.h | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/fpdfsdk/include/jsapi/fxjs_v8.h b/fpdfsdk/include/jsapi/fxjs_v8.h index 4195686731..6e4fc6f7a7 100644 --- a/fpdfsdk/include/jsapi/fxjs_v8.h +++ b/fpdfsdk/include/jsapi/fxjs_v8.h @@ -45,14 +45,30 @@ extern const wchar_t kFXJSValueNameFxobj[]; extern const wchar_t kFXJSValueNameNull[]; extern const wchar_t kFXJSValueNameUndefined[]; +// FXJS_V8 places no interpretation on these two classes; it merely +// passes them on to the caller-provided LP_CONSTRUCTORs. class IFXJS_Context; class IFXJS_Runtime; +class JS_ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { + void* Allocate(size_t length) override; + void* AllocateUninitialized(size_t length) override; + void Free(void* data, size_t length) override; +}; + typedef void (*LP_CONSTRUCTOR)(IFXJS_Context* cc, v8::Local<v8::Object> obj, v8::Local<v8::Object> global); typedef void (*LP_DESTRUCTOR)(v8::Local<v8::Object> obj); +// Call before making JS_PrepareIsolate call. +void JS_Initialize(unsigned int embedderDataSlot); +void JS_Release(); + +// Call before making JS_Define* calls. Resources allocated here are cleared +// as part of JS_ReleaseRuntime(). +void JS_PrepareIsolate(v8::Isolate* pIsolate); + // Always returns a valid, newly-created objDefnID. int JS_DefineObj(v8::Isolate* pIsolate, const wchar_t* sObjName, @@ -86,19 +102,21 @@ void JS_DefineGlobalConst(v8::Isolate* pIsolate, const wchar_t* sConstName, v8::Local<v8::Value> pDefault); -void JS_InitialRuntime(v8::Isolate* pIsolate, - IFXJS_Runtime* pFXRuntime, - IFXJS_Context* context, - v8::Global<v8::Context>& v8PersistentContext); +// Called after JS_Define* calls made. +void JS_InitializeRuntime(v8::Isolate* pIsolate, + IFXJS_Runtime* pFXRuntime, + IFXJS_Context* context, + v8::Global<v8::Context>& v8PersistentContext); void JS_ReleaseRuntime(v8::Isolate* pIsolate, v8::Global<v8::Context>& v8PersistentContext); -void JS_Initial(unsigned int embedderDataSlot); -void JS_Release(); + +// Called after JS_InitializeRuntime call made. int JS_Execute(v8::Isolate* pIsolate, IFXJS_Context* pJSContext, const wchar_t* script, long length, FXJSErr* perror); + v8::Local<v8::Object> JS_NewFxDynamicObj(v8::Isolate* pIsolate, IFXJS_Context* pJSContext, int nObjDefnID); |