Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | - | - | ||||
gc/ | 04-Jul-2025 | - | 923 | 687 | ||
xfa/ | 04-Jul-2025 | - | 19,251 | 15,517 | ||
Android.bp | D | 04-Jul-2025 | 917 | 37 | 31 | |
BUILD.gn | D | 04-Jul-2025 | 7.7 KiB | 303 | 295 | |
DEPS | D | 04-Jul-2025 | 151 | 11 | 10 | |
README | D | 04-Jul-2025 | 2 KiB | 42 | 36 | |
cfx_globaldata.cpp | D | 04-Jul-2025 | 11.9 KiB | 408 | 335 | |
cfx_globaldata.h | D | 04-Jul-2025 | 2.1 KiB | 75 | 52 | |
cfx_globaldata_unittest.cpp | D | 04-Jul-2025 | 5.5 KiB | 168 | 128 | |
cfx_keyvalue.cpp | D | 04-Jul-2025 | 409 | 16 | 5 | |
cfx_keyvalue.h | D | 04-Jul-2025 | 843 | 46 | 30 | |
cfx_v8.cpp | D | 04-Jul-2025 | 4 KiB | 133 | 94 | |
cfx_v8.h | D | 04-Jul-2025 | 2.4 KiB | 75 | 52 | |
cfx_v8_array_buffer_allocator.cpp | D | 04-Jul-2025 | 1.6 KiB | 54 | 37 | |
cfx_v8_array_buffer_allocator.h | D | 04-Jul-2025 | 1.1 KiB | 36 | 21 | |
cfx_v8_unittest.cpp | D | 04-Jul-2025 | 10.2 KiB | 274 | 228 | |
cfxjs_engine.cpp | D | 04-Jul-2025 | 25.1 KiB | 686 | 560 | |
cfxjs_engine.h | D | 04-Jul-2025 | 6.5 KiB | 183 | 127 | |
cfxjs_engine_embeddertest.cpp | D | 04-Jul-2025 | 3.8 KiB | 116 | 92 | |
cfxjs_engine_unittest.cpp | D | 04-Jul-2025 | 3 KiB | 108 | 80 | |
cjs_annot.cpp | D | 04-Jul-2025 | 3.4 KiB | 112 | 79 | |
cjs_annot.h | D | 04-Jul-2025 | 1.3 KiB | 46 | 28 | |
cjs_app.cpp | D | 04-Jul-2025 | 19.6 KiB | 572 | 441 | |
cjs_app.h | D | 04-Jul-2025 | 6.5 KiB | 164 | 131 | |
cjs_border.cpp | D | 04-Jul-2025 | 773 | 24 | 13 | |
cjs_border.h | D | 04-Jul-2025 | 558 | 24 | 12 | |
cjs_color.cpp | D | 04-Jul-2025 | 10.9 KiB | 319 | 253 | |
cjs_color.h | D | 04-Jul-2025 | 3.8 KiB | 110 | 81 | |
cjs_console.cpp | D | 04-Jul-2025 | 1.9 KiB | 58 | 38 | |
cjs_console.h | D | 04-Jul-2025 | 1.3 KiB | 43 | 29 | |
cjs_delaydata.cpp | D | 04-Jul-2025 | 439 | 13 | 4 | |
cjs_delaydata.h | D | 04-Jul-2025 | 860 | 35 | 23 | |
cjs_display.cpp | D | 04-Jul-2025 | 749 | 23 | 12 | |
cjs_display.h | D | 04-Jul-2025 | 563 | 24 | 12 | |
cjs_document.cpp | D | 04-Jul-2025 | 48 KiB | 1,410 | 1,117 | |
cjs_document.h | D | 04-Jul-2025 | 13.9 KiB | 317 | 263 | |
cjs_event.cpp | D | 04-Jul-2025 | 10.7 KiB | 301 | 240 | |
cjs_event.h | D | 04-Jul-2025 | 4.1 KiB | 109 | 76 | |
cjs_event_context.cpp | D | 04-Jul-2025 | 12.1 KiB | 427 | 370 | |
cjs_event_context.h | D | 04-Jul-2025 | 5.7 KiB | 176 | 157 | |
cjs_event_context_stub.cpp | D | 04-Jul-2025 | 558 | 17 | 7 | |
cjs_event_context_stub.h | D | 04-Jul-2025 | 3 KiB | 80 | 67 | |
cjs_field.cpp | D | 04-Jul-2025 | 90.3 KiB | 2,624 | 2,201 | |
cjs_field.h | D | 04-Jul-2025 | 15.9 KiB | 373 | 299 | |
cjs_font.cpp | D | 04-Jul-2025 | 1.3 KiB | 32 | 21 | |
cjs_font.h | D | 04-Jul-2025 | 548 | 24 | 12 | |
cjs_global.cpp | D | 04-Jul-2025 | 18.4 KiB | 544 | 476 | |
cjs_global.h | D | 04-Jul-2025 | 3.8 KiB | 104 | 73 | |
cjs_globalarrays.cpp | D | 04-Jul-2025 | 4.2 KiB | 91 | 62 | |
cjs_globalarrays.h | D | 04-Jul-2025 | 475 | 18 | 8 | |
cjs_globalconsts.cpp | D | 04-Jul-2025 | 1.9 KiB | 49 | 32 | |
cjs_globalconsts.h | D | 04-Jul-2025 | 475 | 18 | 8 | |
cjs_highlight.cpp | D | 04-Jul-2025 | 738 | 23 | 12 | |
cjs_highlight.h | D | 04-Jul-2025 | 573 | 24 | 12 | |
cjs_icon.cpp | D | 04-Jul-2025 | 1.2 KiB | 39 | 22 | |
cjs_icon.h | D | 04-Jul-2025 | 1,018 | 38 | 22 | |
cjs_object.cpp | D | 04-Jul-2025 | 1.5 KiB | 45 | 29 | |
cjs_object.h | D | 04-Jul-2025 | 1.7 KiB | 61 | 44 | |
cjs_position.cpp | D | 04-Jul-2025 | 916 | 26 | 15 | |
cjs_position.h | D | 04-Jul-2025 | 568 | 24 | 12 | |
cjs_publicmethods.cpp | D | 04-Jul-2025 | 45.4 KiB | 1,459 | 1,227 | |
cjs_publicmethods.h | D | 04-Jul-2025 | 6.4 KiB | 140 | 122 | |
cjs_publicmethods_embeddertest.cpp | D | 04-Jul-2025 | 8.6 KiB | 260 | 190 | |
cjs_publicmethods_unittest.cpp | D | 04-Jul-2025 | 1.3 KiB | 51 | 33 | |
cjs_result.cpp | D | 04-Jul-2025 | 591 | 20 | 7 | |
cjs_result.h | D | 04-Jul-2025 | 1.7 KiB | 59 | 32 | |
cjs_runtime.cpp | D | 04-Jul-2025 | 7.1 KiB | 235 | 181 | |
cjs_runtime.h | D | 04-Jul-2025 | 2.3 KiB | 71 | 46 | |
cjs_runtimestub.cpp | D | 04-Jul-2025 | 994 | 36 | 21 | |
cjs_runtimestub.h | D | 04-Jul-2025 | 1.1 KiB | 39 | 23 | |
cjs_scalehow.cpp | D | 04-Jul-2025 | 652 | 21 | 10 | |
cjs_scalehow.h | D | 04-Jul-2025 | 568 | 24 | 12 | |
cjs_scalewhen.cpp | D | 04-Jul-2025 | 758 | 23 | 12 | |
cjs_scalewhen.h | D | 04-Jul-2025 | 573 | 24 | 12 | |
cjs_style.cpp | D | 04-Jul-2025 | 808 | 24 | 13 | |
cjs_style.h | D | 04-Jul-2025 | 553 | 24 | 12 | |
cjs_timerobj.cpp | D | 04-Jul-2025 | 897 | 33 | 17 | |
cjs_timerobj.h | D | 04-Jul-2025 | 816 | 32 | 17 | |
cjs_util.cpp | D | 04-Jul-2025 | 14.3 KiB | 481 | 401 | |
cjs_util.h | D | 04-Jul-2025 | 2.1 KiB | 68 | 43 | |
cjs_util_unittest.cpp | D | 04-Jul-2025 | 3.9 KiB | 115 | 60 | |
cjs_zoomtype.cpp | D | 04-Jul-2025 | 915 | 26 | 15 | |
cjs_zoomtype.h | D | 04-Jul-2025 | 568 | 24 | 12 | |
fx_date_helpers.cpp | D | 04-Jul-2025 | 14.2 KiB | 554 | 473 | |
fx_date_helpers.h | D | 04-Jul-2025 | 2 KiB | 71 | 52 | |
fx_date_helpers_unittest.cpp | D | 04-Jul-2025 | 5.8 KiB | 156 | 134 | |
fxv8.cpp | D | 04-Jul-2025 | 11 KiB | 341 | 272 | |
fxv8.h | D | 04-Jul-2025 | 5.2 KiB | 111 | 84 | |
global_timer.cpp | D | 04-Jul-2025 | 2.6 KiB | 105 | 74 | |
global_timer.h | D | 04-Jul-2025 | 1.4 KiB | 55 | 38 | |
ijs_event_context.h | D | 04-Jul-2025 | 3.5 KiB | 89 | 69 | |
ijs_runtime.cpp | D | 04-Jul-2025 | 1.8 KiB | 65 | 48 | |
ijs_runtime.h | D | 04-Jul-2025 | 1.8 KiB | 67 | 43 | |
js_define.cpp | D | 04-Jul-2025 | 3 KiB | 100 | 75 | |
js_define.h | D | 04-Jul-2025 | 5.8 KiB | 167 | 122 | |
js_resources.cpp | D | 04-Jul-2025 | 3.5 KiB | 109 | 100 | |
js_resources.h | D | 04-Jul-2025 | 1.1 KiB | 47 | 36 |
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 kFXJSEHostObjectTag for FXJSE Host objects, or 24 kFXJSEProxyObjectTag for a global proxy object under FXJSE, or 25 One of 4 specific FXJSE_CLASS_DESCRIPTOR globals for FXJSE classes: 26 kGlobalClassDescriptor 27 kNormalClassDescriptor 28 kVariablesClassDescriptor 29 kFormCalcDescriptor 30 31Slot 1's contents are determined by these tags: 32 kPerObjectDataTag means an aligned pointer to CFXJS_PerObjectData. 33 kFXJSEHostObjectTag means an aligned pointer to CFXJSE_HostObject. 34 kFXJSEProxyObjectTag means nullptr, and to check the prototype instead. 35 A FXJSE_CLASS_DESCRIPTOR pointer means to expect an actual v8 function 36 object (or a string naming that function), and not an aligned pointer. 37 38Because PDFium uses V8 for various unrelated purposes, there may be up to 39four v8::Contexts (JS Global Objects) associated with each document. One is 40used by FXJS and holds objects as described by the js_api_reference.pdf 41specification. The others are used by FXJSE. 42