)]}'
{
  "commit": "9eec95782c4ecdae50cd8c8e9f88d3f8941db1cd",
  "tree": "07d3458fdcf9cd5b1074d15b0027e6439a9e3076",
  "parents": [
    "75ff13168ea0fd0c8ac8981722d15cce07fbdcf9"
  ],
  "author": {
    "name": "Lei Zhang",
    "email": "thestig@chromium.org",
    "time": "Wed Sep 13 00:19:52 2023 +0000"
  },
  "committer": {
    "name": "Pdfium LUCI CQ",
    "email": "pdfium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Sep 13 00:19:52 2023 +0000"
  },
  "message": "Improve invalid ICC profile handling\n\nCurrently, when an ICC profile\u0027s component count does not match the\nexpected value in the ICC profile stream dictionary, CPDF_ICCBasedCS\nwill consider the entire ICC colorspace as invalid. This can result in\nimages not rendering.\n\nInstead, plumb the expected component count into CPDF_IccProfile, and\nlet it detect this situation and mark the ICC profile as unsupported.\nThen CPDF_ICCBasedCS will go through its unsupported ICC profile path\nand try an alternate profile. This allows images to render correctly in\ncertain PDFs that do not fully follow the PDF spec.\n\nUpdate CPDF_DocPageData to make its ICC caching code take the component\ncount into consideration to prevent rare cases where 2 ICC profile\nstream dictionaries have the same ICC data, but different component\ncounts.\n\nTest this scenario with a pixel test. The pixel test is a mashup of the\nexisting matte.in pixel test with ICC data from the\nfx/color/color_icc_based.pdf corpus test.\n\nBug: chromium:1479436\nChange-Id: If331ecf06dba88232dd6f2e13b0e1354dc405074\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/111731\nCommit-Queue: Lei Zhang \u003cthestig@chromium.org\u003e\nReviewed-by: Tom Sepez \u003ctsepez@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6bc7033cfec068cf9e4bf887710c1bf0762b2d92",
      "old_mode": 33188,
      "old_path": "core/fpdfapi/page/cpdf_colorspace.cpp",
      "new_id": "c52cbe244336170403cfcb68b46af4d616cc6bba",
      "new_mode": 33188,
      "new_path": "core/fpdfapi/page/cpdf_colorspace.cpp"
    },
    {
      "type": "modify",
      "old_id": "b00a616b5f42bd8dadb069965e694915f1473e4d",
      "old_mode": 33188,
      "old_path": "core/fpdfapi/page/cpdf_docpagedata.cpp",
      "new_id": "001f2dfbf4651974763f5a72a249c70fe7e44955",
      "new_mode": 33188,
      "new_path": "core/fpdfapi/page/cpdf_docpagedata.cpp"
    },
    {
      "type": "modify",
      "old_id": "59c035415361daa8d85fdb408e350deb9fabfec5",
      "old_mode": 33188,
      "old_path": "core/fpdfapi/page/cpdf_docpagedata.h",
      "new_id": "85aa7f42a7a5d0427f9aa99e23ca754a5827fe1b",
      "new_mode": 33188,
      "new_path": "core/fpdfapi/page/cpdf_docpagedata.h"
    },
    {
      "type": "modify",
      "old_id": "82bbe9b032dbbf5279e7338b8a99d179563156e6",
      "old_mode": 33188,
      "old_path": "core/fpdfapi/page/cpdf_iccprofile.cpp",
      "new_id": "67cb42a83a55deddef54965372f3b757a22c28ce",
      "new_mode": 33188,
      "new_path": "core/fpdfapi/page/cpdf_iccprofile.cpp"
    },
    {
      "type": "modify",
      "old_id": "3dd9f149d59d62ce2e9c2643839cd67fdb276421",
      "old_mode": 33188,
      "old_path": "core/fpdfapi/page/cpdf_iccprofile.h",
      "new_id": "c49e0e2051feee9187eb9be63e6513a7a3c1c4b8",
      "new_mode": 33188,
      "new_path": "core/fpdfapi/page/cpdf_iccprofile.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "736ba445dcf2a4d4c68c93b681f24005f064da38",
      "new_mode": 33188,
      "new_path": "testing/resources/pixel/bug_1479436.in"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2bb8738b812d784cbbb7b3024d3889af33428c05",
      "new_mode": 33188,
      "new_path": "testing/resources/pixel/bug_1479436_expected.pdf.0.png"
    }
  ]
}
