Skip to content

Sync S7: merge upstream PDFium up to cfe3a2413 (Aug 31 2026) - #70

Merged
bobsingor merged 124 commits into
embedpdf/mainfrom
embedpdf/sync/cfe3a2413
Oct 13, 2026
Merged

bobsingor merged 124 commits into
embedpdf/mainfrom
embedpdf/sync/cfe3a2413

Conversation

@bobsingor

Copy link
Copy Markdown
Contributor

No description provided.

pdfium-autoroll@skia-public.iam.gserviceaccount.com and others added 30 commits August 2, 2026 22:04
…sion)

https://chromium.googlesource.com/chromium/third_party/instrumented_libraries.git/+log/e8cb570a9a2e..d15c278eed5d

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/instrumented-libraries-pdfium
Please CC dhoss@chromium.org,thestig@chromium.org,thestig@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: None
Tbr: thestig@google.com
Change-Id: If631d53d2f96766e781841955e5408bf99967a7b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154090
Bot-Commit: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
https://chromium.googlesource.com/chromium/src/tools/code_coverage.git/+log/88b5286372e2..f2c64929fbd5

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/code-coverage-pdfium
Please CC dhoss@chromium.org,thestig@chromium.org,thestig@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: None
Tbr: thestig@google.com
Change-Id: Ied7e5a30f612a7720d5d6f3c190a95ff6649b1a6
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154110
Bot-Commit: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
https://chromium.googlesource.com/catapult.git/+log/2cdd33999350..e4d1a01c96de

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/catapult-pdfium
Please CC dhoss@chromium.org,thestig@chromium.org,thestig@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: None
Tbr: thestig@google.com
Change-Id: I83f8fa78cb3d7d49caede5c5a83bdd8567706cd3
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154111
Bot-Commit: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
This CL adds the CheckNoIOStreamInHeaders() presubmit rule, which has
been ported over from chromium.

Bug: 42270537
Change-Id: Ib07ad396ada8bc54c3587e9cee57c2eb25eb183f
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154070
Reviewed-by: Andy Phan <andyphan@chromium.org>
Auto-Submit: Aryan Krishnan <aryankrishnan4b@gmail.com>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Andy Phan <andyphan@chromium.org>
Migrate TestTextLayout helper function to Google Test parameterized test
suite. Removes the need for custom test body helpers and resolves
anti-pattern where ASSERT_EQ macros were used inside sub-routines, which
fail to correctly abort the calling test case on failure.

Change-Id: Ie144028bd2d1499df32b61c9a10979ab5b03cc4b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/153650
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Seung Hyun Jin <seunghyunjin@google.com>
https://chromium.googlesource.com/v8/v8.git/+log/7ed96d92b72b..caa723ab9c62

Version 15.2.1

To avoid pulling in the fadec library, set
v8_enable_generated_code_validator to false.

Created with:
  roll-dep v8

Change-Id: Iafbd3c08c7747f95beb7f90bfe8985fb63203d8c
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/153950
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libc.git/+log/9a821f4e58bb..6622df0b6261

Created with:
  roll-dep third_party/llvm-libc/src

Change-Id: I1f2af56046e621679c0313f52e704a88ad9fe9ad
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154290
Auto-Submit: Lei Zhang <thestig@chromium.org>
Reviewed-by: Andy Phan <andyphan@chromium.org>
Commit-Queue: Andy Phan <andyphan@chromium.org>
Update CPVT_Section::OutputLines() to handle failures when
CFX_BidiResolver::Create() or GetVisualRunsForLine() returns empty.
Previously, a null bidi_resolver check was used as a proxy for empty
lines, but incorrectly skipped word positioning entirely if ICU failed
to initialize. Now, word positioning is skipped for empty lines
instead. If bidi_resolver fails to initialize or process a line, the
layout logic falls back to a default LTR run.

Change-Id: Ib5356ebb45463ee6e5545a58c01ef940361d2ade
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/153690
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Seung Hyun Jin <seunghyunjin@google.com>
Change-Id: I4de8e7de29efd03b37517622c1835e8d62cdd176
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154330
Auto-Submit: Lei Zhang <thestig@chromium.org>
Commit-Queue: Andy Phan <andyphan@chromium.org>
Reviewed-by: Andy Phan <andyphan@chromium.org>
Change-Id: I25a4ac5eb99b7e471e529d6a794a3a7aac0ccfb7
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154350
Auto-Submit: Lei Zhang <thestig@chromium.org>
Reviewed-by: Andy Phan <andyphan@chromium.org>
Commit-Queue: Andy Phan <andyphan@chromium.org>
https://chromium.googlesource.com/chromium/src/third_party/rust/+log/9bcbc576725c..7c4e7d9b0e7c

Then update GN paths to match the new Rust crate versions.

Created with:
  roll-dep third_party/rust

Change-Id: I6374c9936d7c467809fd181e28ee38cd57a16105
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154370
Auto-Submit: Lei Zhang <thestig@chromium.org>
Reviewed-by: Andy Phan <andyphan@chromium.org>
Commit-Queue: Andy Phan <andyphan@chromium.org>
This standalone delegate header allows individual codec engines to
report scanline formats without including ProgressiveDecoder.

Add an explanatory comment noting that FXDIB_Format is not used here
because image decoders can return pixel formats not supported by it.

Update ProgressiveDecoder to inherit from PDCD, alias Format, and
replace unscoped enum FXCodec_Format across progressive_decoder.h and
progressive_decoder.cpp.

TAG=agy
CONV=bbac8eab-d30e-43b6-895a-e5b8381bbaf9

Change-Id: Ib7e8875e43498f57d9602f26c02bb1cb31114d61
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154170
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Update CPVT_VariableText::Iterator::GetLineCaretX() to explicitly check
the boolean return value of NextWord() before attempting to retrieve the
first word of the line. Prevent calling GetWord() when the iterator is
already at the end of the text. Resolve implicit reliance on the
subsequent bounds check within GetWord() and ensure `is_rtl` flag
defaults to false when no word is found.

Change-Id: I3885438d6182af00e7ae905b2363e4cabcb5f443
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/153110
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Seung Hyun Jin <seunghyunjin@google.com>
…rolls)

https://skia.googlesource.com/skia.git/+log/3ba832f8688f..7ef86a5b0eb9

Created with:
  roll-dep third_party/skia

Then fix Rust-enabled builds by updating the location of
SkBmpRustDecoder.h. Same as crrev.com/1667412.

Change-Id: I8ce3acd92b351cfdf8e6bc9dac9c880acef239c5
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154310
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Expand the existing ProgressiveDecoderContextDelegate interface by
adding I/O and scanline resampling callback methods.

Update CFX_BmpContext and SkiaBmpContext to use PDCD instead of
BmpDecoderDelegate. Update ProgressiveDecoder to implement the newly
added delegate methods for BMP decoding, replacing the previous
BMP-specific callbacks.

Delete core/fxcodec/bmp/bmp_decoder_delegate.h and remove it from
BUILD.gn.

TAG=agy
CONV=bbac8eab-d30e-43b6-895a-e5b8381bbaf9

Change-Id: Iee7fd5f694b781afe4dc8f806448275862180eef
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154150
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Change-Id: I6498b1334412925b1c45d7ee26ff3e20128eed00
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154410
Auto-Submit: Lei Zhang <thestig@chromium.org>
Reviewed-by: Andy Phan <andyphan@chromium.org>
Commit-Queue: Andy Phan <andyphan@chromium.org>
https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git/+log/8f11bb1d4438..14cefa83943c

Created with:
  roll-dep third_party/libc++abi/src

Change-Id: Iad79e8051f20681f8244bfe30a0dabeb4057c509
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154450
Auto-Submit: Lei Zhang <thestig@chromium.org>
Commit-Queue: Andy Phan <andyphan@chromium.org>
Reviewed-by: Andy Phan <andyphan@chromium.org>
Historical artifact. All modern devices use standard gamma of 2.2.

Fixed: 542675553
Change-Id: I6ad3ad00024647fcf1dd550af3a63bd2050c6395
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154510
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Introduce baseline pixel tests for CPWL_EditImpl that assert buggy
visual behaviors of RTL text selection alongside a working LTR baseline.
Document the exact failure mode where the blue selection highlight is
invisible when selecting Hebrew text due to the highlight bounding box
computing a width of zero. Visual rendering will be fixed in
https://pdfium-review.googlesource.com/c/154231 by substituting the
logical caret evaluation with explicit geometric widths.

Bug: 543033201
Change-Id: I5497eec7bad8a9fe5966d688968739acbb626d04
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154250
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Seung Hyun Jin <seunghyunjin@google.com>
Introduce a GetWordRect() helper in CPWL_EditImpl to consolidate the
calculation of character bounding boxes across DrawEdit() and
RefreshWordRange().

Bug: 543033201
Change-Id: I4f42c9febaac1f5f67f0b78c27db558846c10556
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154530
Commit-Queue: Seung Hyun Jin <seunghyunjin@google.com>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Substitute word.CaretX() with word.location().x + word.width() in
GetWordRect().

In RTL text, word.CaretX() evaluates to the character's left edge for
logical cursor placement. This caused the resulting selection rectangle
to span from the left edge to the left edge, collapsing the width to
zero and preventing the selection highlight from rendering. Using
explicit geometric width ensures the bounding box encompasses the full
character across all text directions.

Update the form_textfield_selected_rtl pixel test expectations to
reflect the corrected selection highlight.

Bug: 543033201
Change-Id: I1c2b1c93bd7c845a42e811e6ee6140b7dd543971
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154231
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Seung Hyun Jin <seunghyunjin@google.com>
This was the only location which forgot to check for this define,
core/fxcrt/fx_extension.h:18 already did the same.

Change-Id: I6efdd8c5a3322b146f9ccabcabd2ac2506912d85
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154490
Commit-Queue: Andy Phan <andyphan@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Andy Phan <andyphan@chromium.org>
Append the final keyword to CFX_BidiResolver to restrict class
inheritance. Document that CFX_BidiResolver::Create() returns
nullptr on failure. Improve code clarity by adding inline
parameter comments to ubidi_openSized() and ubidi_setPara().

Change-Id: I0f997317eeb3759ae9368347f53bfdec4a1f4e49
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/153570
Commit-Queue: Seung Hyun Jin <seunghyunjin@google.com>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Catch negative line_start indices and verify the substring slice fits
entirely within utf16_text_ before delegating work to ICU. Introduce new
unit tests to verify empty returns for invalid line boundaries and
ensure graceful handling of malformed UTF-16 input during resolver
creation.

Change-Id: If4c70c8a2664109d1516a6c79f44a48b1c09e6f0
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/153590
Commit-Queue: Seung Hyun Jin <seunghyunjin@google.com>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Migrate test assertions to utilize testing::ElementsAre() for more
concise verification. Implement inline operator==() and PrintTo()
methods for CFX_BidiResolver::ResolvedRun to support new matcher
assertions.

Change-Id: I7ca1f5a3770d43c41912fdb1b47e098070f2cdf2
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/153610
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Seung Hyun Jin <seunghyunjin@google.com>
ProgressiveDecoder contained a `frame_cur_` member that was initialized
to 0 and reset to 0 in StartDecode() and GifStartDecode(), but was never
incremented or advanced. The progressive decoding flow finishes its
single-image decode upon completing the first frame, resetting decoder
bindings without supporting multi-frame stepping.

Remove the unused `frame_cur_` member and remove the unused frame_index
argument from ProgressiveDecoderContext::DecodeImage() and its
overrides, hardcoding GIF decoding to frame 0.

TAG=agy
CONV=0ddacdfb-13f6-47af-a8e8-cc5336eb23a5

Change-Id: I745f7e68abac7a7e0fd8d2b2e0d7ff4947023356
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154570
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Update CFX_GifContext to depend on ProgressiveDecoderDelegate instead of
the nested CFX_GifContext::Delegate. Remove the nested Delegate class
declaration.

Evacuate GIF palette state, frame bounds, and scanline buffer from
ProgressiveDecoder into CFX_GifContext so that record position parsing
and scanline resampling are self-contained within CFX_GifContext.

Update ProgressiveDecoder so it no longer inherits from
CFX_GifContext::Delegate.

TAG=agy
CONV=bbac8eab-d30e-43b6-895a-e5b8381bbaf9

Change-Id: I0834b3480ccf102015bd7cb28b62f1b2ad3ddd64
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154151
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
https://chromium.googlesource.com/chromium/src/third_party/zlib.git/+log/8b3aa8a1cd75..c5cc9edf8992

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/zlib-pdfium
Please CC thestig@chromium.org,thestig@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: None
Tbr: thestig@google.com
Change-Id: I37c65ce53f009ad9dc2c2b9bb3675f3181b55873
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154670
Commit-Queue: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
Update ProgressiveDecoder so that JPEG start and continue decoding
delegate to LibjpegJpegContext.

TAG=agy
CONV=bbac8eab-d30e-43b6-895a-e5b8381bbaf9

Change-Id: I2a8ee8ff2ced31a238ab8272e52f96bd4f8a932a
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154152
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
This CL replaces calls to LoadSavedPage() and CloseSavedPage() with
LoadScopedSavedPage() in fpdf_editpath_embeddertest.cpp and
fpdf_ppo_embeddertest.cpp to automatically manage page lifetimes.

This CL also makes LoadSavedPage() and CloseSavedPage() private to
enforce the use of scoped types across tests.

Bug: 407147676
Change-Id: I70dcd36ca37ccc119e2cfac46df01ad2a90fb528
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/154650
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Andy Phan <andyphan@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
leizleiz and others added 28 commits August 27, 2026 11:57
Make CPDF_SyntaxParser consistent with CPDF_StreamParser.

Change-Id: Ibe6cd25648ed2c075714474b2d452d388d7dd53d
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/155911
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Andy Phan <andyphan@chromium.org>
TranslateScanline24bppDefaultDecode()'s 8 bits-per-component arm is
covered indirectly by existing tests, but its 16 and sub-8
bits-per-component arms have no coverage at all.

Add unit tests that load a one-scanline DeviceRGB image at 4, 8 and 16
bits per component and check the bytes of the translated scanline.

Bug: 553155247
Change-Id: I235584fcc57d18fa97e16d71ff29327a8c391b15
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156010
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Consolidate PNG encoding and decoding functionality into
testing/png_codec/png_codec.h under namespace png_codec:
- Rename namespace from image_diff_png to png_codec.
- Standardize function names to Decode(), EncodeBGR(), EncodeRGBA(),
  EncodeBGRA(), and EncodeGray(), and remove PNG suffix.
- Move Encode(span, ...) into png_codec.
- Move Encode(FPDF_BITMAP) into bitmap_saver, remove format parameter
  and let callers use ConvertToStraightAlpha().
- Remove obsolete testing/utils/png_encode.{h,cpp}.
- Update all call sites across testing/.

TAG=agy
CONV=db6cb163-190b-47d4-bbdc-b519626ce208

Change-Id: Id011f60dd525f0bc4dbdfc6fc82384be5fe6c8a2
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/155950
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Replace the legacy Skia-based PNG backend in testing/png_codec with
a pure Rust backend using the png crate via CXX bindings:
- Add testing/png_codec/png_codec_rust_ffi.rs implementing PNG
  encoding (BGR, BGRA, RGBA, Gray) and decoding via the png crate.
- Add testing/png_codec/png_codec_rust.cpp implementing the
  png_codec C++ API using the Rust FFI.
- Delete testing/png_codec/png_codec_skia.cpp, decoupling PNG
  testing code completely from Skia.
- Update testing/png_codec/BUILD.gn to switch between the Rust PNG
  and libpng backends based on pdf_enable_rust_png.
- Update testing/png_codec/DEPS.

TAG=agy
CONV=db6cb163-190b-47d4-bbdc-b519626ce208

Change-Id: I60a69517a58f9d6d53990daca30782d0c3b20004
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156030
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
This CL adds a public experimental API, FPDFBookmark_GetStyle(), to
retrieve the text style (bold and/or italic) associated with a bookmark.

The underlying CPDF_Bookmark class now supports reading the "F" key from
the bookmark dictionary, validating that the value represents a valid
two-bit bitfield per ISO 32000-1:2008 Table 154.

Bug: 362783123
Change-Id: I030238b9bdb0e417b5460c7f67877b03c7ce51b9
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/155630
Reviewed-by: Andy Phan <andyphan@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Aryan Krishnan <aryankrishnan4b@gmail.com>
Add checkout_libpng variable and condition to DEPS so developers
and bots can skip checking out third_party/libpng when building
with pure Rust PNG or system libpng:
- Add checkout_libpng to gclient_gn_args in DEPS.
- Add checkout_libpng var and condition to third_party/libpng.
- Add assert in third_party/BUILD.gn when bundled libpng is needed
  without checkout_libpng.
- Update tools/roll_pdfium_deps_test.py.

TAG=agy
CONV=db6cb163-190b-47d4-bbdc-b519626ce208

Change-Id: I0a182c860afec91158a791ec0f9ad4a7ddae9e0e
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156031
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
https://chromium.googlesource.com/catapult.git/+log/e4d1a01c96de..50c971fc0958

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/catapult-pdfium
Please CC dhoss@chromium.org,thestig@chromium.org,thestig@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: None
Tbr: thestig@google.com
Change-Id: Ie2e64c6e64c5894e58e760ee8dc6ce60b268f6ec
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156230
Bot-Commit: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
https://chromium.googlesource.com/chromium/src/tools/code_coverage.git/+log/f2c64929fbd5..e1878fbb1ff7

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/code-coverage-pdfium
Please CC dhoss@chromium.org,thestig@chromium.org,thestig@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md

Bug: None
Tbr: thestig@google.com
Change-Id: Iff804bc368b263b106616b7b5a4957dd54c18c37
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156231
Bot-Commit: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: pdfium-autoroll@skia-public.iam.gserviceaccount.com <pdfium-autoroll@skia-public.iam.gserviceaccount.com>
Roll third_party/harfbuzz/src/ 28f4dc622..886fc1e64 (302 commits)
Roll third_party/icu/ d578f2e8b..8cc91d9b6 (1 commit)

https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git/+log/28f4dc622fef..886fc1e64538
https://chromium.googlesource.com/chromium/deps/icu.git/+log/d578f2e8b7bd..8cc91d9b6ab9

Created with:
  roll-dep third_party/harfbuzz/src
  roll-dep third_party/icu

Change-Id: Icef4babfb6cc7eae9d1d25c11b516857aa0303ed
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156330
Commit-Queue: April Kallmeyer <ask@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
https://chromium.googlesource.com/chromium/src/third_party/freetype2.git/+log/656cb777798f..4800589f76dc

Created with:
  roll-dep third_party/freetype/src
R=bungeman@chromium.org,drott@chromium.org,thestig@chromium.org

Change-Id: I5de3e208ad453f780c381fa191a56a97cee113e8
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156350
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: April Kallmeyer <ask@chromium.org>
https://chromium.googlesource.com/chromium/src/tools/win.git/+log/45843c2c1e99..13cb6e5d223d

Created with:
  roll-dep tools/win

Change-Id: I79ec23cfbdfccd9ec082b9f11094d87b6cf09ff0
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156370
Commit-Queue: April Kallmeyer <ask@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
…mits)

https://chromium.googlesource.com/chromium/src/base/allocator/partition_allocator.git/+log/29013c81d1fa..89615a645f02

Created with:
  roll-dep base/allocator/partition_allocator

Change-Id: I7f3b3f03f84ad96cb0eb4ece2f7a066584d2d40b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156311
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: April Kallmeyer <ask@chromium.org>
…rolls)

https://skia.googlesource.com/skia.git/+log/7ef86a5b0eb9..5549c93c9a1c

Created with:
  roll-dep third_party/skia

Change-Id: Ia519a4516cbf8d028dce6be0ab9eb3a0d85648ce
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156331
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: April Kallmeyer <ask@chromium.org>
llvmorg-23-init-19482-g53d18800-2 : llvmorg-24-init-3796-g20e97c4b-4

Roll build/ 299066ef2..2cd94c0ab (101 commits)
Roll tools/clang/ e4816757c..450d82386 (15 commits)
Roll tools/rust/ 63b87afd7..54d114869 (4 commits)

https://chromium.googlesource.com/chromium/src/build.git/+log/299066ef2d5d..2cd94c0abead
https://chromium.googlesource.com/chromium/src/tools/clang/+log/e4816757c45a..450d823868ea
https://chromium.googlesource.com/chromium/src/tools/rust/+log/63b87afd7580..54d1148695db

Created with:
  roll-dep build
  roll-dep tools/clang
  roll-dep tools/rust

Change-Id: Ic3c5b150045c47983ff49d2aab71344ed52aa269
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156390
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: April Kallmeyer <ask@chromium.org>
https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git/+log/ec7ac638dae6..45120ee23311

Created with:
  roll-dep third_party/libunwind/src

Change-Id: Ide819c091f097d9c688e3f4a5d371b7b3e1c5e02
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156410
Commit-Queue: April Kallmeyer <ask@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Nothing currently covers what CPDF_ToUnicodeMap::Lookup() returns when a
charcode is mapped more than once. CPDFToUnicodeMapTest.InsertIntoMaps
maps CID 0 to both 'A' and 'B', but asserts only on ReverseLookup() and
on entry counts.

Add a unit test over the three interesting shapes: bfchar overriding an
earlier catch-all bfrange, a later bfrange overriding an earlier one,
and a later mapping whose unicode is numerically below the charcode. Add
an embedder test over a new testing/resources template that draws such a
page.

These expectations record what PDFium does today, which is to keep the
numerically lowest unicode rather than the last mapping. Adobe TN #5014
requires the opposite: "Code mappings (unlike codespace ranges) may
overlap, but succeeding maps superceded preceding maps." So the tests
document a spec violation, and the follow-up CL corrects the behaviour
and updates them.

Bug: 554790604
Change-Id: Ib38da896cc51b07bd61b4bd629031318acb18133
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156270
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
This CL cleans up flatemodule.cpp by:
 - Renaming kFlate to kTiff, as this predictor is used for TIFF images
 - Renaming Foo_Predictor() and Foo_PredictLine() to follow
   UpperCamelCase
 - Renaming PathPredictor() to the correct PaethPredictor()

This prepares the image predictors for use in BrotliDecode in future.

Bug: 550512275
Change-Id: I2f9d55d9249427570069ce01052036441cc7314a
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/155990
Reviewed-by: Andy Phan <andyphan@chromium.org>
Commit-Queue: Aryan Krishnan <aryankrishnan4b@gmail.com>
Reviewed-by: Lei Zhang <thestig@chromium.org>
This CL cleans up variable names in functions of type FooPredictor() and
FooPredictLine() in flatemodule.cpp to follow the style guide better by
using snake_case.

Bug: 550512275
Change-Id: I9475fbfc2c58c7efde871dacc836f2881de34aae
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156130
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Aryan Krishnan <aryankrishnan4b@gmail.com>
Reviewed-by: Andy Phan <andyphan@chromium.org>
Roll buildtools/ 9e7655f4e..6f6a5dbf0 (3 commits)
Roll third_party/abseil-cpp/ df548c50b..435e7d977 (5 commits)
Roll third_party/libc++/src/ b16984ce9..97b436da4 (215 commits)
Roll third_party/libc++abi/src/ 14cefa839..fc1897a2c (3 commits)
Roll third_party/llvm-libc/src/ 6622df0b6..320824188 (129 commits)

https://chromium.googlesource.com/chromium/src/buildtools.git/+log/9e7655f4ee43..6f6a5dbf04b7
https://chromium.googlesource.com/chromium/src/third_party/abseil-cpp.git/+log/df548c50b2cd..435e7d977fb3
https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git/+log/b16984ce99c7..97b436da4c33
https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git/+log/14cefa83943c..fc1897a2c12a
https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libc.git/+log/6622df0b6261..320824188c37

Created with:
  roll-dep buildtools
  roll-dep third_party/abseil-cpp
  roll-dep third_party/libc++/src
  roll-dep third_party/libc++abi/src
  roll-dep third_party/llvm-libc/src

Change-Id: I58c9b2290716aed8f1a006e7c2290fb387025bbd
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156430
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: April Kallmeyer <ask@chromium.org>
https://chromium.googlesource.com/v8/v8.git/+log/caa723ab9c62..df65d5c8f293

Version 15.4.80

Created with:
  roll-dep v8

Change-Id: Iec24c58226cbe0e654d3e6b1533db96e6a43aa39
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156530
Auto-Submit: April Kallmeyer <ask@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
https://chromium.googlesource.com/chromium/src/testing/scripts/rust.git/+log/6712dc59f4a6..ead1c91bc31e

Created with:
  roll-dep testing/scripts/rust

Change-Id: Ifacc73b555833cb40000eb811b46499431f422c6
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156510
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Auto-Submit: April Kallmeyer <ask@chromium.org>
https://chromium.googlesource.com/chromium/src/third_party/rust/+log/7c4e7d9b0e7c..4dec6f65bcb3

Created with:
  roll-dep third_party/rust

Change-Id: I761f61cfe20eefb890d902aca2704c321256efc4
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156490
Auto-Submit: April Kallmeyer <ask@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: April Kallmeyer <ask@chromium.org>
Remove bungeman@, since they are not active on the project.

Change-Id: I9f134be5429bc95979d057666c1b09ed71251a0d
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156550
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Auto-Submit: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
https://chromium.googlesource.com/external/github.com/llvm/llvm-project/clang/tools/clang-format.git/+log/6eddfb5ec5f9..70510081984c

Created with:
  roll-dep third_party/clang-format/script

Change-Id: I8848890d01c7c98e5dc82c00faf53b7b3939bf92
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156511
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Auto-Submit: April Kallmeyer <ask@chromium.org>
Change-Id: I9e8740e6aeeae5831a508983bf31733d55a7effa
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/156570
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: April Kallmeyer <ask@chromium.org>
The rolled Windows toolchain pins SDK 10.0.28000.0, which is not available on GitHub-hosted Windows runners. This change lets the build read EMBEDPDF_WIN_SDK_VERSION in vs_toolchain.py and toolchain/win/setup_toolchain.py, falling back to the upstream SDK version when unset, and updates the release workflow to export the newest installed SDK from the runner before building.
This patch makes the Windows runtime build respect the installed SDK version when present, with a fallback to upstream defaults, and updates CI to use the newest runner SDK. The build was still failing because `NTDDI_WIN11_BR` requires SDK 10.0.28000+, while the runner provides 10.0.26100.0; the patch switches to `NTDDI_WIN11_GE` to match the older SDKs and the S6 build target without requiring newer Windows APIs. The sync note captures the CI investigation and the confirmed patch behavior.
@bobsingor
bobsingor merged commit f971efd into embedpdf/main Oct 13, 2026
12 checks passed
@bobsingor
bobsingor deleted the embedpdf/sync/cfe3a2413 branch October 13, 2026 07:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants