)]}'
{
  "commit": "e1998c5d885b62821ec596a0fef4bf272b0bb333",
  "tree": "7c6770929e1b9b020f66946710b373f3a1c38368",
  "parents": [
    "b8b3f5ffc0ea33f06402e03145f26ed6d581b552"
  ],
  "author": {
    "name": "Tom Sepez",
    "email": "tsepez@chromium.org",
    "time": "Mon Apr 13 17:11:35 2020 +0000"
  },
  "committer": {
    "name": "Chromium commit bot",
    "email": "commit-bot@chromium.org",
    "time": "Mon Apr 13 17:11:35 2020 +0000"
  },
  "message": "Make UnownedPtr\u003c\u003e interoperate more transparently with raw pointers.\n\nThere is now interest in using some sort of unowned ptr variant\nbeyond PDFium, but concerns exist about minimizing the amount of\ncode that needs to change during the adoption of it. Demonstrate\nthe effects in PDFium of adopting such a new interface:\n\n-- Add an implicit operator T*() which is preferred to .Get().\n-- The existing operator\u003d() will become preferred over .Reset().\n-- Then remove comparison operators which become ambiguous once\n   demotion to raw pointers is implicit.\n\nAlso update the node iterator template, because it is instantiated\nagainst both RetainPtr and UnownedPtr. This is possible because\nboth of these have the same \"shaped\" API.  In turn, update RetainPtr\nto match the new shape:\n\n-- Add an explicit operator T*() (not implicit, want to limit use)\n-- Allow assignment from the underlying type in place of .Reset().\n\nChange-Id: I50828f50b3debb0b1b9ddd494cb640048933d92b\nReviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/68591\nReviewed-by: Lei Zhang \u003cthestig@chromium.org\u003e\nCommit-Queue: Tom Sepez \u003ctsepez@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "916a12efe13c43f85b041f3c5cba10820a65c06a",
      "old_mode": 33188,
      "old_path": "core/fxcrt/retain_ptr.h",
      "new_id": "1bbd96a77d6bb6e2db2db1538828fcf013f106b0",
      "new_mode": 33188,
      "new_path": "core/fxcrt/retain_ptr.h"
    },
    {
      "type": "modify",
      "old_id": "47277df631e2b23a6f7d870b2f198299483fa733",
      "old_mode": 33188,
      "old_path": "core/fxcrt/retain_ptr_unittest.cpp",
      "new_id": "f7bbfdd8853f165a8c7d432b9271b533c55c0a6d",
      "new_mode": 33188,
      "new_path": "core/fxcrt/retain_ptr_unittest.cpp"
    },
    {
      "type": "modify",
      "old_id": "f7ff4808f29b93da07f894b4a2e71eff97307c87",
      "old_mode": 33188,
      "old_path": "core/fxcrt/unowned_ptr.h",
      "new_id": "121024830891dee1a3eedb49380a168125be18fb",
      "new_mode": 33188,
      "new_path": "core/fxcrt/unowned_ptr.h"
    },
    {
      "type": "modify",
      "old_id": "8803efa6fe326679a186ce7c687431cf7e8d9dfd",
      "old_mode": 33188,
      "old_path": "xfa/fxfa/parser/cxfa_nodeiteratortemplate.h",
      "new_id": "7887d86ae4faf99b3b25e613073b6f4a5f621499",
      "new_mode": 33188,
      "new_path": "xfa/fxfa/parser/cxfa_nodeiteratortemplate.h"
    }
  ]
}
