You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hmz007 36ed224bac
Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a)
1 year ago
..
gc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
xfa Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
Android.bp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
BUILD.gn Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
DEPS Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
README Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfx_globaldata.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfx_globaldata.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfx_globaldata_unittest.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfx_keyvalue.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfx_keyvalue.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfx_v8.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfx_v8.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfx_v8_array_buffer_allocator.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfx_v8_array_buffer_allocator.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfx_v8_unittest.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfxjs_engine.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfxjs_engine.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfxjs_engine_embeddertest.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cfxjs_engine_unittest.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_annot.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_annot.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_app.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_app.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_border.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_border.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_color.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_color.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_console.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_console.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_delaydata.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_delaydata.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_display.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_display.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_document.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_document.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_event.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_event.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_event_context.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_event_context.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_event_context_stub.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_event_context_stub.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_field.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_field.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_font.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_font.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_global.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_global.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_globalarrays.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_globalarrays.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_globalconsts.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_globalconsts.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_highlight.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_highlight.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_icon.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_icon.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_object.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_object.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_position.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_position.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_publicmethods.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_publicmethods.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_publicmethods_embeddertest.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_publicmethods_unittest.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_result.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_result.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_runtime.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_runtime.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_runtimestub.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_runtimestub.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_scalehow.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_scalehow.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_scalewhen.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_scalewhen.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_style.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_style.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_timerobj.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_timerobj.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_util.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_util.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_util_unittest.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_zoomtype.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
cjs_zoomtype.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fx_date_helpers.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fx_date_helpers.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fx_date_helpers_unittest.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fxv8.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
fxv8.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
global_timer.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
global_timer.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ijs_event_context.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ijs_runtime.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
ijs_runtime.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
js_define.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
js_define.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
js_resources.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
js_resources.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago

README

There are two separate wrappers for V8 here.  One is called FXJS, and
it is used by the non-XFA code.  The other is called FXJSE, and it is
used only by the XFA code.  Additionally FXJSE may request services
from FXJS to bridge the two.

Both the FXJS and FXJSE binding code needs to be replaced by something
saner, perhaps Gin or perhaps some IDL. See
  https://bugs.chromium.org/p/pdfium/issues/detail?id=716
for progress on the issue.

FXJS binds objects by sticking a pointer to a CFXJS_PerObjectData in
the V8 object's internal slot.  FXJSE binds objects by sticking a
pointer to either an actual v8 function object or a CFXJSE_HostObject
in the V8 object's internal slot, depending upon whether the object
represents (in some notion) a "class" or an "instance". Also, V8 objects
bound in one library may unexpectedly arrive at the other given a script
that's trying to mess with us.

To distinguish these cases, we use two internal slots for all bound
objects, regardless of the FXJS/FXJSE distinction.  Slot 0 is the
tag and contains either:
  kPerObjectDataTag for FXJS objects, or
  kFXJSEHostObjectTag for FXJSE Host objects, or
  kFXJSEProxyObjectTag for a global proxy object under FXJSE, or
  One of 4 specific FXJSE_CLASS_DESCRIPTOR globals for FXJSE classes:
    kGlobalClassDescriptor
    kNormalClassDescriptor
    kVariablesClassDescriptor
    kFormCalcDescriptor

Slot 1's contents are determined by these tags:
  kPerObjectDataTag means an aligned pointer to CFXJS_PerObjectData.
  kFXJSEHostObjectTag means an aligned pointer to CFXJSE_HostObject.
  kFXJSEProxyObjectTag means nullptr, and to check the prototype instead.
  A FXJSE_CLASS_DESCRIPTOR pointer means to expect an actual v8 function
  object (or a string naming that function), and not an aligned pointer.

Because PDFium uses V8 for various unrelated purposes, there may be up to
four v8::Contexts (JS Global Objects) associated with each document. One is
used by FXJS and holds objects as described by the js_api_reference.pdf
specification. The others are used by FXJSE.