Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | - | - | ||||
gc/ | H | 25-Apr-2025 | - | 923 | 687 | |
xfa/ | H | 25-Apr-2025 | - | 19,286 | 15,541 | |
Android.bp | H A D | 25-Apr-2025 | 917 | 37 | 31 | |
BUILD.gn | H A D | 25-Apr-2025 | 7.7 KiB | 302 | 294 | |
DEPS | H A D | 25-Apr-2025 | 151 | 11 | 10 | |
README | H A D | 25-Apr-2025 | 2 KiB | 42 | 36 | |
cfx_globaldata.cpp | H A D | 25-Apr-2025 | 11.6 KiB | 400 | 326 | |
cfx_globaldata.h | H A D | 25-Apr-2025 | 2.1 KiB | 75 | 52 | |
cfx_globaldata_unittest.cpp | H A D | 25-Apr-2025 | 5.5 KiB | 168 | 128 | |
cfx_keyvalue.cpp | H A D | 25-Apr-2025 | 409 | 16 | 5 | |
cfx_keyvalue.h | H A D | 25-Apr-2025 | 843 | 46 | 30 | |
cfx_v8.cpp | H A D | 25-Apr-2025 | 4 KiB | 133 | 94 | |
cfx_v8.h | H A D | 25-Apr-2025 | 2.4 KiB | 75 | 52 | |
cfx_v8_array_buffer_allocator.cpp | H A D | 25-Apr-2025 | 1.6 KiB | 54 | 37 | |
cfx_v8_array_buffer_allocator.h | H A D | 25-Apr-2025 | 1.1 KiB | 36 | 21 | |
cfx_v8_unittest.cpp | H A D | 25-Apr-2025 | 10.3 KiB | 273 | 227 | |
cfxjs_engine.cpp | H A D | 25-Apr-2025 | 25 KiB | 690 | 565 | |
cfxjs_engine.h | H A D | 25-Apr-2025 | 5.5 KiB | 155 | 107 | |
cfxjs_engine_embeddertest.cpp | H A D | 25-Apr-2025 | 3.8 KiB | 116 | 92 | |
cfxjs_engine_unittest.cpp | H A D | 25-Apr-2025 | 3.1 KiB | 110 | 82 | |
cjs_annot.cpp | H A D | 25-Apr-2025 | 3.4 KiB | 112 | 79 | |
cjs_annot.h | H A D | 25-Apr-2025 | 1.3 KiB | 46 | 28 | |
cjs_app.cpp | H A D | 25-Apr-2025 | 19.7 KiB | 583 | 453 | |
cjs_app.h | H A D | 25-Apr-2025 | 6.6 KiB | 164 | 131 | |
cjs_border.cpp | H A D | 25-Apr-2025 | 773 | 24 | 13 | |
cjs_border.h | H A D | 25-Apr-2025 | 558 | 24 | 12 | |
cjs_color.cpp | H A D | 25-Apr-2025 | 10.9 KiB | 319 | 253 | |
cjs_color.h | H A D | 25-Apr-2025 | 3.8 KiB | 111 | 81 | |
cjs_console.cpp | H A D | 25-Apr-2025 | 1.9 KiB | 60 | 39 | |
cjs_console.h | H A D | 25-Apr-2025 | 1.3 KiB | 44 | 29 | |
cjs_delaydata.cpp | H A D | 25-Apr-2025 | 439 | 13 | 4 | |
cjs_delaydata.h | H A D | 25-Apr-2025 | 860 | 35 | 23 | |
cjs_display.cpp | H A D | 25-Apr-2025 | 725 | 23 | 12 | |
cjs_display.h | H A D | 25-Apr-2025 | 563 | 24 | 12 | |
cjs_document.cpp | H A D | 25-Apr-2025 | 47.7 KiB | 1,428 | 1,135 | |
cjs_document.h | H A D | 25-Apr-2025 | 14.1 KiB | 318 | 264 | |
cjs_event.cpp | H A D | 25-Apr-2025 | 10.6 KiB | 301 | 233 | |
cjs_event.h | H A D | 25-Apr-2025 | 4.1 KiB | 109 | 76 | |
cjs_event_context.cpp | H A D | 25-Apr-2025 | 12.1 KiB | 427 | 370 | |
cjs_event_context.h | H A D | 25-Apr-2025 | 5.7 KiB | 176 | 157 | |
cjs_event_context_stub.cpp | H A D | 25-Apr-2025 | 559 | 17 | 7 | |
cjs_event_context_stub.h | H A D | 25-Apr-2025 | 3 KiB | 80 | 67 | |
cjs_field.cpp | H A D | 25-Apr-2025 | 90.1 KiB | 2,640 | 2,217 | |
cjs_field.h | H A D | 25-Apr-2025 | 16 KiB | 375 | 301 | |
cjs_font.cpp | H A D | 25-Apr-2025 | 1.3 KiB | 32 | 21 | |
cjs_font.h | H A D | 25-Apr-2025 | 548 | 24 | 12 | |
cjs_global.cpp | H A D | 25-Apr-2025 | 17.9 KiB | 525 | 460 | |
cjs_global.h | H A D | 25-Apr-2025 | 3.8 KiB | 100 | 69 | |
cjs_globalarrays.cpp | H A D | 25-Apr-2025 | 4 KiB | 87 | 58 | |
cjs_globalarrays.h | H A D | 25-Apr-2025 | 475 | 18 | 8 | |
cjs_globalconsts.cpp | H A D | 25-Apr-2025 | 1.9 KiB | 49 | 32 | |
cjs_globalconsts.h | H A D | 25-Apr-2025 | 475 | 18 | 8 | |
cjs_highlight.cpp | H A D | 25-Apr-2025 | 738 | 23 | 12 | |
cjs_highlight.h | H A D | 25-Apr-2025 | 573 | 24 | 12 | |
cjs_icon.cpp | H A D | 25-Apr-2025 | 1.2 KiB | 39 | 22 | |
cjs_icon.h | H A D | 25-Apr-2025 | 1,018 | 38 | 22 | |
cjs_object.cpp | H A D | 25-Apr-2025 | 1.5 KiB | 45 | 29 | |
cjs_object.h | H A D | 25-Apr-2025 | 1.6 KiB | 62 | 44 | |
cjs_position.cpp | H A D | 25-Apr-2025 | 874 | 26 | 15 | |
cjs_position.h | H A D | 25-Apr-2025 | 568 | 24 | 12 | |
cjs_publicmethods.cpp | H A D | 25-Apr-2025 | 45.3 KiB | 1,458 | 1,224 | |
cjs_publicmethods.h | H A D | 25-Apr-2025 | 6.2 KiB | 155 | 136 | |
cjs_publicmethods_embeddertest.cpp | H A D | 25-Apr-2025 | 8.8 KiB | 264 | 193 | |
cjs_publicmethods_unittest.cpp | H A D | 25-Apr-2025 | 1.3 KiB | 53 | 35 | |
cjs_result.cpp | H A D | 25-Apr-2025 | 591 | 20 | 7 | |
cjs_result.h | H A D | 25-Apr-2025 | 1.8 KiB | 58 | 32 | |
cjs_runtime.cpp | H A D | 25-Apr-2025 | 7.1 KiB | 235 | 181 | |
cjs_runtime.h | H A D | 25-Apr-2025 | 2.3 KiB | 71 | 46 | |
cjs_runtimestub.cpp | H A D | 25-Apr-2025 | 996 | 36 | 21 | |
cjs_runtimestub.h | H A D | 25-Apr-2025 | 1.1 KiB | 39 | 23 | |
cjs_scalehow.cpp | H A D | 25-Apr-2025 | 652 | 21 | 10 | |
cjs_scalehow.h | H A D | 25-Apr-2025 | 568 | 24 | 12 | |
cjs_scalewhen.cpp | H A D | 25-Apr-2025 | 734 | 23 | 12 | |
cjs_scalewhen.h | H A D | 25-Apr-2025 | 573 | 24 | 12 | |
cjs_style.cpp | H A D | 25-Apr-2025 | 808 | 24 | 13 | |
cjs_style.h | H A D | 25-Apr-2025 | 553 | 24 | 12 | |
cjs_timerobj.cpp | H A D | 25-Apr-2025 | 897 | 33 | 17 | |
cjs_timerobj.h | H A D | 25-Apr-2025 | 816 | 32 | 17 | |
cjs_util.cpp | H A D | 25-Apr-2025 | 14.2 KiB | 480 | 398 | |
cjs_util.h | H A D | 25-Apr-2025 | 2.2 KiB | 69 | 43 | |
cjs_util_unittest.cpp | H A D | 25-Apr-2025 | 3.9 KiB | 115 | 60 | |
cjs_zoomtype.cpp | H A D | 25-Apr-2025 | 915 | 26 | 15 | |
cjs_zoomtype.h | H A D | 25-Apr-2025 | 568 | 24 | 12 | |
fx_date_helpers.cpp | H A D | 25-Apr-2025 | 14.3 KiB | 553 | 473 | |
fx_date_helpers.h | H A D | 25-Apr-2025 | 2 KiB | 69 | 51 | |
fx_date_helpers_unittest.cpp | H A D | 25-Apr-2025 | 5.8 KiB | 156 | 134 | |
fxv8.cpp | H A D | 25-Apr-2025 | 10.9 KiB | 338 | 271 | |
fxv8.h | H A D | 25-Apr-2025 | 5.2 KiB | 111 | 84 | |
global_timer.cpp | H A D | 25-Apr-2025 | 2.5 KiB | 94 | 67 | |
global_timer.h | H A D | 25-Apr-2025 | 1.3 KiB | 52 | 36 | |
ijs_event_context.h | H A D | 25-Apr-2025 | 3.5 KiB | 88 | 69 | |
ijs_runtime.cpp | H A D | 25-Apr-2025 | 1.7 KiB | 62 | 45 | |
ijs_runtime.h | H A D | 25-Apr-2025 | 1.8 KiB | 67 | 43 | |
js_define.cpp | H A D | 25-Apr-2025 | 3 KiB | 100 | 75 | |
js_define.h | H A D | 25-Apr-2025 | 5.8 KiB | 163 | 116 | |
js_resources.cpp | H A D | 25-Apr-2025 | 3.5 KiB | 109 | 100 | |
js_resources.h | H A D | 25-Apr-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