summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-04-09Use pdfium::span<> in CFX_BitStream, CPDF_SimpleParser.Tom Sepez
Get bounds checks in parsers automatically when using spans. Change-Id: I71fbe7b838435d455376db2f89817d807a9cdcfd Reviewed-on: https://pdfium-review.googlesource.com/29830 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-09Make StringViewTemplate be based on pdfium::span<>.Tom Sepez
Change-Id: I13d3e462c86d035bbb992696aab523df5642533b Reviewed-on: https://pdfium-review.googlesource.com/29811 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-09Revert "Remove CXFA nodes instead of CFX_XML nodes"dsinclair
This reverts commit 2b4ad9ff5bf1727d12ef2bcce7e3fa925bbe8978. Reason for revert: Causing crashes on windows: Rendering PDF file E:\b\build\slave\windows_xfa\build\pdfium\out\debug_xfa_v8\gen\pdfium\testing\pixel\static_list_box_caption.pdf. ==== C stack trace =============================== diff: 0.00% passed std::tuple<CXFA_Node * __ptr64 const & __ptr64>::tuple<CXFA_Node * __ptr64 const & __ptr64> [0x0000000141785700+48] ??@875fbed02c72fe689afc0ad24a247bf8@ [0x000000013F7BB443+131] ??$_Buynode@AEBUpiecewise_construct_t@std@@V?$tuple@AEBQEAVCXFA_Node@@@2@V?$tuple@$$V@2@@?$_Tree_comp_alloc@V?$_Tmap_traits@PEAVCXFA_Node@@V?$unique_ptr@V?$map@IV?$unique_ptr@U?$pair@V?$set@PEAVCXFA_Node@@U?$less@PEAVCXFA_Node@@@std@@V?$allocator@PEAVCXFA [0x0000000141785309+169] ??@2b14910fe4cc3866ca68e10bfed05253@ [0x000000013F7CCB09+185] CJX_Object::SetAttributeValue [0x000000013FAE0F7E+302] v8::internal::compiler::Int64Lowering::LowerNode [0x000000013FBB04C0+31920] CXFA_Document::DataMerge_CopyContainer [0x00000001417A43A3+9603] CXFA_Document::DataMerge_CopyContainer [0x00000001417A2048+552] CXFA_Document::DataMerge_CopyContainer [0x00000001417A3436+5654] CXFA_Document::DataMerge_CopyContainer [0x00000001417A1FEE+462] CXFA_Document::DoDataMerge [0x00000001417A5F96+3142] CXFA_FFDocView::StartLayout [0x00000001416BECCD+93] CPDFXFA_Context::LoadXFADoc [0x000000014169162D+669] FPDF_LoadXFA [0x0000000140AC5A2A+42] std::_Compressed_pair<std::default_delete<CFWL_WidgetProperties>,CFWL_WidgetProperties * __ptr64,1>::_Get_first [0x000000013F72A648+1432] main [0x000000013F727C05+1685] invoke_main [0x0000000141CDB924+52] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:79) __scrt_common_main_seh [0x0000000141CDB817+295] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283) __scrt_common_main [0x0000000141CDB6DE+14] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:326) mainCRTStartup [0x0000000141CDB9B9+9] (f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp:17) BaseThreadInitThunk [0x0000000077415A4D+13] RtlUserThreadStart [0x000000007764B831+33] Rendering PDF file E:\b\build\slave\windows_xfa\build\pdfium\out\debug_xfa_v8\gen\pdfium\testing\pixel\resolve_nodes.pdf. ==== C stack trace =============================== std::tuple<CXFA_Node * __ptr64 const & __ptr64>::tuple<CXFA_Node * __ptr64 const & __ptr64> [0x0000000141785700+48] ??@875fbed02c72fe689afc0ad24a247bf8@ [0x000000013F7BB443+131] ??$_Buynode@AEBUpiecewise_construct_t@std@@V?$tuple@AEBQEAVCXFA_Node@@@2@V?$tuple@$$V@2@@?$_Tree_comp_alloc@V?$_Tmap_traits@PEAVCXFA_Node@@V?$unique_ptr@V?$map@IV?$unique_ptr@U?$pair@V?$set@PEAVCXFA_Node@@U?$less@PEAVCXFA_Node@@@std@@V?$allocator@PEAVCXFA [0x0000000141785309+169] ??@2b14910fe4cc3866ca68e10bfed05253@ [0x000000013F7CCB09+185] CJX_Object::SetAttributeValue [0x000000013FAE0F7E+302] v8::internal::compiler::Int64Lowering::LowerNode [0x000000013FBB03F6+31718] CXFA_Document::DataMerge_UpdateBindingRelations [0x00000001417A48DA+1066] CXFA_Document::DataMerge_UpdateBindingRelations [0x00000001417A4ED8+2600] CXFA_Document::DataMerge_UpdateBindingRelations [0x00000001417A4ED8+2600] CXFA_Document::DataMerge_UpdateBindingRelations [0x00000001417A4ED8+2600] CXFA_Document::DataMerge_UpdateBindingRelations [0x00000001417A4ED8+2600] CXFA_Document::DataMerge_UpdateBindingRelations [0x00000001417A4512+98] CXFA_Document::DoDataMerge [0x00000001417A5FF8+3240] CXFA_FFDocView::StartLayout [0x00000001416BECCD+93] CPDFXFA_Context::LoadXFADoc [0x000000014169162D+669] FPDF_LoadXFA [0x0000000140AC5A2A+42] std::_Compressed_pair<std::default_delete<CFWL_WidgetProperties>,CFWL_WidgetProperties * __ptr64,1>::_Get_first [0x000000013F72A648+1432] main [0x000000013F727C05+1685] invoke_main [0x0000000141CDB924+52] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:79) __scrt_common_main_seh [0x0000000141CDB817+295] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283) __scrt_common_main [0x0000000141CDB6DE+14] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:326) mainCRTStartup [0x0000000141CDB9B9+9] (f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp:17) BaseThreadInitThunk [0x0000000077415A4D+13] RtlUserThreadStart [0x000000007764B831+33] FAILURE: static_list_box_caption.pdf; Command '['E:\\b\\build\\slave\\windows_xfa\\build\\pdfium\\out\\debug_xfa_v8\\pdfium_test.exe', '--send-events', '--png', '--md5', 'E:\\b\\build\\slave\\windows_xfa\\build\\pdfium\\out\\debug_xfa_v8\\gen\\pdfium\\testing\\pixel\\static_list_box_caption.pdf']' returned non-zero exit status -1073741819 Rendering PDF file E:\b\build\slave\windows_xfa\build\pdfium\out\debug_xfa_v8\gen\pdfium\testing\pixel\standard_symbols.pdf. ==== C stack trace =============================== std::tuple<CXFA_Node * __ptr64 const & __ptr64>::tuple<CXFA_Node * __ptr64 const & __ptr64> [0x0000000141785700+48] FAILURE: resolve_nodes.pdf; Command '['E:\\b\\build\\slave\\windows_xfa\\build\\pdfium\\out\\debug_xfa_v8\\pdfium_test.exe', '--send-events', '--png', '--md5', 'E:\\b\\build\\slave\\windows_xfa\\build\\pdfium\\out\\debug_xfa_v8\\gen\\pdfium\\testing\\pixel\\resolve_nodes.pdf']' returned non-zero exit status -1073741819 ??@875fbed02c72fe689afc0ad24a247bf8@ [0x000000013F7BB443+131] ??$_Buynode@AEBUpiecewise_construct_t@std@@V?$tuple@AEBQEAVCXFA_Node@@@2@V?$tuple@$$V@2@@?$_Tree_comp_alloc@V?$_Tmap_traits@PEAVCXFA_Node@@V?$unique_ptr@V?$map@IV?$unique_ptr@U?$pair@V?$set@PEAVCXFA_Node@@U?$less@PEAVCXFA_Node@@@std@@V?$allocator@PEAVCXFA [0x0000000141785309+169] ??@2b14910fe4cc3866ca68e10bfed05253@ [0x000000013F7CCB09+185] CJX_Object::SetAttributeValue [0x000000013FAE0F7E+302] v8::internal::compiler::Int64Lowering::LowerNode [0x000000013FBB04C0+31920] CXFA_Document::DataMerge_CopyContainer [0x00000001417A43A3+9603] CXFA_Document::DataMerge_CopyContainer [0x00000001417A2048+552] CXFA_Document::DataMerge_CopyContainer [0x00000001417A3436+5654] CXFA_Document::DataMerge_CopyContainer [0x00000001417A1FEE+462] CXFA_Document::DoDataMerge [0x00000001417A5F96+3142] CXFA_FFDocView::StartLayout [0x00000001416BECCD+93] CPDFXFA_Context::LoadXFADoc [0x000000014169162D+669] FPDF_LoadXFA [0x0000000140AC5A2A+42] std::_Compressed_pair<std::default_delete<CFWL_WidgetProperties>,CFWL_WidgetProperties * __ptr64,1>::_Get_first [0x000000013F72A648+1432] main [0x000000013F727C05+1685] invoke_main [0x0000000141CDB924+52] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:79) __scrt_common_main_seh [0x0000000141CDB817+295] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283) __scrt_common_main [0x0000000141CDB6DE+14] (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:326) mainCRTStartup [0x0000000141CDB9B9+9] (f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp:17) BaseThreadInitThunk [0x0000000077415A4D+13] RtlUserThreadStart [0x000000007764B831+33] FAILURE: standard_symbols.pdf; Command '['E:\\b\\build\\slave\\windows_xfa\\build\\pdfium\\out\\debug_xfa_v8\\pdfium_test.exe', '--send-events', '--png', '--md5', 'E:\\b\\build\\slave\\windows_xfa\\build\\pdfium\\out\\debug_xfa_v8\\gen\\pdfium\\testing\\pixel\\standard_symbols.pdf']' returned non-zero exit status -1073741819 Original change's description: > Remove CXFA nodes instead of CFX_XML nodes > > When we set data into the CJX nodes, we need to update the backing store > of the XFA nodes, which are the XML nodes. When we update the backing > store, there are cases where we need to remove the children (setting > CData on a node or setting the value of an Attribute which is backed by > a real node). > > Currently we call DeleteChildren on the XML node. This causes issues > when we cleanup the tree as XFA nodes may point to these deleted XML > nodes. > > Instead, this CL cleans up the XFA nodes which will in turn clean up the > XML nodes. This seems like the right thing to do as we no longer have > the backing nodes, so we should no longer have the XFA nodes on top of > them. > > Bug: chromium:813155 > Change-Id: I63d53fd56999ec9d3b3af2ab5952b374663f040c > Reviewed-on: https://pdfium-review.googlesource.com/29950 > Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> > Commit-Queue: dsinclair <dsinclair@chromium.org> TBR=thestig@chromium.org,dsinclair@chromium.org,hnakashima@chromium.org Change-Id: Ic6b2fbeb9f8217292da0a722e143d96f9972056a No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:813155 Reviewed-on: https://pdfium-review.googlesource.com/29974 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-09Make pdfium::span<> be based off of UnownedPtr<>.Tom Sepez
Because we can get the lifetime check for free if we do this. This requires adding some "constexpr/noexcept" to UnownedPtr to make the types line up with what span.h requires. Change-Id: I45918f8723122082036eed959f769644ab4c509f Reviewed-on: https://pdfium-review.googlesource.com/29672 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-09Sort test cases in test_runner.py.Lei Zhang
Allow them to run a bit more consistently. Change-Id: I6b0f528a73f2c872813f4644aeae886ec04879f4 Reviewed-on: https://pdfium-review.googlesource.com/29930 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-09Move the CFX_XMLParser out of CXFA_SimpleParserDan Sinclair
This CL removes the CFX_XMLParser from CXFA_SimpleParser and constructs it in the CFX_XMLDoc. Change-Id: Id69b396f091892170a4c4654ac1d0fd65d1efbb6 Reviewed-on: https://pdfium-review.googlesource.com/29970 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-09Remove m_pOldFocusWidget from CXFA_FFDocView.Henrique Nakashima
It can be refactored to a local, then the local can be refactored out too. There should be no functional changes. Change-Id: I4b49cbf27736f856a567db5db952c03aba743818 Reviewed-on: https://pdfium-review.googlesource.com/29911 Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
2018-04-09Remove CXFA nodes instead of CFX_XML nodesDan Sinclair
When we set data into the CJX nodes, we need to update the backing store of the XFA nodes, which are the XML nodes. When we update the backing store, there are cases where we need to remove the children (setting CData on a node or setting the value of an Attribute which is backed by a real node). Currently we call DeleteChildren on the XML node. This causes issues when we cleanup the tree as XFA nodes may point to these deleted XML nodes. Instead, this CL cleans up the XFA nodes which will in turn clean up the XML nodes. This seems like the right thing to do as we no longer have the backing nodes, so we should no longer have the XFA nodes on top of them. Bug: chromium:813155 Change-Id: I63d53fd56999ec9d3b3af2ab5952b374663f040c Reviewed-on: https://pdfium-review.googlesource.com/29950 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-09Move code to set XML value to CXFA_NodeDan Sinclair
This CL moves the code to set the XML node data from CJX_Node to CXFA_Node. The XML node is owned by the XFA node, not the CJX node so it makes more sense to have the modifications happen there. This combines the duplicate code in CJX_Node into a single SetToXML method. Bug: chromium:813155 Change-Id: I493725d1412688cb1a0d04bd9ae9fa5a36caebf3 Reviewed-on: https://pdfium-review.googlesource.com/29858 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-06Add span.h from chromium base.chromium/3392Tom Sepez
Allows indexing with better bounds-checking to occur. Some small modifications are required to deal with PDFium being intentionally held at C++11 compliance, not C++14. Use in one place as check on correctness. Change-Id: Id2875cf0a93980112bc536a93c4f9ec5306c0dac Reviewed-on: https://pdfium-review.googlesource.com/29671 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Chris Palmer <palmer@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-06Avoid uninitialized internal fields in V8 global objects.Tom Sepez
V8 won't do this for us when it creates a global object under the covers off of a template with a non-zero internal field count, instead just leaving it uninitialized. We were careful to set the iternal fields on the object we explicitly create, but there are these implicitly created ones as part of making a new context that need to be handled as well. BUG: pdfium:1005 Change-Id: Ic40bafc206ec5119cbceb58f0bb725693e7ddf80 Reviewed-on: https://pdfium-review.googlesource.com/29910 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
2018-04-06Fix typos in CXFA_FMParser.chromium/3391Lei Zhang
Change-Id: I0059e2ec25e90162a241a49e5d7b327c80330a33 Reviewed-on: https://pdfium-review.googlesource.com/29890 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-05Make Internal field usage in cfxjs_engine match README.docTom Sepez
As it turns out, this doesn't cause any bugs with the FXJS/FXJSE interaction since the magic values will never be present in the other slot, but the code looks wrong wrt. the document. Also fix an assert in FXJSE that our objects have two slots, and null appropriately (just a defensive measure). Also assert that one of our casts is valid. Change-Id: I3146fe58350da5e9b76e711d81480565dabd587f Reviewed-on: https://pdfium-review.googlesource.com/29859 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
2018-04-05Combine if/else blocks in CPDF_DIBSource::TranslateScanline24bpp().Lei Zhang
The two branches are very similar. Change-Id: I2a9502858e9ce997f28b17bc1051b71fa058c2c4 Reviewed-on: https://pdfium-review.googlesource.com/24350 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-04-05Split CPDF_DIBSource::TranslateScanline24bpp().Lei Zhang
Move some code into TranslateScanline24bppDefaultDecode(). Change-Id: I7e985c2abb9b2f9e41214531321f8f3846dd3a94 Reviewed-on: https://pdfium-review.googlesource.com/29857 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-05Fix const casts in CPDF_Encryptor.Lei Zhang
Change-Id: I4d7661716116969ae80fdac52f6b400a5ff68e50 Reviewed-on: https://pdfium-review.googlesource.com/29855 Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2018-04-05Get rid of a const_cast in CPDF_FlateEncoder.Lei Zhang
Change-Id: I3ee8f8e9eb33d251dc00336bcd31e578e7ce5143 Reviewed-on: https://pdfium-review.googlesource.com/29854 Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2018-04-05Remove some const_casts in CPDF_Creator.Lei Zhang
Change-Id: I7c639655c003527417255c134a4393d68cda3ef1 Reviewed-on: https://pdfium-review.googlesource.com/29852 Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2018-04-05Make CXFA_Document::m_rgGlobalBinding privateDan Sinclair
This CL moves the two accessor functions from being in an anonymous namespace to being public and makes the member itself private. Change-Id: Idd5dd1e6cc617d0be0fdd57ceace2dbc684a8b00 Reviewed-on: https://pdfium-review.googlesource.com/29856 Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2018-04-05Remove unused param.Dan Sinclair
This CL removes the unused CXFA_Document param from various anonymous namespace methods in CXFA_Document. Change-Id: Ic10b4d2830936091da4db0919b33c16875cbd427 Reviewed-on: https://pdfium-review.googlesource.com/29853 Reviewed-by: Ryan Harrison <rharrison@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-05Move document data merge code into CXFA_Document fileDan Sinclair
This CL moves the CXFA_Document methods from xfa_document_datamerger_imp into the cxfa_document.cpp file. Change-Id: Idcb0696d2488bff5a4882675b3b876e0ec9e38bb Reviewed-on: https://pdfium-review.googlesource.com/29851 Reviewed-by: Ryan Harrison <rharrison@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-05Remove unused XFA Widget API methodsRyan Harrison
Keeping the internal widget details, since they are likely needed for wiring up XFA with the other form APIs. BUG=pdfium:1056 Change-Id: I000468e27bbb59346c4288f1c4f0fe96ed5f3603 Reviewed-on: https://pdfium-review.googlesource.com/29870 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2018-04-05Ignore bad data in the shared object hint table.Lei Zhang
Currently this is being treated as a case of "data not available" which leads to an infinite loop. BUG=pdfium:1055 Change-Id: I2722a5b364d56a4ad5b7cca2a4b42e6b13a933f4 Reviewed-on: https://pdfium-review.googlesource.com/29831 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-05Roll pdfium/third_party/freetype/src/ 7109495c5..26ad1acbc (2 commits)Lei Zhang
https://chromium.googlesource.com/chromium/src/third_party/freetype2.git/+log/7109495c5e6c..3b8f16803c8a $ git log 7109495c5..26ad1acbc --date=short --no-merges --format='%ad %ae %s' 2018-04-04 mpsuzuki * src/truetype/ttobjs.c (trick_names): Add 3 tricky fonts (#53554), `DFHei-Md-HK-BF', `DFKaiShu-Md-HK-BF' and `DFMing-Bd-HK-BF'. (tt_check_trickyness_sfnt_ids): Add checksums for 3 tricky fonts in above. 2018-04-03 wl Minor comment improvement. Created with: roll-dep pdfium/third_party/freetype/src BUG=pdfium:1053 Change-Id: I87b0dc55608e5a0ca09b83ca75260b90ae84a9e4 Reviewed-on: https://pdfium-review.googlesource.com/29850 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-05Remove spellchecking code from XFAchromium/3390Ryan Harrison
The existing code for spellchecking is non-functional and we are not planning on fixing/finishing it, so removing it, since it currently is marking everything as misspelt. BUG=pdfium:1054 Change-Id: I23aaa13c09aed483376d7d06f47fdf31d890786b Reviewed-on: https://pdfium-review.googlesource.com/29790 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2018-04-04Caret blinks with lower frequency in XFA text field.Henrique Nakashima
Change-Id: I803f7816e2b2fecc5737a3ed26ff156bbff0ae2f Reviewed-on: https://pdfium-review.googlesource.com/29770 Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2018-04-04Prepare for |is_posix| switch in the Fuchsia buildFabrice de Gans-Riberi
|is_posix| will be switched to false for Fuchsia, this is a preliminary change. Bug: chromium:812974 Change-Id: Iabe2503db3d6d4cebf1445cb4ab0852b664e1dba Reviewed-on: https://pdfium-review.googlesource.com/29490 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-04Expand ~ when present in directory pathRyan Harrison
pdfium_test currently isn't expanding ~ in paths that are passed in for directories, which is causing commands like this pdfium_test --font-dir=~/Fonts to fail. This CL adds in performing sh style expansion on the ~ character for --font-dir and --bin-dir. This change depends on POSIX wordexp being available, so guarding the code with checks for Linux || OSX, since those are the only platforms that we build for that are POSIX complient in this regard. BUG=pdfium:1027 Change-Id: I05d518dfa71d95c3b0cfd1f4b382e0a6f4a0f515 Reviewed-on: https://pdfium-review.googlesource.com/28611 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2018-04-04Fix XFA caret blinking only while mouse moves.chromium/3389Henrique Nakashima
Currently rect invalidations in XFA are only sent to the embedder only when RunInvalidate() is executed. For things which redraw on a timer, such as the caret, there was no user event to call RunInvalidate() so the page would not redraw. This CL changes the XFA code to send the invalidations to the embedder immediately and expects the embedder to combine the invalidations to limit overdraw. Bug: chromium:828561 Change-Id: I298052fd7d0c373b029eec191cc6c74c63978348 Reviewed-on: https://pdfium-review.googlesource.com/29670 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
2018-04-04Parse "yy" correctly for AFDate_FormatEx().Lei Zhang
AFDate_FormatEx("yymmdd") should not try to read the first 4 digits in the string. BUG=chromium:436572 Change-Id: I123b70b8a22d1e2c87e61ee7bf0b177b49571ae3 Reviewed-on: https://pdfium-review.googlesource.com/29731 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-04Decrease XML parser buffer sizeDan Sinclair
This CL decreases the m_iXMLPlaneSize in the CFX_XMLSyntaxParser from 32*1024 to 1024 bytes. This plane size is the size of the chunks we read the XML file in. The issue with having a large plane size is inside the CFX_SeekableStreamProxy::ReadString we allocate a vector of the min(planeSize, remaining_bytes). This means, we could potentially be allocating 32*1024 bytes to read in a single character. For the test in the attached bug the runtime went from 12s to 25ms. Bug: chromium:813195 Change-Id: Id57e619b7a118d45e3fed491ad81e86a4b1cacb8 Reviewed-on: https://pdfium-review.googlesource.com/29750 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-04[fwl] Restrict setting cursor outside text boundsDan Sinclair
This Cl updates CFWL_Edit to keep the cursor from extending pass the end of the text. If we set the cursor past the end it will trigger the ASSERT in the text edit engine as the edit engine assumes the caller does the right thing. Bug: pdfium:1023 Change-Id: Idfed4b240c13d666a686d0e09b78bcc9a1406794 Reviewed-on: https://pdfium-review.googlesource.com/29650 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2018-04-03Remove DefaultAppearance HasColor and return an optional insteadDan Sinclair
This CL converts CPDF_DefaultAppearance to return Optional<CFX_Color:Type> items instead of having a HasColor. This saves the double parse of the appearance stream. Change-Id: Ib3c136da6e2adfb559e495de1d299cce0b4ad25f Reviewed-on: https://pdfium-review.googlesource.com/29630 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-03Use Optional to determine if appearance stream as fontchromium/3388Dan Sinclair
This CL changes the CPDF_DefaultAppearance code to remove the HasFont method and change GetFont to return an Optional. This forces all the call sites to verify a font was returned correctly and removes the need for the duplicate appearance stream parsing. Bug: chromium:827430 Change-Id: If09e0a7d3f7dd63ad77b97a5a388127e4a02da61 Reviewed-on: https://pdfium-review.googlesource.com/29610 Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2018-04-03Re-arrange so inline vectors come last in structs.Tom Sepez
This might make the memory tools more effective in finding OOBs. Change-Id: Id093bb0a88c37954c80d612ac00b5a168e75bdbf Reviewed-on: https://pdfium-review.googlesource.com/29550 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
2018-04-03Roll pdfium/third_party/freetype/src/ 713d68ee9..7109495c5 (21 commits)Lei Zhang
https://chromium.googlesource.com/chromium/src/third_party/freetype2.git/+log/713d68ee9f47..7109495c5e6c $ git log 713d68ee9..7109495c5 --date=short --no-merges --format='%ad %ae %s' 2018-04-01 wl * builds/toplevel.mk (work): Use $(SEP). 2018-03-30 wl [truetype] Fix memory leak (only if tracing is on). 2018-03-26 apodtele Documentation improvement. 2018-03-24 wl Typo. 2018-03-23 kkushal32 Fixing cmake command format 2018-03-23 bungeman [sfnt] Correctly handle missing bitmaps in sbix format (#53404). 2018-03-23 bungeman [truetype] Fix advance of empty glyphs in bitmap fonts (#53393). 2018-03-22 wl Remove `ftlcdfil.c' and `ftfntfmt.c' from build files (#53415). 2018-03-13 wl * src/sfnt/ttcmap.c (tt_cmap2_validate): Fix potential numeric overflow. 2018-03-13 wl Fix cmap format 2 handling (#53320). 2018-03-10 madigens * CMakeLists.txt (BASE_SRCS): Update to changes from 2018-03-05. 2018-03-05 fanchunwei * CMakeLists.txt [win32]: Allow MSVC DLL builds (#53287). 2018-03-08 wl Typo. 2018-03-08 wl CHANGES: Document `--enable-freetype-config'. 2018-03-07 hugh.mcmaster Make installation of `freetype-config' optional (#53093). 2018-03-08 wl Minor: Update `CHANGES' and improve documentation in `modules.cfg'. 2018-03-05 wl Make `ftlcdfil.c' part of the `base' module. 2018-03-05 wl Make `ftfntfmt.c' part of the `base' module. 2018-03-03 wl Minor documentation improvement. 2018-03-01 wl * src/truetype/ttinterp.c (TT_RunIns): Fix tracing arguments. 2018-03-01 wl * builds/unix/configure.raw: Need HarfBuzz 1.3.0 or newer. Created with: roll-dep pdfium/third_party/freetype/src BUG=pdfium:1050 Change-Id: If78351c12589717151718a33db954503bd58922a Reviewed-on: https://pdfium-review.googlesource.com/29590 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-03Off-by-one in CPDF_StreamParser::ParseNextElement()Tom Sepez
Limit the token to 255 bytes + NUL. Also, shuffle fields in cpdf_streamparser to allow memory tools to better check this inline array. Bug: 828049 Change-Id: I444f2b4c6958167577d9cd76c06805baf7d5c26c Reviewed-on: https://pdfium-review.googlesource.com/29530 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-04-02Enable cfi-icall type generalization for libopenjpeg20Vlad Tsyrklevich
BUG=828069 Change-Id: I3bbcb696fcf7e587f1fcfd00454e47ec42a67713 Reviewed-on: https://pdfium-review.googlesource.com/29570 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-04-02Remove FPDF_SetPrintPostscriptLevel().chromium/3387Lei Zhang
This experimental API has been superceded by FPDF_SetPrintMode(). Change-Id: I41f8efbb2f40edea60df55c36f7ee3743ac20839 Reviewed-on: https://pdfium-review.googlesource.com/29510 Reviewed-by: Rebekah Potter <rbpotter@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
2018-03-29Fix use_custom_libcxx=false build on Linuxchromium/3386chromium/3385chromium/3384Tom Anderson
BUG=None R=thestig Change-Id: I17b251faba0e9b8b79fd6b12193add2d61f69c0b Reviewed-on: https://pdfium-review.googlesource.com/29450 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
2018-03-29Fixup API checkdan sinclair
Fixup API check filename after fpdf_view_c_api_test was moved. TBR: hnakashima@chromium.org Change-Id: I49f1015616cb8c8a5d6a9f0646f1e19e8ed94779 Reviewed-on: https://pdfium-review.googlesource.com/29470 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-03-28Remove CPDF_DefaultAppearance reference paramsDan Sinclair
This CL converts the CPDF_DefaultAppearance::GetColor methods to return instead of using reference parameters. Change-Id: I9ba6bf060a536290a83d3c9ce6e115511f28664c Reviewed-on: https://pdfium-review.googlesource.com/29410 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-03-28Rename CBA_AnnotIterator to CPDFSDK_AnnotIteratorchromium/3383Dan Sinclair
This CL renames CBA_AnnotIterator to CPDFSDK_AnnotIterator. This iterator does not seem to be restricted to just BAAnnot entries, so rename to the more general name. Change-Id: I735dc37cd5417a2b544882db515dbef4d4dbae67 Reviewed-on: https://pdfium-review.googlesource.com/29430 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-03-28Use CPDF_DefaultAppearance instead of custom parsingDan Sinclair
This CL moves code over to using CPDF_DefaultAppearance instead of calling the CPDF_SimpleParser directly. This means the code for finding a specific tag start can move into CPDF_DefaultAppearance directly. Change-Id: I1dc64e54aedd03d059b963121d466f3eb75c17db Reviewed-on: https://pdfium-review.googlesource.com/28410 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-03-28Rename fpdfsdk/fpdf* files to be consistentDan Sinclair
This CL makes the fpdfsdk/fpdf* files to be consistently prefixed with fpdf_ instead of randomly dropping the _. Change-Id: I23e3c8a0831b56bcd17c788d9fe874b2ab8b24fc Reviewed-on: https://pdfium-review.googlesource.com/29390 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
2018-03-28More fpdfsdk filename cleanupDan Sinclair
This CL moves more of the fpdfsdk/ code around to better match the naming of other files. Change-Id: I203d91e3e345b2b4767df7a69dd5bd981d61f1d2 Reviewed-on: https://pdfium-review.googlesource.com/29372 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-03-28Rename some fsdk files to cpdfsdkDan Sinclair
This CL renames fsdk_common and fsdk_define to cpdfsdk_common and cpdfsdk_helpers respectively. Change-Id: I8ee7a308561f1ff2f510954444f953b0c8fed788 Reviewed-on: https://pdfium-review.googlesource.com/29371 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-03-28Use ByteStringView in parsersDan Sinclair
This CL converts the CPDF_SimpleParser to accept a ByteStringView. Several of the callers of SimpleParser are also updated to use a ByteStringView instead of <char*,size>. Change-Id: Ic2df3a06f92e77b53745a0419b44368142f9d8e6 Reviewed-on: https://pdfium-review.googlesource.com/29351 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
2018-03-28Cleanup fsdk_define methodsDan Sinclair
This CL collects the various fsdk_define methods into a fsdk_define.cpp class. Methods only used in one place are moved into the appropriate anonymous namespaces. Change-Id: I75bfc7e8fe20711106fcf9821adeb41d69bf5848 Reviewed-on: https://pdfium-review.googlesource.com/29310 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
2018-03-28Remove ByteString PDF_NameDecodeDan Sinclair
This CL removes the ByteString version of PDF_NameDecode and forces the callers to use the ByteStringView variant. Change-Id: I5a955d8e909e2045ee45843af54b23e98abe00ed Reviewed-on: https://pdfium-review.googlesource.com/29350 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>