)]}'
{
  "commit": "a2bc4fa3d9a37ff02bef22ab81a42d7cd7c34bc2",
  "tree": "1259b56882bb6c4df9af17c0c6cbf65886b3315f",
  "parents": [
    "ccb5306217b6b9a929c53dacf9dc888350fcbf79"
  ],
  "author": {
    "name": "Lokbondo Kung",
    "email": "lokokung@google.com",
    "time": "Tue Mar 31 17:54:33 2026 -0700"
  },
  "committer": {
    "name": "Dawn LUCI CQ",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Mar 31 17:54:33 2026 -0700"
  },
  "message": "[dawn][native] Some cleanup of DeviceLostEvent code.\n\n- Uses the refcount payload in RefCountedWithExternalCount to track\n  whether an external ref count exists. Note that we are using a\n  \"ForTesting\" function to implement the check of the count even\n  though this is not for testing. We are special casing this because\n  it is a valid check for the external ref count. This is needed to\n  explicitly handle the spec behavior that the device lost event\n  should pass nullptr for the device when the last external\n  reference has been dropped.\n- Makes APIGetLostFuture use cached future id when possible.\n- Moves the device lost related members in Device to private since\n  the mock isn\u0027t actually using the alternative constructor anymore.\n  Also removes said constructor.\n- Finally, defer cleanup of the callback infos to the completion of\n  the device lost callback instead of having it called in two\n  different places, the callback and in\n  DeviceBase::WillDropLastExternalRef.\n\nChange-Id: I31b57391438c0782ba223884a72991ca77426bec\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/299539\nCommit-Queue: Loko Kung \u003clokokung@google.com\u003e\nReviewed-by: Kai Ninomiya \u003ckainino@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "86bd70ba9d1f52e0184e531af6492859d451ba7a",
      "old_mode": 33188,
      "old_path": "src/dawn/common/RefCountedWithExternalCount.h",
      "new_id": "b88b2cae4c1aa134cc67c53b0d59e2040d98b3e0",
      "new_mode": 33188,
      "new_path": "src/dawn/common/RefCountedWithExternalCount.h"
    },
    {
      "type": "modify",
      "old_id": "7afcc663087323dab533b119fa63e2155557a698",
      "old_mode": 33188,
      "old_path": "src/dawn/native/Adapter.cpp",
      "new_id": "1d2847de7221e2855856c941b61196031f41ec81",
      "new_mode": 33188,
      "new_path": "src/dawn/native/Adapter.cpp"
    },
    {
      "type": "modify",
      "old_id": "e9be296cebf058df921f0daa942acac7d3fbc94f",
      "old_mode": 33188,
      "old_path": "src/dawn/native/Device.cpp",
      "new_id": "44910a927623f14e5cca375bda8ecdd706ad559f",
      "new_mode": 33188,
      "new_path": "src/dawn/native/Device.cpp"
    },
    {
      "type": "modify",
      "old_id": "0f7cc6f891c40b11aafe611ed2756598f077e5b1",
      "old_mode": 33188,
      "old_path": "src/dawn/native/Device.h",
      "new_id": "85a257d170b16cd8bc8dce362c3c2aba6c1b4e32",
      "new_mode": 33188,
      "new_path": "src/dawn/native/Device.h"
    },
    {
      "type": "modify",
      "old_id": "cad3ac52ced6eadf583d49c4a96446e26ed42c0a",
      "old_mode": 33188,
      "old_path": "src/dawn/tests/unittests/native/mocks/DawnMockTest.cpp",
      "new_id": "c6fb74d8a6aa093c39e7faf07c9961e1d87fae8c",
      "new_mode": 33188,
      "new_path": "src/dawn/tests/unittests/native/mocks/DawnMockTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "52052167b36835c685f6354e1d911b4f60ef76a3",
      "old_mode": 33188,
      "old_path": "src/dawn/tests/unittests/native/mocks/DeviceMock.cpp",
      "new_id": "15d19b53cd0beb9731d0e45d66bef7ad917dfaed",
      "new_mode": 33188,
      "new_path": "src/dawn/tests/unittests/native/mocks/DeviceMock.cpp"
    }
  ]
}
