)]}'
{
  "commit": "4fa235012d4c71bdf2cf1e621706e723299d1e5c",
  "tree": "da476ad0f947d648cc5da4c69116462d02ea7a46",
  "parents": [
    "3670b03f2be69a242a86c972f42169e3e256b119"
  ],
  "author": {
    "name": "Kei Kamikawa",
    "email": "x00.x7f.x86@gmail.com",
    "time": "Mon Oct 05 17:29:45 2026 -0700"
  },
  "committer": {
    "name": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Oct 05 17:29:45 2026 -0700"
  },
  "message": "Defer popup appearance generation until popup is opened\n\nRepeatedly rendering the same page, such as during tiled rendering,\ncauses continuous memory growth on pages containing annotations with\ncomments.\n\nCPDF_AnnotList creates temporary popup annotations for annotations with\ncontents. The CPDF_Annot constructor generated appearances even for\nclosed popups, adding document-owned font dictionaries and appearance\nstreams. Because these indirect objects outlive the temporary popups,\nthey accumulate over repeated renders.\n\nUpdate ShouldGenerateAP() to check ShouldDrawAnnotation() instead of\n!IsHidden(), preserving the hidden check while deferring appearance\ngeneration until the popup is visible. When a popup is opened, the\nexisting DrawAppearance() and DrawInContext() paths already invoke\nGenerateAPIfNeeded().\n\nUpdate the existing Bug1206 test to verify that saved file sizes remain\nidentical across renders instead of growing. Update the regression tests\nto verify that rebuilding annotation lists does not add indirect objects\nand that popup appearances are generated only when opened. Keep the file\nsize lower bound and the existing opening, closing, and reopening\nchecks.\n\nBug: 42270200\nChange-Id: Id80f0ac3fcfa7bd2208373c05c00c154cd863330\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/158790\nCommit-Queue: Andy Phan \u003candyphan@chromium.org\u003e\nReviewed-by: Tom Sepez \u003ctsepez@chromium.org\u003e\nReviewed-by: Andy Phan \u003candyphan@chromium.org\u003e\nReviewed-by: Lei Zhang \u003cthestig@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "91782646f3ed458622f9dbb1b54f2a5b87f9ad3c",
      "old_mode": 33188,
      "old_path": "core/fpdfdoc/cpdf_annot.cpp",
      "new_id": "4600893617af4ee08b8476ad677c3cadf1626066",
      "new_mode": 33188,
      "new_path": "core/fpdfdoc/cpdf_annot.cpp"
    },
    {
      "type": "modify",
      "old_id": "d5588dee422f927b870c1c9921e4b7d35fee8abb",
      "old_mode": 33188,
      "old_path": "core/fpdfdoc/cpdf_annotlist_unittest.cpp",
      "new_id": "9eae082d8d076a31006cc899a2e7b05370f7bb1a",
      "new_mode": 33188,
      "new_path": "core/fpdfdoc/cpdf_annotlist_unittest.cpp"
    },
    {
      "type": "modify",
      "old_id": "daa226aa65caf241c97ca90a540516acbea4633c",
      "old_mode": 33188,
      "old_path": "fpdfsdk/fpdf_annot_embeddertest.cpp",
      "new_id": "5edebc0151a22152099ac4270c68872bb9cd4b55",
      "new_mode": 33188,
      "new_path": "fpdfsdk/fpdf_annot_embeddertest.cpp"
    }
  ]
}
