NameDateSize

..10-Aug-20184 KiB

cfxjse_arguments.cpp10-Aug-20181.9 KiB

cfxjse_arguments.h10-Aug-20181.1 KiB

cfxjse_class.cpp10-Aug-201811.7 KiB

cfxjse_class.h10-Aug-20181.3 KiB

cfxjse_context.cpp10-Aug-201810.1 KiB

cfxjse_context.h10-Aug-20181.8 KiB

cfxjse_engine.cpp10-Aug-201826.7 KiB

cfxjse_engine.h10-Aug-20185.1 KiB

cfxjse_formcalc_context.cpp10-Aug-2018203.3 KiB

cfxjse_formcalc_context.h10-Aug-201821.4 KiB

cfxjse_formcalc_context_embeddertest.cpp10-Aug-201843.4 KiB

cfxjse_isolatetracker.h10-Aug-20181.7 KiB

cfxjse_resolveprocessor.cpp10-Aug-201825.2 KiB

cfxjse_resolveprocessor.h10-Aug-20182.5 KiB

cfxjse_runtimedata.cpp10-Aug-20181.7 KiB

cfxjse_runtimedata.h10-Aug-2018965

cfxjse_value.cpp10-Aug-201814.5 KiB

cfxjse_value.h10-Aug-20183 KiB

cjs_annot.cpp10-Aug-20183.3 KiB

cjs_annot.h10-Aug-20181.4 KiB

cjs_app.cpp10-Aug-201818.8 KiB

cjs_app.h10-Aug-20186.6 KiB

cjs_border.cpp10-Aug-2018813

cjs_border.h10-Aug-2018645

cjs_color.cpp10-Aug-201810.1 KiB

cjs_color.h10-Aug-20183.8 KiB

cjs_console.cpp10-Aug-20181.8 KiB

cjs_console.h10-Aug-20181.4 KiB

cjs_delaydata.cpp10-Aug-2018449

cjs_delaydata.h10-Aug-2018880

cjs_display.cpp10-Aug-2018765

cjs_display.h10-Aug-2018651

cjs_document.cpp10-Aug-201850.3 KiB

cjs_document.h10-Aug-201814.2 KiB

cjs_embedobj.cpp10-Aug-2018416

cjs_embedobj.h10-Aug-2018620

cjs_event.cpp10-Aug-20189.8 KiB

cjs_event.h10-Aug-20184.1 KiB

cjs_event_context.cpp10-Aug-201810 KiB

cjs_event_context.h10-Aug-20185.7 KiB

cjs_event_context_stub.cpp10-Aug-2018422

cjs_event_context_stub.h10-Aug-20185.2 KiB

cjs_eventhandler.cpp10-Aug-201818 KiB

cjs_eventhandler.h10-Aug-20186.4 KiB

cjs_field.cpp10-Aug-201886.1 KiB

cjs_field.h10-Aug-201818.6 KiB

cjs_font.cpp10-Aug-20181.3 KiB

cjs_font.h10-Aug-2018633

cjs_global.cpp10-Aug-201821.6 KiB

cjs_global.h10-Aug-20181.4 KiB

cjs_globalarrays.cpp10-Aug-20183.4 KiB

cjs_globalarrays.h10-Aug-2018486

cjs_globalconsts.cpp10-Aug-20182 KiB

cjs_globalconsts.h10-Aug-2018486

cjs_globaldata.cpp10-Aug-201812.4 KiB

cjs_globaldata.h10-Aug-20182.5 KiB

cjs_globalvariablearray.cpp10-Aug-20182.3 KiB

cjs_globalvariablearray.h10-Aug-2018735

cjs_highlight.cpp10-Aug-2018778

cjs_highlight.h10-Aug-2018663

cjs_icon.cpp10-Aug-20181.1 KiB

cjs_icon.h10-Aug-20181.1 KiB

cjs_keyvalue.cpp10-Aug-2018340

cjs_keyvalue.h10-Aug-2018693

cjs_object.cpp10-Aug-20181.7 KiB

cjs_object.h10-Aug-20181.9 KiB

cjs_position.cpp10-Aug-2018914

cjs_position.h10-Aug-2018657

cjs_printparamsobj.cpp10-Aug-2018927

cjs_printparamsobj.h10-Aug-2018972

cjs_publicmethods.cpp10-Aug-201851.3 KiB

cjs_publicmethods.h10-Aug-20186.5 KiB

cjs_publicmethods_embeddertest.cpp10-Aug-20185.4 KiB

cjs_publicmethods_unittest.cpp10-Aug-20181.4 KiB

cjs_report.cpp10-Aug-20181.2 KiB

cjs_report.h10-Aug-20181.1 KiB

cjs_return.cpp10-Aug-2018595

cjs_return.h10-Aug-2018876

cjs_runtime.cpp10-Aug-20188.6 KiB

cjs_runtime.h10-Aug-20182.3 KiB

cjs_runtimestub.cpp10-Aug-20181.6 KiB

cjs_scalehow.cpp10-Aug-2018692

cjs_scalehow.h10-Aug-2018657

cjs_scalewhen.cpp10-Aug-2018774

cjs_scalewhen.h10-Aug-2018663

cjs_style.cpp10-Aug-2018848

cjs_style.h10-Aug-2018639

cjs_timerobj.cpp10-Aug-2018885

cjs_timerobj.h10-Aug-2018955

cjs_util.cpp10-Aug-201814 KiB

cjs_util.h10-Aug-20181.8 KiB

cjs_util_unittest.cpp10-Aug-20182.9 KiB

cjs_v8.cpp10-Aug-20187.5 KiB

cjs_v8.h10-Aug-20183.2 KiB

cjs_zoomtype.cpp10-Aug-2018955

cjs_zoomtype.h10-Aug-2018657

CJX_Define.h10-Aug-20181.4 KiB

DEPS10-Aug-2018165

fxjs_v8.cpp10-Aug-201819.6 KiB

fxjs_v8.h10-Aug-20186.4 KiB

fxjs_v8_embeddertest.cpp10-Aug-20188 KiB

fxjse.h10-Aug-20182.1 KiB

global_timer.cpp10-Aug-20182.2 KiB

global_timer.h10-Aug-20181.4 KiB

ijs_event_context.h10-Aug-20186 KiB

ijs_runtime.h10-Aug-20181.4 KiB

JS_Define.cpp10-Aug-20188.4 KiB

JS_Define.h10-Aug-20186.1 KiB

js_resources.cpp10-Aug-20182.6 KiB

js_resources.h10-Aug-20181 KiB

README10-Aug-20181.5 KiB

xfa/10-Aug-201812 KiB

README

1There are two separate wrappers for V8 here.  One is called FXJS, and
2it is used by the non-XFA code.  The other is called FXJSE, and it is
3used only by the XFA code.  Additionally FXJSE may request services
4from FXJS to bridge the two.
5
6Both the FXJS and FXJSE binding code needs to be replaced by something
7saner, perhaps Gin or perhaps some IDL. See
8  https://bugs.chromium.org/p/pdfium/issues/detail?id=716
9for progress on the issue.
10
11FXJS binds objects by sticking a pointer to a CFXJS_PerObjectData in
12the V8 object's internal slot.  FXJSE binds objects by sticking a
13pointer to either an actual v8 function object or a CFXJSE_HostObject
14in the V8 object's internal slot, depending upon whether the object
15represents (in some notion) a "class" or an "instance". Also, V8 objects
16bound in one library may unexpectedly arrive at the other given a script
17that's trying to mess with us.
18
19To distinguish these cases, we use two internal slots for all bound
20objects, regardless of the FXJS/FXJSE distinction.  Slot 0 is the
21tag and contains either:
22  kPerObjectDataTag for FXJS objects, or
23  g_FXJSETagString for FXJSE Host objects, or
24  One of 4 specific FXJSE_CLASS_DESCRIPTOR globals for FXJSE classes:
25    GlobalClassDescriptor
26    NormalClassDescriptor
27    VariablesClassDescriptor
28    formcalc_fm2js_descriptor
29
30Slot 1's contents are determined by these tags:
31  kPerObjectDataTag means to expect a CFXJS_PerObjectData.
32  g_FXJSETagString means to expect a CFXJSE_HostObject.
33  A FXJSE_CLASS_DESCRIPTOR pointer means to expect a v8 function.
34