Support pure RTL text in form field through CPVT_section [pdfium : main]

1 view
Skip to first unread message

Lei Zhang (Gerrit)

unread,
Jun 15, 2026, 6:49:32 PM (9 days ago) Jun 15
to Seung Hyun Jin, Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
Attention needed from Seung Hyun Jin

Lei Zhang added 11 comments

Patchset-level comments
File-level comment, Patchset 7 (Latest):
Lei Zhang . resolved

Just a quick pass.

Commit Message
Line 10, Patchset 7 (Latest):calculate x-coords with `CFX_BidiCHar` for RTL chars in `CPVT_Section`.
Lei Zhang . unresolved

typo - 'H' should be lowercase.

File core/fpdfdoc/cpdf_generateap.cpp
Line 326, Patchset 7 (Latest): bool bContinuous = continuous;
Lei Zhang . unresolved

Avoid using Hungarian notation for variable names in new code. Use Google C++ style for new names. Here and in the rest of this CL.

Line 326, Patchset 7 (Latest): bool bContinuous = continuous;
Lei Zhang . unresolved

Give this local variable, and possibly also the parameter on line 313, better names so readers can more easily figure out what they represent.

File core/fpdfdoc/cpvt_word.h
Line 35, Patchset 7 (Latest): float GetCaretX() const;
Lei Zhang . unresolved

Style: methods above member variables.

Line 24, Patchset 7 (Latest): uint16_t Word = 0;
Lei Zhang . unresolved

Some of the changes here look like it's just modernizing the existing code, and isn't strictly necessary in this CL. Maybe split this off into a separate cleanup CL, and prepend that to this CL?

Line 20, Patchset 7 (Latest): ~CPVT_Word();
Lei Zhang . unresolved

Style: dtor after ctors, so move this after line 22.

File core/fpdfdoc/cpvt_wordinfo.h
Line 17, Patchset 7 (Latest): kNeutral = 0
Lei Zhang . unresolved

This is never used?

Line 14, Patchset 7 (Latest):enum class CPVT_WordDirection {
Lei Zhang . unresolved

Maybe nest this in `CPVT_WordInfo`. As in, `CPVT_WordInfo::Direction`.

File fpdfsdk/cpdfsdk_appstream.cpp
Line 720, Patchset 7 (Latest): printf("Char: %d, ptNew.x: %f\n", (int)word.Word, ptNew.x);
Lei Zhang . unresolved

This looks like a leftover debugging statement. Please remove.

File testing/resources/pixel/bug_725389_expected_mac.pdf.0.png
File-level comment, Patchset 7 (Latest):
Lei Zhang . unresolved

Please run `optipng` on these files to keep the file sizes small.

Open in Gerrit

Related details

Attention is currently required from:
  • Seung Hyun Jin
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: pdfium
Gerrit-Branch: main
Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
Gerrit-Change-Number: 149790
Gerrit-PatchSet: 7
Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
Gerrit-CC: April Kallmeyer <a...@chromium.org>
Gerrit-Attention: Seung Hyun Jin <seungh...@google.com>
Gerrit-Comment-Date: Mon, 15 Jun 2026 22:49:27 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
unsatisfied_requirement
open
diffy

Seung Hyun Jin (Gerrit)

unread,
Jun 16, 2026, 2:29:13 PM (9 days ago) Jun 16
to Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
Attention needed from Lei Zhang

Seung Hyun Jin added 10 comments

Commit Message
Line 10, Patchset 7:calculate x-coords with `CFX_BidiCHar` for RTL chars in `CPVT_Section`.
Lei Zhang . resolved

typo - 'H' should be lowercase.

Seung Hyun Jin

Done

File core/fpdfdoc/cpdf_generateap.cpp
Line 326, Patchset 7: bool bContinuous = continuous;
Lei Zhang . resolved

Give this local variable, and possibly also the parameter on line 313, better names so readers can more easily figure out what they represent.

Seung Hyun Jin

Done

Line 326, Patchset 7: bool bContinuous = continuous;
Lei Zhang . resolved

Avoid using Hungarian notation for variable names in new code. Use Google C++ style for new names. Here and in the rest of this CL.

Seung Hyun Jin

Done

File core/fpdfdoc/cpvt_word.h
Line 35, Patchset 7: float GetCaretX() const;
Lei Zhang . resolved

Style: methods above member variables.

Seung Hyun Jin

Done

Line 24, Patchset 7: uint16_t Word = 0;
Lei Zhang . resolved

Some of the changes here look like it's just modernizing the existing code, and isn't strictly necessary in this CL. Maybe split this off into a separate cleanup CL, and prepend that to this CL?

Seung Hyun Jin

Done

Line 20, Patchset 7: ~CPVT_Word();
Lei Zhang . resolved

Style: dtor after ctors, so move this after line 22.

Seung Hyun Jin

Done

File core/fpdfdoc/cpvt_wordinfo.h
Line 17, Patchset 7: kNeutral = 0
Lei Zhang . resolved

This is never used?

Seung Hyun Jin

Done

Line 14, Patchset 7:enum class CPVT_WordDirection {
Lei Zhang . resolved

Maybe nest this in `CPVT_WordInfo`. As in, `CPVT_WordInfo::Direction`.

Seung Hyun Jin

Done

File fpdfsdk/cpdfsdk_appstream.cpp
Line 720, Patchset 7: printf("Char: %d, ptNew.x: %f\n", (int)word.Word, ptNew.x);
Lei Zhang . resolved

This looks like a leftover debugging statement. Please remove.

Seung Hyun Jin

Done

File testing/resources/pixel/bug_725389_expected_mac.pdf.0.png

Please run `optipng` on these files to keep the file sizes small.

Seung Hyun Jin

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Lei Zhang
Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: pdfium
    Gerrit-Branch: main
    Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
    Gerrit-Change-Number: 149790
    Gerrit-PatchSet: 9
    Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
    Gerrit-CC: April Kallmeyer <a...@chromium.org>
    Gerrit-Attention: Lei Zhang <the...@chromium.org>
    Gerrit-Comment-Date: Tue, 16 Jun 2026 18:29:06 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Lei Zhang <the...@chromium.org>
    unsatisfied_requirement
    open
    diffy

    Lei Zhang (Gerrit)

    unread,
    Jun 16, 2026, 8:37:41 PM (8 days ago) Jun 16
    to Seung Hyun Jin, Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
    Attention needed from Seung Hyun Jin

    Lei Zhang added 1 comment

    Patchset-level comments
    File-level comment, Patchset 9 (Latest):
    Lei Zhang . resolved

    Needs rebasing / maybe more chaining.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Seung Hyun Jin
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: pdfium
    Gerrit-Branch: main
    Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
    Gerrit-Change-Number: 149790
    Gerrit-PatchSet: 9
    Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
    Gerrit-CC: April Kallmeyer <a...@chromium.org>
    Gerrit-Attention: Seung Hyun Jin <seungh...@google.com>
    Gerrit-Comment-Date: Wed, 17 Jun 2026 00:37:38 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    unsatisfied_requirement
    open
    diffy

    Lei Zhang (Gerrit)

    unread,
    Jun 16, 2026, 9:14:02 PM (8 days ago) Jun 16
    to Seung Hyun Jin, Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
    Attention needed from Seung Hyun Jin

    Lei Zhang added 9 comments

    File core/fpdfdoc/cpdf_generateap.cpp
    Line 313, Patchset 9 (Latest): bool use_continuous_formatting,
    Lei Zhang . unresolved

    For historical reasons, PDFium started life without any code comments. Since you've been thinking about this, please document what this parameter means.

    Line 1127, Patchset 9 (Latest): /*continuous=*/true, /*sub_word=*/0);
    Lei Zhang . unresolved

    Needs updating since the parameter name changed.

    File core/fpdfdoc/cpvt_section.cpp
    Line 732, Patchset 9 (Latest): CFX_BidiChar::Direction eCurrentDirection = bidi.OverallDirection();
    Lei Zhang . unresolved

    1) Variable name style.
    2) Since it's only used on line 738 to check for a particular direction, just precompute that here instead of once per loop iteration.

    Line 749, Patchset 9 (Latest): CPVT_WordInfo* pWord = word_array_[w].get();
    Lei Zhang . unresolved

    style

    File core/fpdfdoc/cpvt_wordinfo.h
    Line 15, Patchset 9 (Latest): enum class CPVT_WordDirection { kLeftToRight = 1, kRightToLeft = -1 };
    Lei Zhang . unresolved

    As mentioned before, can shorten to "Direction".

    Line 15, Patchset 9 (Latest): enum class CPVT_WordDirection { kLeftToRight = 1, kRightToLeft = -1 };
    Lei Zhang . unresolved

    Do the values matter? i.e. Can these just be 0 and 1? Or would having `bool is_ltr` / `bool is_rtl` sufficient?

    File fpdfsdk/cpdfsdk_appstream.cpp
    Line 655, Patchset 9 (Latest): bool is_ltr = true;
    Lei Zhang . unresolved

    Would it be more consistent if this CL always used `is_rtl` or `is_ltr`? I feel I have to always be alert to the actual boolean. See the other comment in `CPVT_WordInfo`, but if `CPVT_WordInfo` stores a bool, then I would suggest consistently using that indicator everywhere else in this CL.

    Line 669, Patchset 9 (Latest): if (pIterator->GetWord(word)) {
    Lei Zhang . unresolved

    Since line 656 now calls GetWord(), is it necessary to call it again here? Same question for line 687 and others below.

    Line 730, Patchset 9 (Latest): if (ptNew.x != ptOld.x || ptNew.y != ptOld.y) {
    Lei Zhang . unresolved

    Can probably just compare directly: `ptNew != ptOld`. I guess this is really a comment about line 711.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Seung Hyun Jin
    Submit Requirements:
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: pdfium
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
      Gerrit-Change-Number: 149790
      Gerrit-PatchSet: 9
      Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
      Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
      Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
      Gerrit-CC: April Kallmeyer <a...@chromium.org>
      Gerrit-Attention: Seung Hyun Jin <seungh...@google.com>
      Gerrit-Comment-Date: Wed, 17 Jun 2026 01:13:56 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      unsatisfied_requirement
      open
      diffy

      Seung Hyun Jin (Gerrit)

      unread,
      Jun 22, 2026, 7:42:40 PM (2 days ago) Jun 22
      to Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com

      Seung Hyun Jin added 9 comments

      File core/fpdfdoc/cpdf_generateap.cpp
      Line 313, Patchset 9: bool use_continuous_formatting,
      Lei Zhang . resolved

      For historical reasons, PDFium started life without any code comments. Since you've been thinking about this, please document what this parameter means.

      Seung Hyun Jin

      Done

      Line 1127, Patchset 9: /*continuous=*/true, /*sub_word=*/0);
      Lei Zhang . resolved

      Needs updating since the parameter name changed.

      Seung Hyun Jin

      Done

      File core/fpdfdoc/cpvt_section.cpp
      Line 732, Patchset 9: CFX_BidiChar::Direction eCurrentDirection = bidi.OverallDirection();
      Lei Zhang . resolved

      1) Variable name style.
      2) Since it's only used on line 738 to check for a particular direction, just precompute that here instead of once per loop iteration.

      Seung Hyun Jin

      Done

      Line 749, Patchset 9: CPVT_WordInfo* pWord = word_array_[w].get();
      Lei Zhang . resolved

      style

      Seung Hyun Jin

      Done

      File core/fpdfdoc/cpvt_wordinfo.h
      Line 15, Patchset 9: enum class CPVT_WordDirection { kLeftToRight = 1, kRightToLeft = -1 };
      Lei Zhang . resolved

      Do the values matter? i.e. Can these just be 0 and 1? Or would having `bool is_ltr` / `bool is_rtl` sufficient?

      Seung Hyun Jin

      The values don't necessarily matter. Will change to bool is_ltr

      Line 15, Patchset 9: enum class CPVT_WordDirection { kLeftToRight = 1, kRightToLeft = -1 };
      Lei Zhang . resolved

      As mentioned before, can shorten to "Direction".

      Seung Hyun Jin

      Done

      File fpdfsdk/cpdfsdk_appstream.cpp
      Line 655, Patchset 9: bool is_ltr = true;
      Lei Zhang . resolved

      Would it be more consistent if this CL always used `is_rtl` or `is_ltr`? I feel I have to always be alert to the actual boolean. See the other comment in `CPVT_WordInfo`, but if `CPVT_WordInfo` stores a bool, then I would suggest consistently using that indicator everywhere else in this CL.

      Seung Hyun Jin

      changed all to is_rtl, an respectivly !is_rtl

      Line 669, Patchset 9: if (pIterator->GetWord(word)) {
      Lei Zhang . resolved

      Since line 656 now calls GetWord(), is it necessary to call it again here? Same question for line 687 and others below.

      Seung Hyun Jin

      Done

      Line 730, Patchset 9: if (ptNew.x != ptOld.x || ptNew.y != ptOld.y) {
      Lei Zhang . resolved

      Can probably just compare directly: `ptNew != ptOld`. I guess this is really a comment about line 711.

      Seung Hyun Jin

      Done

      Open in Gerrit

      Related details

      Attention set is empty
      Submit Requirements:
        • requirement is not satisfiedCode-Owners
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: pdfium
        Gerrit-Branch: main
        Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
        Gerrit-Change-Number: 149790
        Gerrit-PatchSet: 10
        Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
        Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
        Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
        Gerrit-CC: April Kallmeyer <a...@chromium.org>
        Gerrit-Comment-Date: Mon, 22 Jun 2026 23:42:36 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Lei Zhang <the...@chromium.org>
        unsatisfied_requirement
        open
        diffy

        Lei Zhang (Gerrit)

        unread,
        Jun 22, 2026, 8:04:42 PM (2 days ago) Jun 22
        to Seung Hyun Jin, Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
        Attention needed from Seung Hyun Jin

        Lei Zhang added 7 comments

        File core/fpdfdoc/cpvt_variabletext.cpp
        Line 163, Patchset 10 (Latest): word.set_is_rtl(pInfo->is_rtl);
        Lei Zhang . unresolved

        Considering `word` just got constructed, and this is the only set_is_rtl() caller, how about just add 1 more parameter to the CPVT_Word constructor instead?

        File core/fpdfdoc/cpvt_word.h
        Line 44, Patchset 10 (Latest): float GetCaretX() const;
        Lei Zhang . unresolved

        I would recommend adding this as a straight-forward getter, without RTL support first, to reduce the size of this CL.

        File core/fpdfdoc/cpvt_wordinfo.cpp
        Line 11, Patchset 10 (Latest):CPVT_WordInfo::CPVT_WordInfo()
        Lei Zhang . unresolved

        BTW, this is actually dead code. Just like CPVT_Word needed some cleanup, so does CPVT_WordInfo.

        Line 39, Patchset 10 (Latest): operator=(word);
        Lei Zhang . unresolved

        This pre-existing code implements a copy constructor in a strange way. In modern C++, one would just use `= default;` instead. Same for `operator=` below.

        File fpdfsdk/pwl/cpwl_edit_impl.cpp
        Line 674, Patchset 10 (Latest): bool is_rtl = word.is_rtl();
        Lei Zhang . unresolved

        Since this variable is immediately used on the next line, and only used there, just inline it.

        Line 1245, Patchset 10 (Latest): ptFoot.x = word.GetCaretX();
        Lei Zhang . unresolved

        Just reuse `ptHead.x` instead of calling GetCaretX() twice. This pattern repeats in several places.

        Line 1248, Patchset 10 (Latest): float fX = pIterator->GetLineCaretX(line);
        Lei Zhang . unresolved

        Then match lines 1243-1245. No need for a local variable.

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Seung Hyun Jin
        Submit Requirements:
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: pdfium
          Gerrit-Branch: main
          Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
          Gerrit-Change-Number: 149790
          Gerrit-PatchSet: 10
          Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
          Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
          Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
          Gerrit-CC: April Kallmeyer <a...@chromium.org>
          Gerrit-Attention: Seung Hyun Jin <seungh...@google.com>
          Gerrit-Comment-Date: Tue, 23 Jun 2026 00:04:39 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          unsatisfied_requirement
          open
          diffy

          Lei Zhang (Gerrit)

          unread,
          Jun 22, 2026, 8:22:32 PM (2 days ago) Jun 22
          to Seung Hyun Jin, Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
          Attention needed from Seung Hyun Jin

          Lei Zhang added 1 comment

          File core/fpdfdoc/cpdf_generateap.cpp
          Line 329, Patchset 10 (Latest): CPVT_Word peek_word;
          Lei Zhang . unresolved

          Since there are no other CVPT_Word variables in this function, this can probably keep the "word" name and avoid the renaming churn.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Seung Hyun Jin
          Submit Requirements:
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: pdfium
          Gerrit-Branch: main
          Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
          Gerrit-Change-Number: 149790
          Gerrit-PatchSet: 10
          Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
          Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
          Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
          Gerrit-CC: April Kallmeyer <a...@chromium.org>
          Gerrit-Attention: Seung Hyun Jin <seungh...@google.com>
          Gerrit-Comment-Date: Tue, 23 Jun 2026 00:22:02 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          unsatisfied_requirement
          open
          diffy

          Seung Hyun Jin (Gerrit)

          unread,
          Jun 22, 2026, 9:04:12 PM (2 days ago) Jun 22
          to Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
          Attention needed from Lei Zhang

          Seung Hyun Jin added 8 comments

          File core/fpdfdoc/cpdf_generateap.cpp
          Line 329, Patchset 10: CPVT_Word peek_word;
          Lei Zhang . resolved

          Since there are no other CVPT_Word variables in this function, this can probably keep the "word" name and avoid the renaming churn.

          Seung Hyun Jin

          Done

          File core/fpdfdoc/cpvt_variabletext.cpp
          Line 163, Patchset 10: word.set_is_rtl(pInfo->is_rtl);
          Lei Zhang . resolved

          Considering `word` just got constructed, and this is the only set_is_rtl() caller, how about just add 1 more parameter to the CPVT_Word constructor instead?

          Seung Hyun Jin

          Done

          File core/fpdfdoc/cpvt_word.h
          Line 44, Patchset 10: float GetCaretX() const;
          Lei Zhang . resolved

          I would recommend adding this as a straight-forward getter, without RTL support first, to reduce the size of this CL.

          Seung Hyun Jin

          Done

          File core/fpdfdoc/cpvt_wordinfo.cpp
          Line 11, Patchset 10:CPVT_WordInfo::CPVT_WordInfo()
          Lei Zhang . resolved

          BTW, this is actually dead code. Just like CPVT_Word needed some cleanup, so does CPVT_WordInfo.

          Seung Hyun Jin

          Done

          Line 39, Patchset 10: operator=(word);
          Lei Zhang . resolved

          This pre-existing code implements a copy constructor in a strange way. In modern C++, one would just use `= default;` instead. Same for `operator=` below.

          Seung Hyun Jin

          Done

          File fpdfsdk/pwl/cpwl_edit_impl.cpp
          Line 674, Patchset 10: bool is_rtl = word.is_rtl();
          Lei Zhang . resolved

          Since this variable is immediately used on the next line, and only used there, just inline it.

          Seung Hyun Jin

          Done

          Line 1245, Patchset 10: ptFoot.x = word.GetCaretX();
          Lei Zhang . resolved

          Just reuse `ptHead.x` instead of calling GetCaretX() twice. This pattern repeats in several places.

          Seung Hyun Jin

          Done

          Line 1248, Patchset 10: float fX = pIterator->GetLineCaretX(line);
          Lei Zhang . resolved

          Then match lines 1243-1245. No need for a local variable.

          Seung Hyun Jin

          Done

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Lei Zhang
          Submit Requirements:
            • requirement is not satisfiedCode-Owners
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: pdfium
            Gerrit-Branch: main
            Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
            Gerrit-Change-Number: 149790
            Gerrit-PatchSet: 12
            Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
            Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
            Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
            Gerrit-CC: April Kallmeyer <a...@chromium.org>
            Gerrit-Attention: Lei Zhang <the...@chromium.org>
            Gerrit-Comment-Date: Tue, 23 Jun 2026 01:04:08 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            Comment-In-Reply-To: Lei Zhang <the...@chromium.org>
            unsatisfied_requirement
            open
            diffy

            Lei Zhang (Gerrit)

            unread,
            Jun 22, 2026, 9:13:55 PM (2 days ago) Jun 22
            to Seung Hyun Jin, Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
            Attention needed from Seung Hyun Jin

            Lei Zhang added 2 comments

            File core/fpdfdoc/cpvt_wordinfo.h
            Line 16, Patchset 12 (Latest): CPVT_WordInfo(const CPVT_WordInfo& word) = default;
            Lei Zhang . unresolved

            Where the "implementation" stays in the .cpp file.

            File core/fpdfdoc/cpvt_wordinfo.cpp
            Line 11, Patchset 10:CPVT_WordInfo::CPVT_WordInfo()
            Lei Zhang . unresolved

            BTW, this is actually dead code. Just like CPVT_Word needed some cleanup, so does CPVT_WordInfo.

            Seung Hyun Jin

            Done

            Lei Zhang

            Thanks for doing some cleanup here. Was hoping most of this can be prepended in a separate CL.

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Seung Hyun Jin
            Submit Requirements:
              • requirement is not satisfiedCode-Owners
              • requirement is not satisfiedCode-Review
              • requirement is not satisfiedNo-Unresolved-Comments
              • requirement is not satisfiedReview-Enforcement
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: pdfium
              Gerrit-Branch: main
              Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
              Gerrit-Change-Number: 149790
              Gerrit-PatchSet: 12
              Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
              Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
              Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
              Gerrit-CC: April Kallmeyer <a...@chromium.org>
              Gerrit-Attention: Seung Hyun Jin <seungh...@google.com>
              Gerrit-Comment-Date: Tue, 23 Jun 2026 01:13:49 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              Comment-In-Reply-To: Seung Hyun Jin <seungh...@google.com>
              Comment-In-Reply-To: Lei Zhang <the...@chromium.org>
              unsatisfied_requirement
              open
              diffy

              Lei Zhang (Gerrit)

              unread,
              Jun 22, 2026, 9:20:18 PM (2 days ago) Jun 22
              to Seung Hyun Jin, Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
              Attention needed from Seung Hyun Jin

              Lei Zhang added 1 comment

              File core/fpdfdoc/cpvt_word.h
              Line 44, Patchset 10: float GetCaretX() const;
              Lei Zhang . unresolved

              I would recommend adding this as a straight-forward getter, without RTL support first, to reduce the size of this CL.

              Seung Hyun Jin

              Done

              Lei Zhang

              1. Was hoping this can be prepended in a different CL as well, regardless of the next bullet point.

              2. Patchset 10 implemented GetCaretX() as: `return is_rtl_ ? location_.x : location_.x + width_;`, whereas patchset 12 implements it as `return location_.x + width_;`. Even though the implementation changed, all the tests still passed.

              Does that mean:

              a. Patchset 10 was doing unnecessary work?

              or

              b. There is not enough test coverage?

              or

              c. Something else?

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Seung Hyun Jin
              Submit Requirements:
              • requirement is not satisfiedCode-Owners
              • requirement is not satisfiedCode-Review
              • requirement is not satisfiedNo-Unresolved-Comments
              • requirement is not satisfiedReview-Enforcement
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: pdfium
              Gerrit-Branch: main
              Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
              Gerrit-Change-Number: 149790
              Gerrit-PatchSet: 12
              Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
              Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
              Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
              Gerrit-CC: April Kallmeyer <a...@chromium.org>
              Gerrit-Attention: Seung Hyun Jin <seungh...@google.com>
              Gerrit-Comment-Date: Tue, 23 Jun 2026 01:20:14 +0000
              unsatisfied_requirement
              open
              diffy

              Lei Zhang (Gerrit)

              unread,
              Jun 22, 2026, 9:29:58 PM (2 days ago) Jun 22
              to Seung Hyun Jin, Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
              Attention needed from Seung Hyun Jin

              Lei Zhang added 1 comment

              File fpdfsdk/cpdfsdk_appstream.cpp
              Line 686, Patchset 12 (Latest): int32_t font_index = word.font_index();
              Lei Zhang . unresolved

              I noticed patchset 11 made this change and a similar change in fpdfsdk/pwl/cpwl_edit_impl.cpp. I've been advocating for making this CL smaller and reducing the size of the diff, but this is going in the other direction and making the CL larger. So, how about also doing this in another CL? Can append to this CL since this change does not affect this CL too much either way.

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Seung Hyun Jin
              Submit Requirements:
              • requirement is not satisfiedCode-Owners
              • requirement is not satisfiedCode-Review
              • requirement is not satisfiedNo-Unresolved-Comments
              • requirement is not satisfiedReview-Enforcement
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: pdfium
              Gerrit-Branch: main
              Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
              Gerrit-Change-Number: 149790
              Gerrit-PatchSet: 12
              Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
              Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
              Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
              Gerrit-CC: April Kallmeyer <a...@chromium.org>
              Gerrit-Attention: Seung Hyun Jin <seungh...@google.com>
              Gerrit-Comment-Date: Tue, 23 Jun 2026 01:29:52 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              unsatisfied_requirement
              open
              diffy

              Seung Hyun Jin (Gerrit)

              unread,
              Jun 23, 2026, 7:23:35 PM (2 days ago) Jun 23
              to Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
              Attention needed from Lei Zhang

              Seung Hyun Jin added 4 comments

              File core/fpdfdoc/cpvt_word.h
              Line 44, Patchset 10: float GetCaretX() const;
              Lei Zhang . resolved

              I would recommend adding this as a straight-forward getter, without RTL support first, to reduce the size of this CL.

              Seung Hyun Jin

              Done

              Lei Zhang

              1. Was hoping this can be prepended in a different CL as well, regardless of the next bullet point.

              2. Patchset 10 implemented GetCaretX() as: `return is_rtl_ ? location_.x : location_.x + width_;`, whereas patchset 12 implements it as `return location_.x + width_;`. Even though the implementation changed, all the tests still passed.

              Does that mean:

              a. Patchset 10 was doing unnecessary work?

              or

              b. There is not enough test coverage?

              or

              c. Something else?

              Seung Hyun Jin

              There is not enough test coverage. My initial variabletext_unittest.cpp did not check for caret positioning.

              File core/fpdfdoc/cpvt_wordinfo.h
              Line 16, Patchset 12: CPVT_WordInfo(const CPVT_WordInfo& word) = default;
              Lei Zhang . resolved

              Where the "implementation" stays in the .cpp file.

              Seung Hyun Jin

              Done

              File core/fpdfdoc/cpvt_wordinfo.cpp
              Line 11, Patchset 10:CPVT_WordInfo::CPVT_WordInfo()
              Lei Zhang . resolved

              BTW, this is actually dead code. Just like CPVT_Word needed some cleanup, so does CPVT_WordInfo.

              Seung Hyun Jin

              Done

              Lei Zhang

              Thanks for doing some cleanup here. Was hoping most of this can be prepended in a separate CL.

              Seung Hyun Jin

              Done

              File fpdfsdk/cpdfsdk_appstream.cpp
              Line 686, Patchset 12: int32_t font_index = word.font_index();
              Lei Zhang . resolved

              I noticed patchset 11 made this change and a similar change in fpdfsdk/pwl/cpwl_edit_impl.cpp. I've been advocating for making this CL smaller and reducing the size of the diff, but this is going in the other direction and making the CL larger. So, how about also doing this in another CL? Can append to this CL since this change does not affect this CL too much either way.

              Seung Hyun Jin

              moved to 150590

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Lei Zhang
              Submit Requirements:
                • requirement is not satisfiedCode-Owners
                • requirement is not satisfiedCode-Review
                • requirement is not satisfiedReview-Enforcement
                Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                Gerrit-MessageType: comment
                Gerrit-Project: pdfium
                Gerrit-Branch: main
                Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
                Gerrit-Change-Number: 149790
                Gerrit-PatchSet: 22
                Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
                Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
                Gerrit-CC: April Kallmeyer <a...@chromium.org>
                Gerrit-Attention: Lei Zhang <the...@chromium.org>
                Gerrit-Comment-Date: Tue, 23 Jun 2026 23:23:30 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: No
                unsatisfied_requirement
                open
                diffy

                Lei Zhang (Gerrit)

                unread,
                Jun 23, 2026, 7:45:58 PM (2 days ago) Jun 23
                to Seung Hyun Jin, Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
                Attention needed from Seung Hyun Jin

                Lei Zhang added 2 comments

                File core/fpdfdoc/cpvt_variabletext_unittest.cpp
                Line 80, Patchset 23 (Latest): EXPECT_EQ(word.CaretX(), word.location().x + word.width());
                Lei Zhang . unresolved

                1. This could have been in the previous CL, but that landed already...
                2. Line 79 has `EXPECT_EQ(expected, actual);` so this should pass in the arguments in a consistent manner and not flip them.
                3. It is difficult to see the test expectations are correct. If one expands out CaretX() without latest RTL changes, this expands out to `EXPECT_EQ(word.location().x + word.width(), word.location().x + word.width());`, which is not helpful because the 2 sides are essentially the same. It would be better to use the actual values.

                File core/fpdfdoc/cpvt_word.h
                Line 44, Patchset 10: float GetCaretX() const;
                Lei Zhang . unresolved

                I would recommend adding this as a straight-forward getter, without RTL support first, to reduce the size of this CL.

                Seung Hyun Jin

                Done

                Lei Zhang

                1. Was hoping this can be prepended in a different CL as well, regardless of the next bullet point.

                2. Patchset 10 implemented GetCaretX() as: `return is_rtl_ ? location_.x : location_.x + width_;`, whereas patchset 12 implements it as `return location_.x + width_;`. Even though the implementation changed, all the tests still passed.

                Does that mean:

                a. Patchset 10 was doing unnecessary work?

                or

                b. There is not enough test coverage?

                or

                c. Something else?

                Seung Hyun Jin

                There is not enough test coverage. My initial variabletext_unittest.cpp did not check for caret positioning.

                Lei Zhang

                While it's good to have unit test coverage, it is still unclear how changing the CaretX() behavior affects the overall text rendering.

                Open in Gerrit

                Related details

                Attention is currently required from:
                • Seung Hyun Jin
                Submit Requirements:
                  • requirement is not satisfiedCode-Owners
                  • requirement is not satisfiedCode-Review
                  • requirement is not satisfiedNo-Unresolved-Comments
                  • requirement is not satisfiedReview-Enforcement
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: comment
                  Gerrit-Project: pdfium
                  Gerrit-Branch: main
                  Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
                  Gerrit-Change-Number: 149790
                  Gerrit-PatchSet: 23
                  Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
                  Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                  Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
                  Gerrit-CC: April Kallmeyer <a...@chromium.org>
                  Gerrit-Attention: Seung Hyun Jin <seungh...@google.com>
                  Gerrit-Comment-Date: Tue, 23 Jun 2026 23:45:53 +0000
                  unsatisfied_requirement
                  open
                  diffy

                  Lei Zhang (Gerrit)

                  unread,
                  Jun 23, 2026, 8:07:54 PM (2 days ago) Jun 23
                  to Seung Hyun Jin, Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
                  Attention needed from Seung Hyun Jin

                  Lei Zhang added 2 comments

                  Patchset-level comments
                  File-level comment, Patchset 24 (Latest):
                  Lei Zhang . unresolved

                  Can this CL stand up on its own as-is and pass trybots? Either way, I'm concerned:

                  • Yes: If all these non-refactoring changes trigger little/no test failures, then that is a sign that the code has insufficient test coverage.
                  • No: Then the CL can't land as-is.
                  Commit Message
                  Line 11, Patchset 23:CPVT_Section. Update CPVT_Word::CaretX() and GetLineCaretX() to
                  Lei Zhang . unresolved

                  But GetLineCaretX() didn't exist before this CL, so saying this CL is updating it sort of skipped a step.

                  Open in Gerrit

                  Related details

                  Attention is currently required from:
                  • Seung Hyun Jin
                  Submit Requirements:
                  • requirement is not satisfiedCode-Owners
                  • requirement is not satisfiedCode-Review
                  • requirement is not satisfiedNo-Unresolved-Comments
                  • requirement is not satisfiedReview-Enforcement
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: comment
                  Gerrit-Project: pdfium
                  Gerrit-Branch: main
                  Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
                  Gerrit-Change-Number: 149790
                  Gerrit-PatchSet: 24
                  Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
                  Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                  Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
                  Gerrit-CC: April Kallmeyer <a...@chromium.org>
                  Gerrit-Attention: Seung Hyun Jin <seungh...@google.com>
                  Gerrit-Comment-Date: Wed, 24 Jun 2026 00:07:49 +0000
                  Gerrit-HasComments: Yes
                  Gerrit-Has-Labels: No
                  unsatisfied_requirement
                  open
                  diffy

                  Lei Zhang (Gerrit)

                  unread,
                  Jun 23, 2026, 9:01:53 PM (2 days ago) Jun 23
                  to Seung Hyun Jin, Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
                  Attention needed from Seung Hyun Jin

                  Lei Zhang added 1 comment

                  Patchset-level comments
                  Lei Zhang . unresolved

                  Can this CL stand up on its own as-is and pass trybots? Either way, I'm concerned:

                  • Yes: If all these non-refactoring changes trigger little/no test failures, then that is a sign that the code has insufficient test coverage.
                  • No: Then the CL can't land as-is.
                  Lei Zhang

                  Red bots.

                  Open in Gerrit

                  Related details

                  Attention is currently required from:
                  • Seung Hyun Jin
                  Submit Requirements:
                  • requirement is not satisfiedCode-Owners
                  • requirement is not satisfiedCode-Review
                  • requirement is not satisfiedNo-Unresolved-Comments
                  • requirement is not satisfiedReview-Enforcement
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: comment
                  Gerrit-Project: pdfium
                  Gerrit-Branch: main
                  Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
                  Gerrit-Change-Number: 149790
                  Gerrit-PatchSet: 24
                  Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
                  Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                  Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
                  Gerrit-CC: April Kallmeyer <a...@chromium.org>
                  Gerrit-Attention: Seung Hyun Jin <seungh...@google.com>
                  Gerrit-Comment-Date: Wed, 24 Jun 2026 01:01:48 +0000
                  Gerrit-HasComments: Yes
                  Gerrit-Has-Labels: No
                  Comment-In-Reply-To: Lei Zhang <the...@chromium.org>
                  unsatisfied_requirement
                  open
                  diffy

                  Seung Hyun Jin (Gerrit)

                  unread,
                  Jun 24, 2026, 8:39:36 PM (9 hours ago) Jun 24
                  to Lei Zhang, April Kallmeyer, pdfium...@luci-project-accounts.iam.gserviceaccount.com, pdfium-...@googlegroups.com
                  Attention needed from Lei Zhang

                  Seung Hyun Jin added 4 comments

                  Patchset-level comments

                  Can this CL stand up on its own as-is and pass trybots? Either way, I'm concerned:

                  • Yes: If all these non-refactoring changes trigger little/no test failures, then that is a sign that the code has insufficient test coverage.
                  • No: Then the CL can't land as-is.
                  Lei Zhang

                  Red bots.

                  Seung Hyun Jin

                  Temporarily replaced expected images of Hebrew text

                  Commit Message
                  Line 11, Patchset 23:CPVT_Section. Update CPVT_Word::CaretX() and GetLineCaretX() to
                  Lei Zhang . resolved

                  But GetLineCaretX() didn't exist before this CL, so saying this CL is updating it sort of skipped a step.

                  Seung Hyun Jin

                  GetLineCaretX() moved to caret calculation CL

                  File core/fpdfdoc/cpvt_variabletext_unittest.cpp
                  Line 80, Patchset 23: EXPECT_EQ(word.CaretX(), word.location().x + word.width());
                  Lei Zhang . resolved

                  1. This could have been in the previous CL, but that landed already...
                  2. Line 79 has `EXPECT_EQ(expected, actual);` so this should pass in the arguments in a consistent manner and not flip them.
                  3. It is difficult to see the test expectations are correct. If one expands out CaretX() without latest RTL changes, this expands out to `EXPECT_EQ(word.location().x + word.width(), word.location().x + word.width());`, which is not helpful because the 2 sides are essentially the same. It would be better to use the actual values.

                  Seung Hyun Jin

                  Addressed in caret calculation CL

                  File core/fpdfdoc/cpvt_word.h
                  Line 44, Patchset 10: float GetCaretX() const;
                  Lei Zhang . resolved

                  I would recommend adding this as a straight-forward getter, without RTL support first, to reduce the size of this CL.

                  Seung Hyun Jin

                  Done

                  Lei Zhang

                  1. Was hoping this can be prepended in a different CL as well, regardless of the next bullet point.

                  2. Patchset 10 implemented GetCaretX() as: `return is_rtl_ ? location_.x : location_.x + width_;`, whereas patchset 12 implements it as `return location_.x + width_;`. Even though the implementation changed, all the tests still passed.

                  Does that mean:

                  a. Patchset 10 was doing unnecessary work?

                  or

                  b. There is not enough test coverage?

                  or

                  c. Something else?

                  Seung Hyun Jin

                  There is not enough test coverage. My initial variabletext_unittest.cpp did not check for caret positioning.

                  Lei Zhang

                  While it's good to have unit test coverage, it is still unclear how changing the CaretX() behavior affects the overall text rendering.

                  Seung Hyun Jin

                  It doesn't. Merely visual/aesthetic where caret does not move as expected (not moving accordingly). Appended CL as not part of this CL's scope

                  Open in Gerrit

                  Related details

                  Attention is currently required from:
                  • Lei Zhang
                  Submit Requirements:
                    • requirement is not satisfiedCode-Owners
                    • requirement is not satisfiedCode-Review
                    • requirement is not satisfiedReview-Enforcement
                    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                    Gerrit-MessageType: comment
                    Gerrit-Project: pdfium
                    Gerrit-Branch: main
                    Gerrit-Change-Id: Ie15c1d6a6519cf3878bc625aaa74c67bf6681b9d
                    Gerrit-Change-Number: 149790
                    Gerrit-PatchSet: 28
                    Gerrit-Owner: Seung Hyun Jin <seungh...@google.com>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Seung Hyun Jin <seungh...@google.com>
                    Gerrit-CC: April Kallmeyer <a...@chromium.org>
                    Gerrit-Attention: Lei Zhang <the...@chromium.org>
                    Gerrit-Comment-Date: Thu, 25 Jun 2026 00:39:32 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: No
                    unsatisfied_requirement
                    open
                    diffy
                    Reply all
                    Reply to author
                    Forward
                    0 new messages